[FreeBSD] ZFS and NFS
2024. 6. 29. 22:41ㆍComputerScience/FreeBSD
2.10 The Zettabyte Filesystem
- The Zettabyte filesystem (ZFS) is in a class of filesystems that never overwrite existing data. This type of filesystem design was pioneered at Berkeley and a production-capable implementation was released as the log-structured filesystem in 4.4BSD.
- The idea of a non-overwriting filesystem is sound and was picked up and greatly enhanced by Sun Microsystems, which released it as the Zettabye filesystem in OpenSolaris. The FreeBSD Project replaced the little-used log-structured filesystem with ZFS in 2007. Within a few years, ZFS became the filesystem of choice for FreeBSD installations with large storage components. The design of ZFS provides many benefits:
- Creation of snapshots (read-only) and clones (writable) is easy and cheap. Many of them can be created with no performance hit.
- The on-disk filesystem state is never inconsistent. A ZFS filesystem moves from one consistent state to the next without ever passing through an inconsistent state.
- All the disks on the machine can be pooled together and the pool of space is then shared among all the filesystems. Allocation of the pool space can be controlled through the use of several types of quotas and reservations.
- Massive scale supports petabyte-size storage pools with data structures that allow scalability to zettabytes.
- Provides for fast remote replication and backups.
- Strong data integrity is provided by checksums and disk-level redundancy through mirroring and single, double, and triple parity RAID.
- Supports a hybrid storage pool by using fast devices such as solid-state disks (SSDs) to cache reads and non-volatile memory (NVRAM) to accelerate synchronous writes. // 컴퓨터구조
2.11 The Network Filesystem
- Initially, networking was used to transfer data from one machine to another. Later, it evolved to allowing users to log in remotely to another machine. The next logical step was to bring the data to the user, instead of having the user go to the data—and network filesystems were born. (NFS의 등장 배경!) Users working locally do not experience the network delays on each keystroke, so they have a more responsive environment.
- Bringing the filesystem to a local machine was among the first of the major client–server applications. The server is the remote machine that exports one or more of its filesystems. The client is the local machine that imports those filesystems. From the local client’s point of view, a remotely mounted filesystem appears in the file-tree namespace just like any other locally mounted filesystem. Users and programs running on clients can change into directories on the remote filesystem and can read, write, and execute binaries within that remote filesystem identically to the way they can do these operations on a local filesystem.
- When the client performs an operation on a remote filesystem, the request is packaged and sent to the server. The server performs the requested operation and returns either the requested information or an error explaining why the request was denied. To get reasonable performance, the client must cache frequently accessed data. The complexity of remote filesystems lies in maintaining cache consistency between the server and its many clients.
- Although many remote-filesystem protocols have been developed over the years, the most pervasive one in use among UNIX systems is the Network Filesystem (NFS), whose protocol and most widely used implementation were done by Sun Microsystems. The FreeBSD kernel supports the NFS protocol, although the implementation was done independently from the protocol specification [Macklem, 1994]. The continued success of NFS has resulted in a significant update of the protocol in version 4. The new protocol has little in common with its predecessors other than its name and its goal of giving a set of clients shared access to a single store of files. It adds several new features including integrated security, better caching, and enhanced file and byte-range locking. Both of the currently used NFS protocols, NFSv3 and NFSv4 are described in Chapter 11.
'ComputerScience > FreeBSD' 카테고리의 다른 글
[FreeBSD] Network Layer Protocols, TCP/UDP and Bootstrapping (0) | 2024.07.06 |
---|---|
[FreeBSD] Interprocess Communication (0) | 2024.06.29 |
[FreeBSD] The Fast Filesystem (0) | 2024.06.29 |
[FreeBSD] Devices (0) | 2024.06.29 |
[FreeBSD] I/O System, Descriptor and Socket IPC (0) | 2024.06.25 |