Symantec logo

RELOCATE statement

The RELOCATE action statement of file placement policy rules specifies an action that VxFS takes on designated files during periodic scans of the file system, and the circumstances under which the actions should be taken. The fsppadm enforce command is used to scan all or part of a file system for files that should be relocated based on rules in the active placement policy at the time of the scan.

See the fsppadm(1M) manual page.

The fsppadm enforce scans file systems in path name order. For each file, VxFS identifies the first applicable rule in the active placement policy, as determined by the rules' SELECT statements. If the file resides on a volume specified in the <FROM> clause of one of the rule's RELOCATE statements, and if the file meets the criteria for relocation specified in the statement's <WHEN> clause, the file is scheduled for relocation to a volume in the first placement class listed in the <TO> clause that has space available for the file. The scan that results from issuing the fsppadm enforce command runs to completion before any files are relocated.

The following XML snippet illustrates the general form of the RELOCATE statement:

<RELOCATE>

<FROM>

<SOURCE>

<CLASS>...placement_class_name...</CLASS>

</SOURCE>

<SOURCE>...additional placement class specifications...

</SOURCE>

</FROM>

<TO>

<DESTINATION>

<CLASS>...placement_class_name...</CLASS>

<BALANCE_SIZE Units="units_specifier">

...chunk_size...</BALANCE_SIZE>

</DESTINATION>

<DESTINATION>...additional placement class

specifications...</DESTINATION>

</TO>

<WHEN>...relocation conditions...</WHEN>

</RELOCATE>

A RELOCATE statement contains the following clauses:

<FROM> 

An optional clause that contains a list of placement classes from whose volumes designated files should be relocated if the files meet the conditions specified in the <WHEN> clause. No priority is associated with the ordering of placement classes listed in a <FROM> clause. If a file to which the rule applies is located on a volume in any specified placement class, the file is considered for relocation. 

If a RELOCATE statement contains a <FROM> clause, VxFS only considers files that reside on volumes in placement classes specified in the clause for relocation. If no <FROM> clause is present, qualifying files are relocated regardless of where the files reside. 

<TO> 

Indicates the placement classes to which qualifying files should be relocated. Unlike the source placement class list in a FROM clause, placement classes in a <TO> clause are specified in priority order. Files are relocated to volumes in the first specified placement class if possible, to the second if not, and so forth. 

The <TO> clause of the RELOCATE statement contains a list of <DESTINATION> XML elements specifying placement classes to whose volumes VxFS relocates qualifying files. Placement classes are specified in priority order. VxFS relocates qualifying files to volumes in the first placement class specified as long as space is available. A <DESTINATION> element may contain an optional <BALANCE_SIZE> modifier sub-element. The <BALANCE_SIZE> modifier indicates that relocated files should be distributed across the volumes of the destination placement class in chunks of the indicated size. For example, if a balance size of one megabyte is specified for a placement class containing three volumes, VxFS relocates the first megabyte the file to the first (lowest indexed) volume in the class, the second megabyte to the second volume, the third megabyte to the third volume, the fourth megabyte to the first volume, and so forth. Using the Units attribute in the <BALANCE_SIZE> XML tag, the chunk value may be specified in the balance size value may be specified in bytes (Units="bytes"), kilobytes (Units="KB"), megabytes (Units="MB"), or gigabytes (Units="GB"). 

The <BALANCE_SIZE> modifier effectively stripes files as it relocates them, a capability that is particularly useful with databases and other applications whose storage is in the form of small numbers of large files. Striping files allows concurrent use of multiple physical I/O resources, improving performance for both transactional and streaming applications. 

<WHEN> 

An optional clause that indicates the conditions under which files to which the rule applies should be relocated. Files that have been unaccessed or unmodified for a specified period, reached a certain size, or reached a specific I/O temperature level may be relocated. If a RELOCATE statement does not contain a <WHEN> clause, files to which the rule applies are relocated unconditionally. 

A <WHEN> clause may be included in a RELOCATE statement to specify that files should be relocated only if any or all of four types of criteria are met. Files can be specified for relocation if they satisfy one or more criteria. 

The following are the criteria that can be specified for the <WHEN> clause:

