NeST: Network Storage Flexible Commodity Storage Appliances

Slides:



Advertisements
Similar presentations
Introduction to Sockets Jan Why do we need sockets? Provides an abstraction for interprocess communication.
Advertisements

Threads, SMP, and Microkernels
Computer Net Lab/Praktikum Datenverarbeitung 2 1 Overview Sockets Sockets in C Sockets in Delphi.
CS 443 Advanced OS Fabián E. Bustamante, Spring 2005 Resource Containers: A new Facility for Resource Management in Server Systems G. Banga, P. Druschel,
Study of Hurricane and Tornado Operating Systems By Shubhanan Bakre.
Precept 3 COS 461. Concurrency is Useful Multi Processor/Core Multiple Inputs Don’t wait on slow devices.
I/O Hardware n Incredible variety of I/O devices n Common concepts: – Port – connection point to the computer – Bus (daisy chain or shared direct access)
Embedded Real-time Systems The Linux kernel. The Operating System Kernel Resident in memory, privileged mode System calls offer general purpose services.
© 2007 Pearson Education Inc., Upper Saddle River, NJ. All rights reserved.1 Computer Networks and Internets with Internet Applications, 4e By Douglas.
Threads CSCI 444/544 Operating Systems Fall 2008.
Client Server Model The client machine (or the client process) makes the request for some resource or service, and the server machine (the server process)
1 I/O Management in Representative Operating Systems.
CS 6560 Operating System Design Lecture 13 Finish File Systems Block I/O Layer.
1 Chapter Client-Server Interaction. 2 Functionality  Transport layer and layers below  Basic communication  Reliability  Application layer.
Operating Systems.
Chapter 6 Operating System Support. This chapter describes how middleware is supported by the operating system facilities at the nodes of a distributed.
Hardware Definitions –Port: Point of connection –Bus: Interface Daisy Chain (A=>B=>…=>X) Shared Direct Device Access –Controller: Device Electronics –Registers:
Socket Swapping for efficient distributed communication between migrating processes MS Final Defense Praveen Ramanan 12 th Dec 2002.
LWIP TCP/IP Stack 김백규.
UDT as an Alternative Transport Protocol for GridFTP Raj Kettimuthu Argonne National Laboratory The University of Chicago.
Remote Shell CS230 Project #4 Assigned : Due date :
CS390- Unix Programming Environment CS 390 Unix Programming Environment Java Socket Programming.
OPERATING SYSTEM SUPPORT DISTRIBUTED SYSTEMS CHAPTER 6 Lawrence Heyman July 8, 2002.
OSes: 3. OS Structs 1 Operating Systems v Objectives –summarise OSes from several perspectives Certificate Program in Software Development CSE-TC and CSIM,
Tevfik Kosar Computer Sciences Department University of Wisconsin-Madison Managing and Scheduling Data.
Flexibility, Manageability and Performance in a Grid Storage Appliance John Bent, Venkateshwaran Venkataramani, Nick Leroy, Alain Roy, Joseph Stanley,
Practical Session 11 Multi Client-Server Java NIO.
Socket Programming Lab 1 1CS Computer Networks.
6.894: Distributed Operating System Engineering Lecturers: Frans Kaashoek Robert Morris
4P13 Week 12 Talking Points Device Drivers 1.Auto-configuration and initialization routines 2.Routines for servicing I/O requests (the top half)
Threads versus Events CSE451 Andrew Whitaker. This Class Threads vs. events is an ongoing debate  So, neat-and-tidy answers aren’t necessarily available.
Threads A thread is an alternative model of program execution
Socket Programming. Computer Science, FSU2 Interprocess Communication Within a single system – Pipes, FIFOs – Message Queues – Semaphores, Shared Memory.
NeST: Network Storage John Bent, Venkateshwaran V Miron Livny, Andrea Arpaci-Dusseau, Remzi Arpaci-Dusseau.
Major OS Components CS 416: Operating Systems Design, Spring 2001 Department of Computer Science Rutgers University
CLIENT SERVER COMPUTING. We have 2 types of n/w architectures – client server and peer to peer. In P2P, each system has equal capabilities and responsibilities.
1 Chapter 2: Operating-System Structures Services Interface provided to users & programmers –System calls (programmer access) –User level access to system.
Introduction to Operating Systems Concepts
SDN controllers App Network elements has two components: OpenFlow client, forwarding hardware with flow tables. The SDN controller must implement the network.
Chapter 13: I/O Systems.
DISTRIBUTED SYSTEMS Principles and Paradigms Second Edition ANDREW S
Module 12: I/O Systems I/O hardware Application I/O Interface
Chapter 13: I/O Systems Modified by Dr. Neerja Mhaskar for CS 3SH3.
Current Generation Hypervisor Type 1 Type 2.
Operating Systems Review ENCE 360.
Credits: 3 CIE: 50 Marks SEE:100 Marks Lab: Embedded and IOT Lab
Jim Fawcett CSE 681 – Software Modeling & Analysis Fall 2002
Definition of Distributed System
CS399 New Beginnings Jonathan Walpole.
How can a detector saturate a 10Gb link through a remote file system
Introduction to Operating System (OS)
Storage Virtualization
Threads and Cooperation
null, true, and false are also reserved.
Outline Midterm results summary Distributed file systems – continued
Operating System Concepts
13: I/O Systems I/O hardwared Application I/O Interface
CS703 - Advanced Operating Systems
Software models - Software Architecture Design Patterns
NeST: Network Storage Technologies
Chapter 2: The Linux System Part 5
Jonathan Walpole Computer Science Portland State University
Prof. Leonardo Mostarda University of Camerino
CSE 333 – Section 10 Final Review.
Chapter 13: I/O Systems I/O Hardware Application I/O Interface
Chapter 15: File System Internals
OPERATING SYSTEMS STRUCTURES
Outline Chapter 2 (cont) Chapter 3: Processes Virtual machines
Chapter 13: I/O Systems I/O Hardware Application I/O Interface
Module 12: I/O Systems I/O hardwared Application I/O Interface
Presentation transcript:

