Appendix A. Converting a File System from GFS to GFS2
Use the
gfs2_convert
command. To convert a GFS file system to a GFS2 file system.
Warning
Before converting the GFS file system, you must back up the file system, since the conversion process is irreversible and any errors encountered during the conversion can result in the abrupt termination of the program and consequently an unusable file system.
Before converting the GFS file system, you must use the
gfs_fsck
command to check the file system and fix any errors.
If the conversion from GFS to GFS2 is interrupted by a power failure or any other issue, restart the conversion tool. Do not attempt to execute the
fsck.gfs2
command on the file system until the conversion is complete.
Note
GFS2 file systems do not provide support for Context-Dependent Path Names (CDPNs), which allow you to create symbolic links that point to variable destination files or directories. To achieve the same functionality as CDPNs in GFS2 file systems, you can use the
bind
option of the mount
command.
The
gfs2_convert
command identifies CDPNs and replaces them with empty directories with the same name. In order to configure bind mounts to replace the CDPNs, however, you need to know the full paths of the link targets of the CDPNs you are replacing. Before converting your file system, you can use the find
command to identify the links.
The following command lists the symlinks that point to a
hostname
CDPN:
[root@smoke-01 gfs]# find /mnt/gfs -lname @hostname
/mnt/gfs/log
Similarly, you can execute the
find
command for other CDPNs (mach
, os
, sys
, uid
, gid
, jid
). Note that since CDPN names can be of the form @hostname
or {hostname}
, you will need to run the find
command for each variant.
For more information on bind mounts and context-dependent pathnames in GFS2, see Section 4.12, “Bind Mounts and Context-Dependent Path Names”.
When converting full or nearly full file systems, it is possible that there will not be enough space available to fit all the GFS2 file system data structures. In such cases, the size of all the journals is reduced uniformly such that everything fits in the available space.
- Make a backup of your existing GFS file system.
- Unmount the GFS file system from all nodes in the cluster.
- Execute the
gfs_fsck
command on the GFS file system to ensure there is no file system corruption. - Execute
gfs2_convert
. The system will display warnings and confirmation questions before convertinggfsfilesystem
gfsfilesystem
to GFS2.
The following example converts a GFS filesystem on block device
/dev/shell_vg/500g
to a GFS2 filesystem.
[root@shell-01 ~]# /root/cluster/gfs2/convert/gfs2_convert /dev/shell_vg/500g
gfs2_convert version 2 (built May 10 2010 10:05:40)
Copyright (C) Red Hat, Inc. 2004-2006 All rights reserved.
Examining file system..................
This program will convert a gfs1 filesystem to a gfs2 filesystem.
WARNING: This can't be undone. It is strongly advised that you:
1. Back up your entire filesystem first.
2. Run gfs_fsck first to ensure filesystem integrity.
3. Make sure the filesystem is NOT mounted from any node.
4. Make sure you have the latest software versions.
Convert /dev/shell_vg/500g from GFS1 to GFS2? (y/n)y
Converting resource groups...................
Converting inodes.
24208 inodes from 1862 rgs converted.
Fixing file and directory information.
18 cdpn symlinks moved to empty directories.
Converting journals.
Converting journal space to rg space.
Writing journal #1...done.
Writing journal #2...done.
Writing journal #3...done.
Writing journal #4...done.
Building GFS2 file system structures.
Removing obsolete GFS1 file system structures.
Committing changes to disk.
/dev/shell_vg/500g: filesystem converted successfully to gfs2.