<SIZE> 

This criterion is met when files exceed or drop below a designated size or fall within a designated size range. 

<ACCAGE> 

This criterion is met when files are inactive for a designated period or during a designated period relative to the time at which the fsppadm enforce command was issued. 

<MODAGE> 

This criterion is met when files are unmodified for a designated period or during a designated period relative to the time at which the fsppadm enforce command was issued. 

<IOTEMP> 

This criterion is met when files exceed or drop below a designated I/O temperature, or fall with in a designated I/O temperature range. A file's I/O temperature is a measure of the I/O activity against it during the period designated by the <PERIOD> element prior to the time at which the fsppadm enforce command was issued. 

See ***xref to I/O temp*** 

The following XML snippet illustrates the general form of the <WHEN> clause in a RELOCATE statement:

<WHEN>

<ACCAGE Units="...units_value...">

<MIN Flags="...comparison_operator...">

...min_access_age...</MIN>

<MAX Flags="...comparison_operator...">

...max_access_age...</MAX>

</ACCAGE>

<MODAGE Units="...units_value...">

<MIN Flags="...comparison_operator...">

...min_modification_age...</MIN>

<MAX Flags="...comparison_operator...">

...max_modification_age...</MAX>

</MODAGE>

<SIZE " Units="...units_value...">

<MIN Flags="...comparison_operator...">

...min_size...</MIN>

<MAX Flags="...comparison_operator...">

...max_size...</MAX>

</SIZE>

<IOTEMP Type="...read_write_preference...">

<MIN Flags="...comparison_operator...">

...min_I/O_temperature...</MIN>

<MAX Flags="...comparison_operator...">

...max_I/O_temperature...</MAX>

<PERIOD>...days_of_interest...</PERIOD>

</IOTEMP>

</WHEN>

The access age (<ACCAGE>) element refers to the amount of time since a file was last accessed. VxFS computes access age by subtracting a file's time of last access, atime, from the time when the fsppadm enforce command was issued. The <MIN> and <MAX> XML elements in an <ACCAGE> clause, denote the minimum and maximum access age thresholds for relocation, respectively. These elements are optional, but at least one must be included. Using the Units XML attribute, the <MIN> and <MAX> elements may be specified in seconds (Units="seconds"), minutes (Units="minutes"), hours (Units="hours"), or days (Units="days"), where a day is considered to be 24 hours prior to the time that the fsppadm enforce command was issued.

Both the <MIN> and <MAX> elements require Flags attributes to direct their operation.

For <MIN>, the following Flags attributes values may be specified:

gt 

The time of last access must be greater than the specified interval. 

eq 

The time of last access must be equal to the specified interval. 

gteq 

The time of last access must be greater than or equal to the specified interval. 

For <MAX>, the following Flags attributes values may be specified.

lt 

The time of last access must be less than the specified interval. 

lteq 

The time of last access must be less than or equal to the specified interval. 

Including a <MIN> element in a <WHEN> clause causes VxFS to relocate files to which the rule applies that have been inactive for longer than the specified interval. Such a rule would typically be used to relocate inactive files to less expensive storage tiers. Conversely, including <MAX> causes files accessed within the specified interval to be relocated. It would typically be used to move inactive files against which activity had recommenced to higher performance or more reliable storage. Including both <MIN> and <MAX> causes VxFS to relocate files whose access age lies between the two.

The modification age relocation criterion, <MODAGE>, is similar to access age, except that files' POSIX mtime values are used in computations. You would typically specify the <MODAGE> criterion to cause relocation of recently modified files to higher performance or more reliable storage tiers in anticipation that the files would be accessed recurrently in the near future.

The file size relocation criterion, <SIZE>, causes files to be relocated if the files are larger or smaller than the values specified in the <MIN> and <MAX> relocation criteria, respectively, at the time that the fsppadm enforce command was issued. Specifying both criteria causes VxFS to schedule relocation for files whose sizes lie between the two. Using the Units attribute, threshold file sizes may be specified in bytes (Units="bytes"), kilobytes (Units="KB"), megabytes (Units="MB"), or gigabytes (Units="GB").

Specifying the I/O temperature relocation criterion