NeST: Network Storage Flexible Commodity Storage Appliances

NeST: Network Storage Flexible, commodity based, software-only storage appliances Building a NeST should be as easy as: Finding a networked machine “Dropping” some software on it Self-configuring to best utilize machine

NeST resource management Dynamic user account creation provides storage for migratory grid users Storage reservations and quota systems intelligent scheduling of data intensive applications Matchmaking match storage opportunities & storage consumers

Condor NeSTs Better, smarter checkpoint servers Checkpoints are just another data file Data replicated/migrates to different NeSTs Condor jobs access data from closest NeST Flexible policy support for managing disk and network resources

New worlds, New problems Diverse hardware, software platforms - Netapp, EMC advantage fewer platforms, control over OS - Our approach Automate configuration to each host system H/W (Disks): use file system or self-manage S/W (File System): use either read/write or mmap Implication: Flexibility at a cost? Key is design of the software

NeST structure Modules for communication, transfer & storage Protocol layer Pluggable protocols allow diverse protocols to be mapped into common control flows Transfer layer Different concurrency architectures to maximize system throughput on diverse platforms Storage layer Provides abstract interface to disks

Concurrency Architecture NeST Structure Protocol Layer GFTP NeST WiND HTTP NFS Control Logic Concurrency Architecture Multi-process Multi-threaded Nonblocking Storage Layer Raw disk Local FS RAID Memory

Many Protocols, Single Server Single point of control - Storage quotas/guarantees can be supported - Bandwidth can be controlled & QoS provided Single administrative interface Set policies, Manage user accounts Maintainable S/W Shared code base reduces replication, increases maintainability

Protocol layer implementation Each protocol listens on well-defined port Central control accepts connections Protocol layer reads from connection and returns generic request object Analagous to Linux V-nodes Add new protocol by writing a couple of methods

Virtual protocol class class nestProtocol { public: virtual nestRequest* receiveRequest( fd_set *ready ) = 0; virtual ssize_t Receive( char *buffer, ssize_t n )= 0; virtual ssize_t Send( char *buffer, ssize_t n ) = 0; virtual bool sendAck( ) = 0; virtual bool sendErrorMessage( int error ) = 0; virtual bool sendDirectoryList( NestFileInfo *list ); virtual bool sendPwd( char *pwd ); virtual bool sendTransferInfo( class nestRequest *req ); virtual bool sendFilesize( int retval, long size) = 0; virtual bool sendQuotaInfo( struct UserUsage* usage ); virtual bool hasSocket() = 0; virtual int getSocket() = 0; };

Virtual protocol class Plus some static methods static int listen( int port ); static nestProtocol* accept( int socket, sockaddr_in *address ); static NestReplyStatus initiateThirdParty( nestClient *client, nestProtocol **connection );

