Home > Veritas Storage Foundation™ File System Manual Pages
[-a days][-k ckpt_name][-l largesize][-p passes] [-r rawdev][-t time] mount_point
fsadm [-V vxfs] [-b newsize] [-r rawdev] mount_point
fsadm [-V vxfs] [-o specific_options] mount_point | special
fsadm [-V vxfs] [-d] [-D] [-e] [-E] -f filename | -
fsadm [-V vxfs] [-L] mount_point
If mount_point is a Storage Checkpoint, fsadm performs the specified operation on the entire file system, including all of its Storage Checkpoints. ..
- -a days
- Considers files not accessed within the specified number of days as "aged" files. The default is 14 days. The -d option moves aged files to the end of the directory.
- -b newsize
- Resizes the file system to newsize sectors. -b cannot be used with the -dDeEo options.
- Reorganizes directories. Directory entries are reordered to place subdirectory entries first, then all other entries in decreasing order of time of last access. The directory is also compacted to remove free space.
- Reports on directory fragmentation. If specified with the -d option, the fragmentation report is produced both before and after the directory reorganization.
- Extent reorganization. Minimizes file system fragmentation. Files are reorganized to have the minimum number of extents.
- Reports on extent fragmentation. If specified with the -e option, the fragmentation report is produced both before and after the extent reorganization.
- -f filename | -
- Performs and reports extent reorganization or directory reorganization on an individual file or directory. For example, when used with the -d option, a reorganization is performed on the specified directory. When used with the -e option, an extent reorganization is performed on a specified file. If you specify - (dash), the command reads input from the standard input device instead of using a file name or directory name.
- -V vxfs
- Specifies the VxFS file system type.
- -k ckpt_name
- Reorganizes or reports directories or extent fragmentation on the specified Storage Checkpoint.
- -l largesize
- Large extent size in file system blocks. Indicates the size of extents to be considered as large extents, that is, extents that are immovable while performing an extent defragmentation. The value must be between 8 and 2048 blocks. The default is 64 blocks.
- Queries the current size of the intent log as well as the volume on which it resides. On single-volume file systems, logvol will be empty.
- -o specific_options
- Specifies VxFS-specific options.
- Sets the largefiles flag for the file system. When this flag is set, large files (greater than two gigabytes) can be created on the file system.
- Allocates the intent log size in file system blocks for the specified file system. The recommended value for size is greater than 256K. The maximum is 256 MB.
size can also be specified with a suffix to indicate a unit of measure other than file system blocks. Append k or K to indicate the value is in kilobytes, or m or M to indicate megabytes. to indicate megabytes, or g or G to indicate gigabytes. .. An appended letter can be separated from the number by a space. In that case, enclose the letter and number in a set of quotes (for example, "512 k").
Note: System performance can improve by increasing the size of the intent log because it reduces the frequency at which the log wraps. Increasing the intent log size can also increase the time required for a log replay.
See the logsize specific option of the mkfs_vxfs(1M) manual page for more information on log sizes.
- Directs the intent log size allocation specified by logsize to the specified intent logging volume. volumename must exist and belong to the same volume set as the file system. This modifies the file system log allocation policy to contain the specified device. The old log space is freed after the command completes.
If logvol is specified and logsize is not specified, the log is moved to the new volume while retaining the existing size.
- Clears the largefiles flag for the file system. When the largefiles flag is not set, large files cannot be created on the file system. Any attempt to clear the flag fails if a large file exists on the file system.
You can set or clear the flag on a mounted file system by specifying mount_point, or on an unmounted file system on the device special.
When invoked without arguments, fsadm prints the current state of the largefiles flag.
Note: Be careful when implementing large file system capability. System administration utilities such as backup may not operate correctly if they are not large file aware.
The -o option cannot be used with the -bdDeEfk options.
- -p passes
- Maximum number of passes to run. The default is five passes. Reorganizations are processed until reorganization is complete, or until the specified number of passes are run.
- -r rawdev
- Path name of the raw device to read to determine file layout and fragmentation. This option can be used when fsadm cannot determine the raw device.
- Prints a summary of activity at the end of each pass.
- -t time
- Maximum time to run. Reorganizations are processed until reorganization is complete, or until the time limit expires. time is specified in seconds.
- Specifies verbose mode. Reports reorganization activity.
The -o largefiles and -o nolargefiles options change the largefiles flag, allowing or disallowing large files (files larger than 2 GB) in the file system. Clearing the flag via the -o nolargefiles option succeeds only if the flag is set and there are no large files present on the file system. See the mkfs_vxfs(1M) and mount_vxfs(1M) manual pages for information on creating and mounting file systems with large files.
The -o largefiles and -o nolargefiles options are the only fsadm options that can be used on an unmounted file system. An unmounted file system can be specified by invoking fsadm with a special device rather than a mount point. If you specify an unmounted file system, that file system must be clean.
Changing the largefiles flag may require changes to /etc/filesystems. For example, if fsadm is used to set the largefiles flag, but nolargefiles is specified as a mount option in /etc/filesystems, the file system is not mountable.
There are two options that are available to control the amount of work done by fsadm. The -t option specifies a maximum length of time to run. The -p option specifies a maximum number of passes to run. If both are specified, fsadm exits if either of the terminating conditions is reached. By default, fsadm runs five passes. If both the -e and -d options are specified, fsadm runs all the directory reorganization passes before any extent reorganization passes.
fsadm uses the file .fsadm in the lost+found directory as a lock file. When fsadm is invoked, it opens the file lost+found/.fsadm in the root of the file system specified by mount_point. If .fsadm does not exist, it is created. The fcntl system call (see the fcntl manual page) obtains a write lock on the file. If the write lock fails, fsadm assumes that another instance of fsadm is running and fails. fsadm reports the process ID of the process holding the write lock on the .fsadm file.
If there are file system resources in use in the sectors being removed, fsadm relocates those resources to sectors staying within the resized file system. The time needed for relocation depends on the number of blocks being moved.
In some circumstances, the fsadm command cannot resize a 100% full file system due to lack of space for updating structural information. Check VxFS file systems on a regular basis; increase their size if they approach 100% capacity. This problem can also occur if the file system is very busy. Free up space or reduce activity on the file system and try the resize again.
The fsadm command cannot resize multi-volume file systems. See the fsvoladm(1M) manual page for information on resizing multi-volume file systems.
To obtain a directory fragmentation report, use the command syntax:
fsadm -D [-r rawdev] mount_point
The following is some example output from the fsadm -D command:
# fsadm -V vxfs -D /test Directory Fragmentation Report Dirs Total Immed Immeds Dirs to Blocks Searched Blocks Dirs to Add Reduce to Reducetotal 486 99 388 6 6 6
The column ``Dirs Searched'' contains the total number of directories. A directory is associated with the extent-allocation unit containing the extent in which the directory's inode is located. The column ``Total Blocks'' contains the total number of blocks used by directory extents.
The column ``Immed Dirs'' contains the number of directories that are immediate, meaning that the directory data is in the inode itself, as opposed to being in an extent. Immediate directories save space and speed up path name resolution. The column ``Immeds to Add'' contains the number of directories that currently have a data extent, but that could be reduced in size and contained entirely in the inode.
The column ``Dirs to Reduce'' contains the number of directories for which one or more blocks could be freed if the entries in the directory are compressed to make the free space in the directory contiguous. Because directory entries vary in length, it is possible that some large directories may contain a block or more of total free space, but with the entries arranged in such a way that the space cannot be made contiguous. As a result, it is possible to have a non-zero ``Dirs to Reduce'' calculation immediately after running a directory reorganization. The -v (verbose) option of directory reorganization reports occurrences of failure to compress free space.
The column ``Blocks to Reduce'' contains the number of blocks that could be freed if the entries in the directory are compressed.
For compression, fsadm moves valid entries to the front of the directory and groups the free space at the end of the directory. If there are no entries in the last block of the directory, the block is released and the directory size is reduced.
If the total space used by all directory entries is small enough, fsadm puts the directory in the inode immediate data area.
fsadm also sorts directory entries to improve path name lookup performance. Entries are sorted based on the last access time of the entry. The -a option specifies a time interval; 14 days is the default if -a is not specified. The time interval is broken up into 128 ``buckets,'' and all times within the same buckets are considered equal. All access times older than the time interval are considered equal, and those entries are placed last. Subdirectory entries are placed at the front of the directory and symbolic links are placed after subdirectories, followed by the most-recently-accessed files.
The command syntax for reorganizing directories in a file system is:
fsadm -d [-D][-s][-v][-a days][-p passes] [-t time][-r rawdev] mount_point
The following example shows the output of the fsadm -d -D command:
# fsadm -V vxfs -d -D -s /test Directory Fragmentation Report Dirs Total Immed Immeds Dirs to Blocks Searched Blocks Dirs to Add Reduce to Reduce total 34663 8800 26655 2569 2716 2836 Directory Reorganization Statistics (pass 1 of 2) Dirs Dirs Total Failed Blocks Blocks Immeds Searched Changed Ioctls Ioctls Reduced Changed Added fset 999 8008 3121 5017 0 3037 4428 2569 total 8008 3121 5017 0 3037 4428 2569 Directory Reorganization Statistics (pass 2 of 2) Dirs Dirs Total Failed Blocks Blocks Immeds Searched Changed Ioctls Ioctls Reduced Changed Added fset 999 5439 552 2448 0 708 4188 0 total 5439 552 2448 0 708 4188 0 Directory Fragmentation Report Dirs Total Immed Immeds Dirs to Blocks Searched Blocks Dirs to Add Reduce to Reducetotal 34663 6231 29224 0 147 267
The column ``Dirs Searched'' contains the number of directories searched. Only directories with data extents are reorganized. Immediate directories are skipped. The column ``Dirs Changed'' contains the number of directories for which a change was made.
The column ``Total Ioctls'' contains the total number of VX_DIRSORT ioctls performed. Reorganization of directory extents is performed using this ioctl.
The column ``Failed Ioctls'' contains the number of requests that failed. The reason for failure is usually that the directory being reorganized is active. A few failures are typical in most file systems. If the -v option is specified, all ioctl calls and status returns are recorded.
The column ``Blocks Reduced'' contains the total number of directory blocks freed by compressing entries. The column ``Blocks Changed'' contains the total number of directory blocks updated while sorting and compressing entries.
The column ``Immeds Added'' contains the total number of directories with data extents that were compressed into immediate directories.
The command syntax for an extent-fragmentation report is:
fsadm -E [-l largesize] [-r rawdev] mount_point
The extent reorganization facility considers certain extents to be immovable, that is, if the file already contains large extents, reallocating and consolidating these extents does not improve performance. The -l option controls when fsadm considers an extent immovable. By default, largesize is 64 blocks. For the extent-fragmentation report, the value for largesize affects which extents are reported as being immovable extents.
The following is an example of the output generated by the fsadm -E command:
# fsadm -V vxfs -E /home Extent Fragmentation Report Total Average Average Total Files File Blks # Extents Free Blks 939 11 2 245280 blocks used for indirects: 0 % Free blocks in extents smaller than 64 blks: 8.35 % Free blocks in extents smaller than 8 blks: 4.16 % blks allocated to extents 64 blks or larger: 45.81 Free Extents By Size 1: 356 2: 292 4: 271 8: 181 16: 23 32: 7 64: 3 128: 1 256: 1 512: 0 1024: 1 2048: 14096: 2 8192: 2 16384: 1 32768: 2
The numbers in the column ``Total Files'' indicate the total number of files that have data extents. The column ``Average File Blks'' contains the average number of blocks belonging to all files. The column ``Average # Extents'' contains the average number of extents used by files in the file system. The column ``Total Free Blks'' contains the total number of free blocks in the file system. The total number of blocks used for indirect address extent are reported as ``blocks used for indirects''.
The general shape of free extent map is also reported. There are two percentages reported, % free extents smaller than 64 blocks and % free extents smaller than 8 blocks. These numbers are typically near zero on an unfragmented file system.
Another metric reported is the percentage of blocks that are part of extents 64 blocks or larger. Files with a single small extent are not included in this calculation. This number is typically large on file systems that contain many large files and is small on file systems that contain many small files.
The figures under the heading ``Free Extents By Size'' indicate the totals for free extents of each size. The totals are for free extents of size 1, 2, 4, 8, 16... up to a maximum of the number of data blocks in an allocation unit. The totals are similar to the output of the df -o command unless there was recent allocation or deallocation activity (because fsadm acts on mounted file systems). These figures provide an indication of fragmentation and extent availability on a file system.
To reduce fragmentation, extent reorganization tries to place all small files into one contiguous extent. The -l option specifies the size of a file that is considered large. The default is 64 blocks. Extent reorganization also tries to group large files into large extents of at least 64 blocks. Extent reorganizations can improve performance. Small files can be read or written in one I/O operation, and large files can approach raw-disk performance for sequential I/O operations.
fsadm performs extent reorganization on all inodes in the file system. Each pass through the inodes moves the file system closer to optimal organization.
fsadm reduces both file fragmentation and free extent fragmentation in each pass. In current versions of VxFS, fsadm relies on VxFS kernel allocation mechanisms to reallocate files in a more favorable extent geometry. At the same time, the kernel allocation mechanism is prevented from using blocks in areas of the free list that fsadm tries to make more contiguous.
The command syntax to perform extent reorganization is:
fsadm -e [-E][-s][-v][-l largesize][-p passes] [-r rawdev][-t time] mount_point
The following example shows the output from the fsadm -e -s command:
# fsadm -V vxfs -E -e -s /mnt1 Extent Fragmentation Report Total Average Average Total Files File Blks # Extents Free Blks 939 11 2 245280 blocks used for indirects: 0 % Free blocks in extents smaller than 64 blks: 8.35 % Free blocks in extents smaller than 8 blks: 4.16 % blks allocated to extents 64 blks or larger: 45.81 Free Extents By Size 1: 356 2: 292 4: 271 8: 181 16: 23 32: 7 64: 3 128: 1 256: 1 512: 0 1024: 1 2048: 1 4096: 2 8192: 2 16384: 1 32768: 2 Pass 1 Statistics Extents Reallocations Ioctls Errors Searched Attempted Issued FileBusy NoSpace Total total 2016 1473 789 0 0 0 Pass 2 Statistics Extents Reallocations Ioctls Errors Searched Attempted Issued FileBusy NoSpace Total total 1836 0 0 0 0 0 Extent Fragmentation Report Total Average Average Total Files File Blks # Extents Free Blks 939 11 1 245280 blocks used for indirects: 0 % Free blocks in extents smaller than 64 blks: 0.46 % Free blocks in extents smaller than 8 blks: 0.03 % blks allocated to extents 64 blks or larger: 45.53 Free Extents By Size 1: 10 2: 1 4: 1 8: 4 16: 3 32: 4 64: 3 128: 3 256: 3 512: 4 1024: 4 2048: 2 4096: 3 8192: 1 16384: 1 32768: 2
Note: In this example, the default five passes were scheduled, but the reorganization completed in two passes.
This file system had a significant amount of free space although there were several free small extents. The situation was corrected by reallocating one or more of the extents on many of the files. The files selected for reallocation in this case are those with extents in the heavily fragmented section of the allocation units. The time it takes to complete extent reorganization varies, depending on the degree fragmentation, disk speed, and the number of inodes in the file system. In general, extent reorganization takes approximately one minute for every 100 megabytes of disk space.
In the preceding example, the column ``Extents Searched'' contains the total number of extents examined. The column ``Reallocations Attempted'' contains the total number of consolidations or merging of extents performed. The column ``Ioctls Issued'' contains the total number of reorganization request calls made during the pass. This corresponds closely to the number of files that are being operated on in that pass, as most files can be reorganized with a single ioctl. More than one extent may be consolidated in one operation.
The column ``File Busy'' (located under the heading ``Errors'') shows the total number of reorganization requests that failed because the file was active during reorganization. The column ``NoSpace'' (located under the heading ``Errors'') contains the total number of reorganization requests that failed because an extent presumed free was allocated during the reorganization. The column ``Total'' (located under the heading ``Errors'') is the total number of errors encountered during the reorganization and may include errors that were not included with ``FileBusy'' or ``NoSpace.''
The following command performs an extent reorganization on all individual files under the mount point mnt1:
find /mnt1 -print | fsadm -V vxfs -e -f -
Last updated: 01 April 2006
Copyright ©2009 Symantec Corporation
All rights reserved.