The I/O temperature relocation criterion, <IOTEMP>, causes files to be relocated if their I/O temperatures rise above or drop below specified values over a specified period immediately prior to the time at which the fsppadm enforce command was issued. A file's I/O temperature is a measure of the read, write, or total I/O activity against it normalized to the file's size. Higher I/O temperatures indicate higher levels of application activity; lower temperatures indicate lower levels. VxFS computes a file's I/O temperature by dividing the number of bytes transferred to or from it (read, written, or both) during the specified period by its size at the time that the fsppadm enforce command was issued.

See Calculating I/O temperature.

As with the other file relocation criteria, <IOTEMP> may be specified with a lower threshold by using the <MIN> element, an upper threshold by using the <MAX> element, or as a range by using both. However, I/O temperature is dimensionless and therefore has no specification for units.

VxFS computes files' I/O temperatures over the period between the time when the fsppadm enforce command was issued and the number of days in the past specified in the <PERIOD> element, where a day is a 24 hour period. For example, if the fsppadm enforce command was issued at 2PM on Wednesday, and a <PERIOD> value of 2 was specified, VxFS looks at file I/O activity for the period between 2PM on Monday and 2PM on Wednesday.

I/O temperature is a softer measure of I/O activity than access age. With access age, a single access to a file resets the file's atime to the current time. In contrast, a file's I/O temperature decreases gradually as time passes without the file being accessed, and increases gradually as the file is accessed periodically. For example, if a new 10 megabyte file is read completely five times on Monday and fsppadm enforce runs at midnight, the file's two-day I/O temperature will be five and its access age in days will be zero. If the file is read once on Tuesday, the file's access age in days at midnight will be zero, and its two-day I/O temperature will have dropped to three. If the file is read once on Wednesday, the file's access age at midnight will still be zero, but its two-day I/O temperature will have dropped to one, as the influence of Monday's I/O will have disappeared.

If the intention of a file placement policy is to keep files in place, such as on top-tier storage devices, as long as the files are being accessed at all, then access age is the more appropriate relocation criterion. However, if the intention is to relocate files as the I/O load on them decreases, then I/O temperature is more appropriate.

The case for upward relocation is similar. If files that have been relocated to lower-tier storage devices due to infrequent access experience renewed application activity, then it may be appropriate to relocate those files to top-tier devices. A policy rule that uses access age with a low <MAX> value, that is, the interval between fsppadm enforce runs, as a relocation criterion will cause files to be relocated that have been accessed even once during the interval. Conversely, a policy that uses I/O temperature with a <MIN> value will only relocate files that have experienced a sustained level of activity over the period of interest.

RELOCATE statement examples

The following example illustrates an unconditional relocation statement, which is the simplest form of the RELOCATE policy rule statement:

<RELOCATE>

<FROM>

<SOURCE>

<CLASS>tier1</CLASS>

</SOURCE>

</FROM>

<TO>

<DESTINATION>

<CLASS>tier2</CLASS>

</DESTINATION>

</TO>

</RELOCATE>

The files designated by the rule's SELECT statement that reside on volumes in placement class tier1 at the time the fsppadm enforce command executes would be unconditionally relocated to volumes in placement class tier2 as long as space permitted. This type of rule might be used, for example, with applications that create and access new files but seldom access existing files once they have been processed. A CREATE statement would specify creation on tier1 volumes, which are presumably high performance or high availability, or both. Each instantiation of fsppadm enforce would relocate files created since the last run to tier2 volumes.

The following example illustrates a more comprehensive form of the RELOCATE statement that uses access age as the criterion for relocating files from tier1 volumes to tier2 volumes. This rule is designed to maintain free space on tier1 volumes by relocating inactive files to tier2 volumes:

<RELOCATE>

<FROM>

<SOURCE>

<CLASS>tier1</CLASS>

</SOURCE>

</FROM>

<TO>

<DESTINATION>

<CLASS>tier2</CLASS>

</DESTINATION>

</TO>

<WHEN>

<ACCAGE Units="days">

<MIN Flags="gt">30</MIN>

</ACCAGE>

</WHEN>

</RELOCATE>