Grid FTP virtual protocol Good news? Hard work already done Already implemented libraries have support for parallel streams, authentication, etc. Bad news? Slight mismatch to integrate callback model into synchronous API

Grid FTP - listen if ( Spipe( pipes ) < 0 ) { goto ERROR; } // static initialization routine int nestProtocolGridFtp::listen( int port ) { globus_result_t result; globus_ftp_control_server_t *server; globus_module_activate( GLOBUS_FTP_CONTROL_MODULE ); server = (globus_ftp_control_server_t *) Malloc( sizeof( struct globus_ftp_control_server_s ) ); result = globus_ftp_control_server_handle_init( server ); if ( result != GLOBUS_SUCCESS ) { goto ERROR; } short unsigned Port = (short unsigned) port; result = globus_ftp_control_server_listen( server, &Port, listenCallback, NULL ); if ( result != GLOBUS_SUCCESS ) { goto ERROR; } if ( Spipe( pipes ) < 0 ) { goto ERROR; } }

Grid FTP - receiveRequest nestRequest* nestProtocolGridFtp::receiveRequest( fd_set *ready ){ // ignore the fd_set char msg[MESSAGESIZE]; snprintf( msg, MESSAGESIZE, "%s", "Gftp receiveRequest called: " ); nestRequest *req = this->request; if ( req != NULL ) { snprintf( &(msg[strlen(msg)]), MESSAGESIZE - strlen(msg), "%s\n", "Actually have a request to give.\n" ); } else { "No request to give.\n" ); } nest_debug( 1, msg ); return req;

Grid FTP - sendFilesize bool nestProtocolGridFtp::sendFilesize( int retval, long size){ assert( reqType == FILESIZE_REQUEST ); switch( retval ) { case NEST_SUCCESS: snprintf( buffer, FILEBUFFER, "213 %ld\r\n", size ); break; case NEST_REMOTE_FILE_NOT_FOUND: snprintf( buffer, FILEBUFFER, "550 File not found\r\n" ); default: assert( 0 ); } return sendMessage( buffer );

Grid FTP - sendMessage bool nestProtocolGridFtp::sendMessage( const void *vptr ) { globus_result_t result; waitIdle(); setWait( true ); result = globus_ftp_control_send_response( handle, (char *)vptr, commandCallback, this ); if ( result != GLOBUS_SUCCESS ) { fprintf( stderr, "globus_ftp_control_send_response error: %s\n", resultToString( result ) ); free( handle ); return false; } return true;

Grid FTP - commandCallback void nestProtocolGridFtp::commandCallback( void * arg, struct globus_ftp_control_handle_s * handle, globus_object_t * error) { nest_debug( 1, "command_callback called - set wait false\n" ); if( error != GLOBUS_SUCCESS ) { fprintf(stderr,">> command_callback: error %s\n", globus_object_printable_to_string( error ) ); return; } // set the wait flag to false nestProtocolGridFtp *connection = (nestProtocolGridFtp *)arg; connection->setWait( false );

Concurrency architecture Three difficult goals Low latency High bandwidth Multiple simultaneous clients No single portable solution Multiple models provide solutions on a range of different platforms Multi-threaded, multi-process, single process nonblocking

Concurrency architecture Flexible Concurrency Concurrency architecture Nonblocking Multi-process Multi-threaded Control logic creates transfer object Virtual connection from the protocol layer Virtual connection from the storage layer Transfer object passed to concurrency layer Control logic informed when transfer ends

Concurrency Models Nonblocking model Pre-allocated pool of processes Performs only non-blocking I/O Selects on file-descriptors / sockets from each transfer object Pre-allocated pool of processes Descriptors are passed over a pipe Transfer object recreated on other side Each process does a blocking transfer Pre-allocated pool of threads Transfer object enqueued by server Dequeued by an available thread

Concurrency Models and GFTP Nonblocking model Not yet supported. Grid FTP libraries do not expose socket on which to select. Pre-allocated pool of processes Haven’t figured out how to send a GridFTP connection over a pipe Pre-allocated pool of threads No problem. Fully integrated. Other models could work . . .

Storage Layer Three needed areas of flexibility File systems interfaces Example: read()/write() or mmap() Abstract storage models RAID, JBOD, etc. Memory storage model also a possibility Provide file system interface to remote memory Useful for buffering systems like Kangaroo Virtual storage model akin to virtual protocol layer User account administration Creation and removal Quotas and guarantees for users and groups