Network storage Background
Linux cluster computing is widely used in the field of high-performance computing (high-energy physics, earth, atmosphere, geology, petroleum, remote sensing, etc.) and massive information service (Google.
In Linux Clusters, not only high-performance processors, networks, but also high-aggregation I/O bandwidth are required. The development status of the I/O subsystem determines that the storage system has become an urgent problem.
Linux cluster computing requires high aggregation bandwidth, high availability, high reliability, scalability, and management for the storage system.
Common storage structures
Direct Attached Storage: the storage device is directly attached to the I/O bus of the System host. From the application perspective, we can see bare devices, such as/dev/HDC ). Hosts cannot share storage devices between different hosts.
San (Storage Area Network): separates storage devices from the host system and connects them to storage devices using a dedicated storage network outside the host. In this way, the storage device is independent of the host system, and multiple hosts can share the storage device through the storage Region network. The application still sees devices, such as/dev/nbd0 ).
NAS (network attached storage): A metadata server. The client communicates with the metadata server through the standard NFS or CIFS protocol, and the metadata server is connected to the storage device. Clients can be different platforms. In this way, cross-platform data sharing is realized, and data is not directly read and written to the device, thus improving security. Standard NFS can be viewed as NAs.
San + NAS: integrates the advantages of San and NAs to separate data and metadata. Storage devices are directly connected to each application node through the San. Data Reading and Writing is directly completed through the Application node instead of the metadata server. This breaks the bottleneck of the metadata server and greatly improves the aggregation bandwidth. Metadata access is still completed through the metadata server.
NFS File System
NFS: Network File System. Proposed by sun in 1980s. It is mainly used to share files between different hosts on the network. Become a de facto Network File System Standard. Currently, IETF has three versions for it.
Rfc1094 (March, 1989)-nfsv2
Rfc1813 (June, 1995)-nfsv3
Rfc3530 (116l, 2003)-nfsv4
Its physical architecture is as follows:
The logic view is as follows: configuration in the RedHat system: SERVER: VI/etc/exports. For details, see/share_dir1 192.168.10.1 (RW, no_root_squash)/1__dir2 * (RW, no_root_squash) after modifying the exports file, execute exportfs-ra to make the modification take effect. Service Portmap start modprobe SunRPC service NFS start rpcinfo-P: Check RPC status client: Mount-t nfs serverip: /server_export_dir/localdir the link below describes in detail the client and server configuration method: http://nfs.sourceforge.net/nfs-howto/ its architecture is as follows: Protocol Stack is as follows
RPC
Example
A remote process consists of three elements:(Program number, version number, Procedure Number) is uniquely identified.The program number identifies a set of related remote processes. The set of these processes is called a program. The program can have multiple versions, which are differentiated by version number. Each process has a unique procedure number.
XDR (external data representation) solves the problems of data transmission in the byte sequence over the network.
The following focuses on NFS structure analysis:
NFS consists of the following four independent protocols:
NFS: Responsible for file creation, search, read/write, permission, status, etc.
MOUNTD: Responsible for Mount
NSM: Network Status Monitoring
NLM: Network Lock Management