Files designated by the rule's SELECT statement are relocated from tier1 volumes to tier2 volumes if they have not been accessed for 30 days. VxFS relocates qualifying files in the order in which it encounters them as it scans the file system's directory tree. VxFS stops scheduling qualifying files for relocation when when it calculates that already-scheduled relocations would result in tier2 volumes being fully occupied.

The following example illustrates a possible companion rule that relocates files from tier2 volumes to tier1 ones based on their I/O temperatures. This rule might be used to return files that had been relocated to tier2 volumes due to inactivity to tier1 volumes when application activity against them increases. Using I/O temperature rather than access age as the relocation criterion reduces the chance of relocating files that are not actually being used frequently by applications. This rule does not cause files to be relocated unless there is sustained activity against them over the most recent two-day period.

<RELOCATE>

<FROM>

<SOURCE>

<CLASS>tier2</CLASS>

</SOURCE>

</FROM>

<TO>

<DESTINATION>

<CLASS>tier1</CLASS>

</DESTINATION>

</TO>

<WHEN>

<IOTEMP Type="nwrbytes">

<MIN Flags="gt">5</MIN>

<PERIOD>2</PERIOD>

</IOTEMP>

</WHEN>

</RELOCATE>

This rule relocates files that reside on tier2 volumes to tier1 volumes if their I/O temperatures are above 5 for the two day period immediately preceding the issuing of the fsppadm enforce command. VxFS relocates qualifying files in the order in which it encounters them during its file system directory tree scan. When tier1 volumes are fully occupied, VxFS stops scheduling qualifying files for relocation.

VxFS file placement policies are able to control file placement across any number of placement classes. The following example illustrates a rule for relocating files with low I/O temperatures from tier1 volumes to tier2 volumes, and to tier3 volumes when tier2 volumes are fully occupied:

<RELOCATE>

<FROM>

<SOURCE>

<CLASS>tier1</CLASS>

</SOURCE>

</FROM>

<TO>

<DESTINATION>

<CLASS>tier2</CLASS>

</DESTINATION>

<DESTINATION>

<CLASS>tier3</CLASS>

</DESTINATION>

</TO>

<WHEN>

<IOTEMP Type="nrbytes">

<MAX Flags="lt">4</MAX>

<PERIOD>3</PERIOD>

</IOTEMP>

</WHEN>

</RELOCATE>

This rule relocates files whose 3-day I/O temperatures are less than 4 and which reside on tier1 volumes. When VxFS calculates that already-relocated files would result in tier2 volumes being fully occupied, VxFS relocates qualifying files to tier3 volumes instead. VxFS relocates qualifying files as it encounters them in its scan of the file system directory tree.

The <FROM> clause in the RELOCATE statement is optional. If the clause is not present, VxFS evaluates files designated by the rule's SELECT statement for relocation no matter which volumes they reside on when the fsppadm enforce command is issued. The following example illustrates a fragment of a policy rule that relocates files according to their sizes, no matter where they reside when the fsppadm enforce command is issued:

<RELOCATE>

<TO>

<DESTINATION>

<CLASS>tier1</CLASS>

</DESTINATION>

</TO>

<WHEN>

<SIZE Units="MB">

<MAX Flags="lt">10</MAX>

</SIZE>

</WHEN>

</RELOCATE>

<RELOCATE>

<TO>

<DESTINATION>

<CLASS>tier2</CLASS>

</DESTINATION>

</TO>

<WHEN>

<SIZE Units="MB">

<MIN Flags="gteq">10</MIN>

<MAX Flags="lt">100</MAX>

</SIZE>

</WHEN>

</RELOCATE>

<RELOCATE>

<TO>

<DESTINATION>

<CLASS>tier3</CLASS>

</DESTINATION>

</TO>

<WHEN>

<SIZE Units="MB">

<MIN Flags="gteq">100</MIN>

</SIZE>

</WHEN>

</RELOCATE>

This rule relocates files smaller than 10 megabytes to tier1 volumes, files between 10 and 100 megabytes to tier2 volumes, and files larger than 100 mega-bytes to tier3 volumes. VxFS relocates all qualifying files that do not already reside on volumes in their DESTINATION placement classes when the fsppadm enforce command is issued.