Developer(s) | Red Hat |
---|---|
Full name | Global File System 2 |
Introduced | 2005 withLinux 2.6.19 |
Structures | |
Directory contents | Hashed (small directories stuffed into inode) |
File allocation | bitmap (resource groups) |
Bad blocks | No |
Limits | |
Maxno. of files | Variable |
Max filename length | 255 bytes |
Allowed filename characters | All exceptNUL |
Features | |
Dates recorded | attribute modification (ctime), modification (mtime), access (atime) |
Date resolution | Nanosecond |
Attributes | No-atime, journaled data (regular files only), inherit journaled data (directories only), synchronous-write, append-only, immutable, exhash (dirs only, read only) |
File system permissions | Unix permissions,ACLs and arbitrary security attributes |
Transparent compression | No |
Transparent encryption | No |
Data deduplication | across nodes only |
Other | |
Supported operating systems | Linux |
Developer(s) | Red Hat (formerly,Sistina Software) |
---|---|
Full name | Global File System |
Introduced | 1996 withIRIX (1996),Linux (1997) |
Structures | |
Directory contents | Hashed (small directories stuffed into inode) |
File allocation | bitmap (resource groups) |
Bad blocks | No |
Limits | |
Maxno. of files | Variable |
Max filename length | 255 bytes |
Allowed filename characters | All except NUL |
Features | |
Dates recorded | attribute modification (ctime), modification (mtime), access (atime) |
Date resolution | 1s |
Attributes | No-atime, journaled data (regular files only), inherit journaled data (directories only), synchronous-write, append-only, immutable, exhash (dirs only, read only) |
File system permissions | Unix permissions,ACLs |
Transparent compression | No |
Transparent encryption | No |
Data deduplication | across nodes only |
Other | |
Supported operating systems | IRIX (now obsolete),FreeBSD (now obsolete),Linux |
Incomputing, theGlobal File System 2 (GFS2) is ashared-disk file system forLinux computer clusters. GFS2 allows all members of a cluster to have direct concurrent access to the same sharedblock storage, in contrast todistributed file systems which distribute data throughout the cluster. GFS2 can also be used as a local file system on a single computer.
GFS2 has no disconnected operating-mode, and no client or server roles. All nodes in a GFS2 cluster function as peers. Using GFS2 in a cluster requireshardware to allow access to the shared storage, and a lock manager to control access to the storage.The lock manager operates as a separate module: thus GFS2 can use thedistributed lock manager (DLM) forcluster configurations and the "nolock" lock manager for local filesystems. Older versions of GFS also support GULM, a server-based lock manager which implements redundancy via failover.
GFS and GFS2 arefree software, distributed under the terms of theGNU General Public License.[1][2]
Development of GFS began in 1995 and was originally developed byUniversity of Minnesota professor Matthew O'Keefe and a group of students.[3] It was originally written forSGI'sIRIX operating system, but in 1998 it was ported toLinux (2.4)[4] since theopen source code provided a more convenient development platform. In late 1999/early 2000 it made its way toSistina Software, where it lived for a time as anopen-source project. In 2001, Sistina made the choice to make GFS a proprietary product.
Developers forked OpenGFS from the last public release of GFS and then further enhanced it to include updates allowing it to work with OpenDLM. But OpenGFS and OpenDLM became defunct, sinceRed Hat purchased Sistina in December 2003 and released GFS and many cluster-infrastructure pieces under theGPL in late June 2004.
Red Hat subsequently financed further development geared towards bug-fixing and stabilization. A further development,GFS2[5][6] derives from GFS and was included along with itsdistributed lock manager (shared with GFS) in Linux 2.6.19. Red Hat Enterprise Linux 5.2 included GFS2 as a kernel module for evaluation purposes. With the 5.3 update, GFS2 became part of the kernel package.
GFS2 forms part of theFedora,Red Hat Enterprise Linux and associatedCentOS Linux distributions. Users can purchase commercial support to run GFS2 fully supported on top ofRed Hat Enterprise Linux. As of Red Hat Enterprise Linux 8.3, GFS2 is supported incloud computing environments in which shared storage devices are available.[7]
The following list summarizes some version numbers and major features introduced:
The design of GFS and of GFS2 targetsstorage area network (SAN)-like environments. Although it is possible to use them as a single node filesystem, the full feature-set requires a SAN. This can take the form ofiSCSI,Fibre Channel,ATA over Ethernet (AoE), or any other device which can be presented underLinux as a block device shared by a number of nodes, for example aDRBD device.
Thedistributed lock manager (DLM) requires anIP based network over which to communicate. This is normally justEthernet, but again, there are many other possible solutions. Depending upon the choice of SAN, it may be possible to combine this, but normal practice[citation needed] involves separate networks for the DLM and storage.
The GFS requires afencing mechanism of some kind. This is a requirement of the cluster infrastructure, rather than GFS/GFS2 itself, but it is required for all multi-node clusters. The usual options include power switches and remote access controllers (e.g.DRAC,IPMI, orILO). Virtual and hypervisor-based fencing mechanisms can also be used.Fencing is used to ensure that a node which the cluster believes to be failed cannot suddenly start working again while another node is recovering the journal for the failed node. It can also optionally restart the failed node automatically once the recovery is complete.
Although the designers of GFS/GFS2 aimed to emulate a local filesystem closely, there are a number of differences to be aware of. Some of these are due to the existing filesystem interfaces not allowing the passing of information relating to the cluster. Some stem from the difficulty of implementing those features efficiently in a clustered manner. For example:
The other main difference, and one that is shared by all similar cluster filesystems, is that the cache control mechanism, known as glocks (pronounced Gee-locks) for GFS/GFS2, has an effect across the whole cluster. Eachinode on the filesystem has two glocks associated with it. One (called the iopen glock) keeps track of which processes have the inode open. The other (the inode glock) controls the cache relating to that inode. A glock has four states, UN (unlocked), SH (shared – a read lock), DF (deferred – a read lock incompatible with SH) and EX (exclusive). Each of the four modes maps directly to aDLM lock mode.
When in EX mode, an inode is allowed to cache data andmetadata (which might be "dirty", i.e. waiting for write back to the filesystem). In SH mode, the inode can cache data and metadata, but it must not be dirty. In DF mode, the inode is allowed to cache metadata only, and again it must not be dirty. The DF mode is used only for direct I/O. In UN mode, the inode must not cache any metadata.
In order that operations which change an inode's data or metadata do not interfere with each other, an EX lock is used. This means that certain operations, such as create/unlink of files from thesame directory and writes to thesame file should be, in general, restricted to one node in the cluster. Of course, doing these operations from multiple nodes will work as expected, but due to the requirement to flush caches frequently, it will not be very efficient.
The single most frequently asked question about GFS/GFS2 performance is why the performance can be poor with email servers. The solution is to break up the mail spool into separate directories and to try to keep (so far as is possible) each node reading and writing to a private set of directories.
GFS and GFS2 are bothjournaled file systems; and GFS2 supports a similar set of journaling modes asext3. Indata=writeback mode, only metadata is journaled. This is the only mode supported by GFS, however it is possible to turn on journaling on individual data-files, but only when they are of zero size. Journaled files in GFS have a number of restrictions placed upon them, such asno support for themmap or sendfile system calls, they also use a different on-disk format from regular files. There is also an "inherit-journal" attribute which when set on a directory causes all files (and sub-directories) created within that directory to have the journal (or inherit-journal, respectively) flag set. This can be used instead of thedata=journal mount option whichext3 supports (and GFS/GFS2 does not).
GFS2 also supportsdata=ordered mode which is similar todata=writeback except that dirty data is synced before each journal flush is completed. This ensures that blocks which have been added to an inode will have their content synced back to disk before the metadata is updated to record the new size and thus prevents uninitialised blocks appearing in a file under node failure conditions. The default journaling mode isdata=ordered, to matchext3's default.
As of 2010[update], GFS2 does not yet supportdata=journal mode, but it does (unlike GFS) use the same on-disk format for both regular and journaled files, and it also supports the same journaled and inherit-journal attributes. GFS2 also relaxes the restrictions on when a file may have its journaled attribute changed to any time that the file is not open (also the same asext3).
For performance reasons, each node in GFS and GFS2 has its own journal. In GFS the journals are disk extents, in GFS2 the journals are just regular files. The number of nodes which may mount the filesystem at any one time is limited by the number of available journals.
GFS2 adds a number of new features which are not in GFS. Here is a summary of those features not already mentioned in the boxes to the right of this page:
GFS2 was designed so that upgrading from GFS would be a simple procedure. To this end, most of the on-disk structure has remained the same as GFS, including thebig-endian byte ordering. There are a few differences though:
The journaling systems of GFS and GFS2 are not compatible with each other. Upgrading is possible by means of a tool (gfs2_convert) which is run with the filesystem off-line to update the metadata. Some spare blocks in the GFS journals are used to create the (very small)per_node files required by GFS2 during the update process. Most of the data remains in place.
The GFS2 "meta filesystem" is not a filesystem in its own right, but an alternateroot of the main filesystem. Although it behaves like a "normal" filesystem, its contents are the various system files used by GFS2, and normally users do not need to ever look at it. The GFS2 utilitiesmount and unmount the meta filesystem as required, behind the scenes.
{{cite journal}}
:Cite journal requires|journal=
(help)