Disk File Optimizer for OpenVMS Guide to Operations
- Operating System and Version:
- VSI OpenVMS IA-64 Version 8.4-1H1 or higher
VSI OpenVMS Alpha Version 8.4-2L1 or higher
Preface
1. About VSI
VMS Software, Inc. (VSI) is an independent software company licensed by Hewlett Packard Enterprise to develop and support the OpenVMS operating system.
2. Purpose of This Guide
The Disk File Optimizer for OpenVMS Guide to Operations provides information on the Disk File Optimizer software. This guide also contains information about the DCL command, graphic user interfaces, and the callable interface, and list of the messages generated by the software.
3. Intended Audience
The Disk File Optimizer for OpenVMS Guide to Operations is intended for the system administrator. This guide also contains information that may be of interest to programmers who wish to use the callable interface.
4. Structure of This Guide
Chapter 1, Overview of the Disk File Optimizer provides an overview of file fragmentation, performance degradation due to file fragmentation, and how the Disk File Optimizer can correct these situations.
Chapter 2, Getting Started provides information on getting started with the Disk File Optimizer.
Chapter 3, Using Defrag explains how to use the Defrag variant of the Disk File Optimizer software.
Chapter 4, Using Defrag PLUS explains how to use the Defrag PLUS variant of the Disk File Optimizer software.
Chapter 5, The DECwindows Interface for Defrag describes how to use the Disk File Optimizer DECwindows interface to initiate, control, and end defragmentation operations.
Chapter 7, Callable Interface describes the callable interface.
Appendix A, Answers to Frequently Asked Questions contains frequently asked questions.
Appendix B, Disk File Optimizer Logicals and Files provides a list of files and logicals created during a Disk File Optimizer software installation.
Appendix C, DEFRAGMENT SHOW Command Report describes the report you receive from the SHOW command.
Appendix D, Brief Log File Example shows an example of a brief log file.
Appendix E, Full Log File Example shows an example of a full log file.
Appendix F, Defragmentation Messages lists and describes the error messages generated by the Disk File Optimizer software.
5. Related Documents
VSI OpenVMS License Management Utility Guide
OpenVMS Performance Management Manual
VSI OpenVMS DCL Dictionary
VSI OpenVMS System Manager's Manual
VSI OpenVMS System Management Utilities Reference Manual
VSI OpenVMS Guide to OpenVMS File Applications
VSI OpenVMS Record Management Utilities Reference Manual
6. References to VSI Products
Product |
Formal Product Name |
---|---|
Disk File Optimizer |
Disk File Optimizer refers to the Disk File Optimizer software. |
Defrag |
Defrag refers to a variation of the Disk File Optimizer software that provides basic file and volume defragmentation capabilities. |
Defrag PLUS |
Defrag PLUS refers to the variation of the Disk File Optimizer software that supports all of the features of Defrag, plus scheduling and command storing capabilities. |
VPA |
VPA refers to the VAX Performance Advisor software. |
DECps |
DECps refers to the DEC Performance Solution software. |
OpenVMS |
OpenVMS refers to the OpenVMS VAX and OpenVMS Alpha operating systems. |
DECwindows |
Software interface for video displays |
7. OpenVMS Documentation
The full VSI OpenVMS documentation set can be found on the VMS Software Documentation webpage at https://docs.vmssoftware.com.
8. VSI Encourages Your Comments
You may send comments or suggestions regarding this manual or any VSI document by sending electronic mail to the following Internet address: <docinfo@vmssoftware.com>
. Users who have VSI OpenVMS support contracts through VSI can contact <support@vmssoftware.com>
for help with this product.
9. Conventions
Convention |
Meaning |
---|---|
{ parameter} |
In command formats, braces indicate required parameters. Do not enter the braces when you enter the parameter in a command. |
[ parameter] |
In command formats, square brackets indicate optional parameters. Do not enter the brackets when you enter the optional parameters. |
[ ] |
In interactive procedures, square brackets denote default responses. |
italic text |
In examples and messages, italic text represents input that is unique for each system. |
boldface text |
Boldface text is used for emphasis. |
Ctrl/ x |
Control key sequence indicates that you hold down the Ctrl key while you press another character key (for example, Ctrl/W or Ctrl/C). |
. . . |
In examples, a vertical ellipsis represents the omission of data that the system displays in response to a command or data that a user enters. |
file-spec[, …] |
In command formats, a horizontal ellipsis indicates that the preceding items can be repeated one or more times. |
Chapter 1. Overview of the Disk File Optimizer
1.1. Introduction
A brief introduction to the Disk File Optimizer software, including a description of the two variants and the available interfaces
A discussion of basic file system concepts and file fragmentation
A brief description of suggested methods for determining file and volume fragmentation
1.2. Product Description
The Disk File Optimizer software is an OpenVMS utility designed to reduce file fragmentation on a storage device while that device remains on line to other users. The utility does not prevent users from accessing their files while it is running. If a user tries to access a file while it is being defragmented, the defragmentation process releases the file to the user and moves on to other files that require defragmentation. The file defragmentation utility is compatible with any Files–11 structure level 2 (ODS–2) formatted device including single volumes, bound volume sets, stripe sets, and shadow sets. The file defragmentation utility is also compatible with ODS-5 formatted device on OpenVMS Alpha 7.3 and above.
Defrag provides basic capabilities to defragment files and volumes.
Defrag PLUS provides all the capabilities of Defrag, plus scheduling and database options.
1.2.1. Operational Goals
Maintain absolute data integrity
Avoid negative impact on normal user operations
Reduce file fragmentation on the target volume
1.2.2. Features
Feature |
Description |
---|---|
Safe defragmentation |
Built-in safety measures to protect user data. |
Works on line |
Defragmentation can occur at the same time a device is user accessible. Open files are not defragmented, and defragmentation operations are transparent to users. |
Unattended operation |
Defragmentation can occur without operator intervention. |
VMScluster compatibility |
Works with any supported VMScluster configuration. |
Automatic scheduling |
A full range of scheduling options are available in Defrag PLUS, including daily, weekly, and continuous operating modes. Defrag does not provide scheduling capabilities but can be used with DEC scheduler, if desired. |
Defragmentation levels |
A full range of defragmentation levels is available, from a volume analysis to a full defragmentation operation. |
1.2.3. User Interface
Users interact with the file defragmentation utility using the DCL commands listed in Table 1.2, “ Disk File Optimizer Command Summary” or the graphic user interface.
For details on using the Defrag variant of the software, see Chapter 3, Using Defrag. For details on using the Defrag PLUS variant of the software, see Chapter 4, Using Defrag PLUS. For details on using the DECwindows interface, see Chapter 5, The DECwindows Interface for Defrag.
Start defragmentation operations
Stop defragmentation operations
Schedule defragmentation operations (Defrag PLUS only)
Monitor defragmentation operations
Control CPU and I/O resources consumed by the defragmentation process
Show database contents (Defrag PLUS only)
Show volume fragmentation
Command |
Variant |
Description |
---|---|---|
DEFRAGMENT ABORT {script-name[,...] | volume-name[,...]} [/QUALIFIERS...] |
Both |
Aborts the defragmentation process associated with the specified volume (Defrag) or script (Defrag PLUS). Before exiting, the defragmentation process performs an orderly shutdown of all outstanding activities. |
DEFRAGMENT ATTACH {process_name} [/QUALIFIERS...] |
Both |
Transfers control from the current process (which goes into hibernation) to the specified process. |
DEFRAGMENT CANCEL {script-name[,...]} [/QUALIFIERS...] |
Defrag PLUS |
Cancels the next scheduled execution of the specified script. Normal scheduling resumes thereafter. |
DEFRAGMENT DISABLE {script-name[,...]} [/QUALIFIERS...] |
Defrag PLUS |
Disables the specified script. A script does not execute while it is disabled. The script remains disabled until it is enabled with the ENABLE command. |
DEFRAGMENT ENABLE {script-name[,...]} [/QUALIFIERS...] |
Defrag PLUS |
Enables a previously disabled script. Once enabled, a script operates normally (as scheduled). |
DEFRAGMENT EXIT |
Both |
Returns the user from the Disk File Optimizer utility to the OpenVMS format. |
DEFRAGMENT FILE {file_name[,...]} [/QUALIFIERS...] |
Both |
Allows the user to defragment a selected file (or files). Different qualifiers are available for Defrag and Defrag PLUS. If you have installed Defrag, the DEFRAGMENT FILE command creates a detached process that defragments the target file or files. This process executes immediately if files are available. If you have installed Defrag PLUS, the DEFRAGMENT FILE command creates and enters a script into the scheduling database. This script defragments the file or files specified on the command line. By default, the script is immediately eligible for execution, and once complete, is removed from the scheduling database. |
DEFRAGMENT HELP {command} |
Both |
Invokes the standard VMS HELP utility for the appropriate version of the Disk File Optimizer software on your system. |
DEFRAGMENT MODIFY {script-name} [/QUALIFIERS...] |
Defrag PLUS |
Allows the user to modify an existing script. This command supersedes use of the /INHERIT qualifier for modifying scripts. |
DEFRAGMENT MONITOR {script-name |volume-name} [/QUALIFIERS...] |
Both |
Invokes the defragmentation monitor, which monitors an ongoing defragmentation process. For Defrag, the input parameter must be a volume name. For Defrag PLUS, the input parameter can be either a script or a volume name, depending on the setting of the /VOLUME qualifier. |
DEFRAGMENT OFFLINE_VOLUME {volume-name[,...]} [/QUALIFIERS...] |
Both |
Defragments INDEXF.SYS on the specified volume according to the selected command line qualifiers. |
DEFRAGMENT REMOVE {script-name[,...]} [/QUALIFIERS...] |
Defrag PLUS |
Removes the specified script from the scheduling and parameter database. |
DEFRAGMENT SET {(parameter=value[,...])} [/NODE=(node[,...]]) |
Defrag PLUS |
Sets the specified parameters (CPU_LIMIT, IO_LIMIT, PROCESS_LIMIT) to the values specified. |
DEFRAGMENT SHOW [{script-name[,...] | {volume-name[,...]}] [/QUALIFIERS...] |
Both |
Shows the contents of the scheduling and parameter database (Defrag PLUS) or the fragmentation state of the supplied volumes. |
DEFRAGMENT SPAWN {command} |
Both |
Creates a subprocess and either transfers control to the subprocess or executes a DCL command from within the subprocess. |
DEFRAGMENT START {script-name[,...]} [/QUALIFIERS] |
Defrag PLUS |
Starts the specified script at the time specified by the /AFTER qualifier. By default, the script starts immediately. |
DEFRAGMENT VOLUME {volume_name[,...]} [/QUALIFIERS...] |
Both |
Allows the user to defragment a selected volume (or volumes). Different qualifiers are available for Defrag and Defrag PLUS. If you have installed Defrag, the DEFRAGMENT VOLUME command creates a detached process that defragments the target volume. This process executes immediately. If you have installed Defrag PLUS, the DEFRAGMENT VOLUME command creates and enters a script into the scheduling database. This script defragments the volume associated with the volume parameter. By default, the script is immediately eligible for execution, and once complete, is removed from the scheduling database. |
1.2.4. Programming Interface
The Disk File Optimizer software also provides the opportunity for programmers to call for defragmentation operations to occur directly from their application programs. For detailed information about the callable interface, see Chapter 7, Callable Interface.
1.2.5. Operational Overview
This section presents an operational overview of the file defragmentation process implemented by the Disk File Optimizer software.
1.2.5.1. Defragmentation Process
Figure 1.1, “Command Operation” illustrates the general organization of the Disk File Optimizer software.
The numbers on the illustration correspond to the numbers in the following list:
The user enters the DEFRAGMENT FILE or DEFRAGMENT VOLUME command. At this point, if you are running the Defrag variant of the software, go directly to Step 5.
The database interface stores the command information in the database, notifies the schedulers if appropriate, and returns the user to the operating system.
A separate, autonomous scheduling process reads the stored information using the database interface and determines when the volume or file should be defragmented.
At the appropriate time, the scheduler starts a defragmentation process that is dedicated to defragmenting the target volume or file.
The defragmentation process defragments the target volume or file. For the example shown in Figure 1.1, “Command Operation”, the target volume is DUA1.
1.2.5.2. Prologue and Epilogue Files
Check the status of the disk to ensure defragmentation is needed
Take a snapshot of files or disks before and after the defragmentation process to monitor results
Shut down a process that opens a file before defragmentation and start it up after defragmentation
1.2.5.3. Operational Summary
The Defrag process provides a very flexible combination of scheduling and operational characteristics. For example, defragmentation operations can occur one time only, can execute on a periodic schedule, can be limited to certain nodes in a cluster, or can execute on any node in the cluster. You can control the CPU and I/O resources the defragmentation processes use on a node-by-node basis. The dashed line in Figure 1.1, “Command Operation” indicates a potential node boundary. The actions above the line and those below the line can occur on different nodes in a cluster.?
1.2.6. Scheduling Defrag PLUS
This section explains how the scheduling and database functions for the Defrag PLUS variant of the software work.
1.2.6.1. Scheduling Database and Database Interface
The scheduling database stores DCL command lines. These stored command lines are called scripts. Almost every script is available for execution at any time.?
Along with the script information, the database stores scheduling information in a time-ordered queue. The scheduler uses this information to determine when to start a given script. Starting the script initiates the defragmentation process associated with that script.
1.2.6.2. Scheduler
The scheduler runs as a detached process. A separate scheduler process is required for each node that executes the defragmentation process. Thus, if all defragmentation is done from NODE1, only one scheduler is required and it must execute on NODE1. Conversely, if the defragmentation work is spread across multiple nodes in a cluster, multiple scheduler processes are required: one on each node that executes the defragmentation process.
A command is entered that requires scheduler functions
An existing defragmentation process completes
A scheduled event occurs
If a script is scheduled to execute, and it may execute on the same node as the scheduler, the scheduler initiates the defragmentation process.
1.2.6.3. Defragmentation Process
Provides the interface to the monitor
Aborts itself
Throttles itself
Executes preprocessing and post processing files
Time limits itself
Defragments files
Consolidates free space
Arranges files according to access patterns
File evaluation—Determines which files should be defragmented and which files are dormant, frequent, excluded, and so on
File defragmentation phase one — defragment those files that can be easily defragmented
File defragmentation phase two — defragment files using a best fit algorithm (For example: defragment a file with 30 extents to 5 extents.)
File defragmentation phase three — defragment those files that could not be defragmented in phase one or phase two
Frequent file placement — arrange those files in the frequent list and hot file database together between INDEXF.SYS and LBN 0
Dormant file placement — arrange those files in the dormant list together between the high LBN and INDEXF.SYS
Free space consolidation—Consolidates free space
If all files have not been defragmented in this first pass because free space was not available, the phases are repeated again as needed.
1.3. Basic File and File System Concepts
A file is a body of data. The file system uses some of the body of data strictly to manipulate the file (file metadata). The rest of the data comprises the information the user stores in the file. In the OpenVMS File Control Program (FCP), the file metadata is stored in the file header, directory entries, and in-memory data structures. The user data area is composed of virtual blocks of 512 bytes.
The virtual blocks that make up the user data area of a file are always contiguous and are numbered from 1 to n, where n is the number of virtual blocks in the file. These numbers are called virtual block numbers (VBNs). One of the primary functions of the FCP is to map these virtual blocks to their corresponding logical blocks on a volume. Like virtual blocks, logical blocks are 512 bytes. Unlike virtual blocks, logical blocks are numbered from 0 to n–1 and the numbers are called logical block numbers (LBNs). The logical blocks that make up a file do not have to be contiguous.
As more and more files are manipulated on a volume, there are fewer available contiguous logical blocks. Free space may be fragmented into many small areas. Eventually, the FCP creates or extends a file so that portions of it reside on different parts of the disk. This is file fragmentation, a simple example of which is shown in Figure 1.2, “File Fragmentation Example”. In general, the effects of file fragmentation are not appreciable until the allocated space on a volume reaches 70 to 80 percent of the available space.
The FCP allocates and extends files in units called clusters. Each cluster contains one or more logical blocks.? The number of logical blocks in a cluster is called the volume cluster factor.
The FCP allocates disk blocks by sequentially searching the extent cache for available free space and using the free space as it is available. If the extent cache dwindles, it is refilled from the bit map stored on each disk. In addition, blocks that are returned because of file deletion or file truncation are returned to the extent cache.
Consider a newly initialized disk that has 12 contiguous clusters available for allocation. Users A, B, and C each allocates and writes a three-cluster file. User A allocates clusters 1–3 by default, because that is what resides in the extent cache. User B allocates clusters 4–6 and user C allocates clusters 7–9. This is shown in the first part of Figure 1.3, “Allocating Fragmented Files”. User B then deletes the file and the clusters are returned to the extent cache. Thus, the extent cache now indicates that clusters 1–3 and 7–9 are allocated as shown in the second part of Figure 1.3, “Allocating Fragmented Files”.
Now suppose another user, user D, allocates a six-cluster file. Because the default file allocation algorithm is to sequentially search the extent cache and use free space as it is available, user D receives clusters 4–6 and 10–12. Blocks 7–9 are already allocated. This is shown in the last part of Figure 1.3, “Allocating Fragmented Files”.
1.3.1. File Header Information
Header area—Header validation information, file ID, ownership and protection codes, and offsets to the other areas.
Ident area—Primarily accounting information.
Map area—List of retrieval pointers used to perform the VBN to LBN mapping.
Access control list area—Primarily information about who can access this file.
Reserved area—Not used by the FCP. It is available for use by user programs.
Checksum—Helps determine whether the header data is valid.
Since the size of the file header is fixed, files with a great deal of mapping or access control information require more than one header. A file in this condition is called a multiheader fileand is described by multiple file headers that are chained together. Multiheader files are typically large and fragmented and they may span multiple volumes on a volume set.
This example shows that FILE.EXT is fragmented into four extents, each described by a separate retrieval pointer. The first extent begins on LBN 1009767 and ends on LBN 1009808, a total of 42 LBNs. Thus, the location of the file's contents can be determined from the retrieval pointers found in the file header.
1.3.2. Extent Mapping Windows
The DCL command INITIALIZE device-name /WINDOWS= n
The DCL command MOUNT device-name /WINDOWS= n
The FAB$B_RTV field at file open time
The FDL attributes FILE WINDOW_SIZE
The system parameter ACP_WINDOW (if the disk is mounted /SYSTEM)
If all the retrieval pointers to a file cannot fit into the mapping window, the FCP may need to read additional retrieval pointers from disk to map a different portion of the file. This operation is called a window turn. A window turn requires one extra I/O and can, therefore, affect performance.
By default, the four extents of FILE.EXT shown in Example 1.1, “Viewing Retrieval Pointers Using the Dump Utility” can be mapped into memory at the same time. No additional I/O operation is required to find the location of any of the four extents.
1.3.3. Cathedral Window
In extreme cases of fragmentation, the file system can generate a special type of mapping window called a cathedral window. Basically, if the number of extents exceeds the window size, AND the user requests a file be mapped completely on OPEN, then the file system generates a cathedral window. The cathedral window maps the extents of an entire file regardless of the size, number of headers, number of mapping pointers, or size of the ACL for the file. It does not generate a window turn.
1.4. Determining File Fragmentation
- Enter the following command:
DEFRAGMENT SHOW {volume-name}/VOLUME
Enter a DCL DUMP command
Use the VMS Monitor utility
Use VAX Performance Advisor (VPA) software
Use DEC Performance Solution (DECps) software
1.4.1. DEFRAGMENT SHOW {volume}/VOLUME Command
The DEFRAGMENT SHOW {volume}/VOLUME command can be used to display the fragmentation state of a given volume. Several options provide different levels of detail. By default, the SHOW subcommand provides a summary number called a fragmentation index that gives a rough idea of the fragmentation level for the volume. Along with the fragmentation index is a brief list of statistics about file and free space fragmentation that support the fragmentation index value. For additional information about using the SHOW subcommand, see Chapter 3, Using Defrag or Chapter 4, Using Defrag PLUS.
1.4.2. DUMP Utility
The Dump utility shows how many extents compose a file and the starting LBN for those extents. An example of using the Dump utility is given in Example 1.1, “Viewing Retrieval Pointers Using the Dump Utility”. For more information, see the VMS DCL Dictionary.
1.4.3. Monitor Utility
The Monitor utility displays various classes of information that show device I/O rates, file system cache statistics, and FCP statistics. The FCP class shows the window turn rate for the system. The window turn rate is not broken down by device, but a high window turn rate may indicate fragmentation. Use information from the VPA or DECps software to reinforce this indication. In addition, use the Monitor utility to see statistics about the file system caches on your system. For more information, see the VMS Monitor Utility Manual.
1.4.4. Performance Products
DECps is a follow-on to the VPA product. Either product can help you analyze the performance of your system. Using the DECps command ADVISE PERFORMANCE REPORT (or the VPA equivalent VPA ADVISE/REPORT), you can obtain information about disk split I/O rates which can indicate disk fragmentation.
You can use the /USE_HOTFILES_DATABASE qualifier on the DEFRAGMENT FILE or DEFRAGMENT VOLUME command to direct the defragmentation process to query the appropriate database (VPA or DECps) for a list of hotfiles (frequently accessed files). This list is automatically added to the /FREQUENT files list. For more information about using VPA or DECps software to augment the frequent files list, see Chapter 3, Using Defrag or Chapter 4, Using Defrag PLUS.
1.5. File Defragmentation and VMS Backup
Note
The Disk File Optimizer does not replace the need to use the Backup utility to protect your data.
A fully defragmented disk significantly improves performance in the same way that using BACKUP and then RESTORE improves performance. Contiguous files require less time to access. Since the free space on the volume has also been consolidated, the time required to create new files is also decreased.
Chapter 2. Getting Started
2.1. Introduction
Minimizing file fragmentation when initializing volumes
Improving I/O performance
Licensing DFO
Creating scripts
Scheduling defragmentation jobs
Creating scheduling scripts
2.2. Organizing Volumes Efficiently
INDEXF.SYS (controlled by volume INITIALIZE qualifiers)
Frequent or hot files (/FREQUENT and /HOTFILE_DATABASE)
000000.dir (INITIALIZE qualifiers)
The following sections describes these qualifiers and their effect.
2.2.1. /CLUSTER_SIZE=n
Retaining log files on a volume initialized with a large (100 or so) cluster size can keep fragmentation to a minimum. System error and other log files are always extending and creating large, fragmented files. Also, keeping these normally open logfiles off the system volume allows the Disk File Optimizer software to consolidate free space more efficiently. The trade-off is more unused space in the last cluster of files.
2.2.2. /DIRECTORIES=n
The /DIRECTORIES=n qualifier is important if you are placing frequent files when defragmenting the volume. Frequent files are placed around the center of the volume. The 000000.DIR is also placed around the center of the volume by specifying/INDEX=MIDDLE when initializing the volume. However, if more than 16 files and top level directories are created in the[000000] directory, the directory will extend and possibly be allocated on another part of the volume. You can keep the 000000.DIR from being moved by specifying the approximate number of files that will be in this directory.
2.2.3. /HEADERS=n
The /HEADERS=n qualifier is important for I/O performance. INDEXF.SYS contains the file headers for all files on the volume. By default, when the volume is initialized it contains space for 16 file headers. When more than 16 files are created on the volume, it extends creating another extent. When the new extent fills up, it extends again. This extending fragments INDEXF.SYS and can cause poor I/O performance. By preallocating enough space for INDEXF.SYS, you can keep INDEXF.SYS from extending. One way to estimate the number of headers is by looking at existing disks that are the same type.
If you are placing frequent or hot files, using the/HEADERS=n qualifier could affect volume access. Frequent or hotfile placement is optimized by having INDEXF.SYS in the middle of the volume. By default or by specifying /INDEX=MIDDLE, the fourth extent of INDEXF.SYS is placed in the middle of the volume. If enough space is not preallocated for all of the file headers on the volume, INDEXF.SYS is extended and the new extent could be placed anywhere on the volume.
2.3. Improving I/O Performance
You may be able to improve I/O performance by moving some files and setting the characteristics of your volumes. The following sections describe how you might improve I/O performance:
2.3.1. Move Log Files to One Volume
You can improve I/O performance on your system volume by moving log files to a dedicated volume. Usually the system volume has a small cluster size which causes the log files to have many small fragments. By initializing the dedicated volume with a large cluster size, you can keep the number of extents down. You are also taking some of the writes to the volume off the system volume.
By moving these large, open, fragmented files to another volume, you will see an improvement in DFO. It will not have to workaround all of these large, open, fragmented files when consolidating free space.
2.3.2. SET VOLUME/NOHIGHWATER_MARKING
High-water marking guarantees that users cannot read data that was not written by them. Enabling high-water marking causes extra I/Os when accessing the volume. If you do not need this level of security, you can disable this feature. File high-water marking is enabled by default.
$ SHOW DEVICE/FULL volume_name:
$ SET VOLUME/NOHIGHWATER_MARKING volume_name:
2.3.3. SET VOLUME/DATA_CHECK=(NOREAD,NOWRITE)
$ SHOW DEVICE/FULL volume_name:
$ SET VOLUME/DATA_CHECK=(NOREAD,NOWRITE) volume_name:
2.3.4. SET VOLUME/NOERASE_ON_DELETE
$ SHOW DEVICE/FULL volume_name:
$ SET VOLUME/NOERASE_ON_DELETE volume_name:
2.4. Disk File Optimizer Licensing Considerations
Disk File Optimizer is furnished only under a license and it supports the OpenVMS License Management Facility. License units for the software are granted for use on one specified system, based on the processor system class. The system classes are Workgroup, Departmental, and Enterprise. For more licensing information, please refer to the Software Product Description, 55.85.xx.
When using DFO on a standalone system, the system must be licensed according to the class of CPU of that system. When using DFO in a cluster, only one node in the cluster must be licensed to run DFO. That one node can then defragment all the disks that are accessible within that cluster. For performance reasons, many customers have DFO licensed on multiple nodes within the cluster. This will speed up the defragment process for all the disks and spread the load among the processors.
2.5. VMScluster System Considerations
Processes per node
Common scheduling database
Locally mounted volumes
The following sections describe these considerations.
2.5.1. Processes Per Node
When setting up the scheduling database, you may want to limit the number of defragmentation processes on a node. Unless specified, a node can start an unlimited number of defragmentation processes.
$ DEFRAGMENT SET PROCESS_LIMIT=2/NODE=node_name
You can specify different process limits for each node by specifying the /NODE qualifier. If you do not specify the /NODE qualifier, all nodes in the database are affected by the command.
$ DEFRAGMENT SHOW /PARAMETERS
2.5.2. Common Scheduling Database
Be sure to install the scheduling database on a volume common to all DFO licensed nodes in the cluster. A common volume must be mounted with the /CLUSTER qualifier. The default is to place the scheduling database on the system volume. This will work only if this volume is accessible to all nodes.
- Stop the schedulers on all nodes in the cluster using the following command on each node:
$ @SYS$STARTUP:DFG$STOP_SCHEDULER
Create a directory on an appropriate volume.
Copy the files from the old directory to the new directory and delete the old files.
- Edit SYS$STARTUP:DFG$STARTUP.COM and change the DFG$DATABASE and DFG$MAIL_ADDRESS logicals to point to the new directory:
$ CALL DEFINE_LOGICAL DFG$DATABASE new_volume:[new_directory] $ CALL DEFINE_LOGICAL DFG$MAIL_ADDRESS new_volume:[new_directory]DFG$MAIL.DIS
- Restart the schedulers using the following command on each node of the cluster:
$ @SYS$STARTUP:DFG$START_SCHEDULER
2.5.3. Locally Mounted Volumes
$ DEFRAGMENT VOLUME $1$DKA100:/NODE=LUNTIC/SCRIPT=DEFRAG_$1$DKA100
In the above example, the scheduler starts the defragmentation process on node LUNTIC.
2.6. Creating Scheduling Scripts
To schedule defragmentation jobs, you have to create scheduling scripts for Defrag PLUS or command procedures for Defrag. By creating scheduling scripts or command procedures, you define which volumes to defragment and how often to defragment them. The following examples deal with creating scheduling scripts for Defrag PLUS. You can still use the same commands to create command procedures for Defrag.
2.6.1. Gathering Initial Information
- The fragmentation index for each volume. Use the following command for each volume:
$ DEFRAGMENT SHOW volume_name:/VOLUME
Appendix C, DEFRAGMENT SHOW Command Report describes how to read the report. You can use this information as a starting point to monitor how often you may want to defragment a particular volume.
Which volumes you want to defragment on which nodes.
2.6.2. Creating Scheduling Scripts for Defrag PLUS
This section gives you examples of how to create scheduling scripts. Chapter 4, Using Defrag PLUS contains a complete description of each command.
$ DEFRAGMENT VOLUME $2$DKA100: - /SCRIPT=DEFRAG_$2$DKA100 - /INTERVAL=1-00:00 - /AFTER=21:00 - /FULL - /LOG=DFG$DATABASE:DEFRAG_$2$DKA100 - /NODE=LUNTIC - /MAIL/NOOPCOM_NOTIFICATION
The defragment volume command with the volume to defragment, $2$DKA100: | |
The script name, DEFRAG_$2$DKA100 | |
The interval between the start of script, EVERY DAY | |
The time to start the script, 21:00 | |
The type of log to generate, FULL | |
The name of the log file, DFG$DATABASE:DEFRAG_$2$DKA100 | |
The name of the node to start the script on, LUNTIC | |
The type of notification, MAIL and not OPCOM |
$ DEFRAGMENT VOLUME $1$DUA2: - /SCRIPT=DEFRAG_$1$DUA2 - /INTERVAL=3-00:00 - /FULL - /LOG=DFG$DATABASE:DEFRAG_$1$DUA2
$ DEFRAGMENT OFFLINE_VOLUME $1$DUA2: - /SCRIPT=DEFRAG_OFFLINE_$1$DUA3 - /NOAFTER
The easiest way to create scheduling scripts is with a DCL command procedure. This way, if anything changes, you can edit the command procedure and reload the scheduling database. Also, if something should happen to the database, you can create a new database and reload it.
$ DEFRAGMENT VOLUME $2$DKA100: - /SCRIPT=DEFRAG_$2$DKA100 - /INTERVAL=1-00:00 - /AFTER=21:00 - /FULL - /LOG=DFG$DATABASE:DEFRAG_$2$DKA100 - /NODE=LUNTIC - /MAIL/NOOPCOM_NOTIFICATION $ DEFRAGMENT VOLUME $1$DUA2: - /SCRIPT=DEFRAG_$1$DUA2 - /INTERVAL=3-00:00 - /AFTER=17:00 - /FULL - /LOG=DFG$DATABASE:DEFRAG_$1$DUA2 $ DEFRAGMENT OFFLINE_VOLUME $1$DUA2: - /SCRIPT=DEFRAG_OFFLINE_$1$DUA3 /NOAFTER $ EXIT
$ @LOAD_DB
$ DEFRAGMENT REMOVE * $ @LOAD_DB
You will have to wait 30 seconds or so between the above commands to allow DFO to delete the scripts from the database.
2.6.3. Modifying Scheduling Scripts for DEFRAG Plus
This sections shows you how to modify a script using the DEFRAGMENT MODIFY command. Chapter 4, Using Defrag PLUS contains complete descriptions of each command.
$ DEFRAGMENT MODIFY DEFRAG_$2$DKA100 - /AFTER=17:00 - /NOMAIL - /NODE=(LUNTIC,PRNOID,SENILE)
2.6.4. Creating Scheduling Scripts for Defrag
$ DEFRAGMENT VOLUME $2$DKA100: - /FULL - /LOG=DFG$DATABASE:DEFRAG_$2$DKA100 - /NOOPCOM_NOTIFICATION $ MAIL/NOSELF/SUB="VOLUME $2$DKA100 DEFRAGMENTED" NL: SYSTEM $ exit
2.6.5. Checking for the Right Script Interval
Periodically issue the DEFRGMENT SHOW command for each volume to ensure the fragmentation index is at an acceptable level.
Create a program that gathers fragmentation information and creates a graph of the fragmentation of each volume.
$ DEFRAGMENT SHOW $1$DKB0:/VOLUME Disk File Optimizer for OpenVMS DFG V2.9 2005, VSI OpenVMS F r a g m e n t a t i o n R e p o r t DISK$ALPHA071 05-JAN-2005 15:22:58.11 The fragmentation index is 14.2 1 - 20.9 is excellent 21 - 40.9 is good 41 - 60.9 is fair 61 - 80.9 is poor 81 - 100 indicates a badly fragmented disk Approximately 8.8 (out of 80.0 possible) is due to file fragmentation Approximately 5.4 (out of 20.0 possible) is due to freespace fragmentation Freespace Summary: Total free space: 146848 blocks Percentage free: 7 (rounded) Total free extents: 27 Maximum free extent: 30312 blocks, LBN: 1799744 Minimum free extent: 4 blocks, LBN: 125948 Average free extent: 5438 blocks Median free extent: 492 blocks File Fragmentation Summary: Number of files (with some allocation): 8363 Total file extents on the disk: 8887 Average number of file extents per file: 1.062657 Median number of file extents per file: 1 Most Fragmented File: [SYSTEM_FILES.SPIELN]ACCOUNTNG.DAT;7 (85 extents)
Refer to Appendix C, DEFRAGMENT SHOW Command Report for information about the above report.
2.6.6. Modifying Scheduling Scripts
$ DEFRAGMENT VOLUME $2$DKA100: - /SCRIPT=DEFRAG_$2$DKA100 - /INTERVAL=1-00:00 - /AFTER=21:00 - /FULL - /LOG=DFG$DATABASE:DEFRAG_$2$DKA100 - /NODE=LUNTIC - /MAIL/NOOPCOM_NOTIFICATION $ DEFRAGMENT VOLUME $1$DUA2: - /SCRIPT=DEFRAG_$1$DUA2 - /INTERVAL=2-00:00 - !<– changed 3 to 2 /AFTER=17:00 - /FULL - /LOG=DFG$DATABASE:DEFRAG_$1$DUA2 $ DEFRAGMENT OFFLINE_VOLUME $1$DUA2: - /SCRIPT=DEFRAG_OFFLINE_$1$DUA3 /NOAFTER $ EXIT
$ DEFRAGMENT REMOVE * $ @LOAD_DB
You must wait 30 seconds or so between these commands to allow DFO to delete the scripts from the database.
$ DEFRAGMENT MODIFY DEFRAG_$1$DUA2/INTERVAL=2-00:00
2.7. Example Scheduling Scripts for a VMScluster
- System volumes (one shadowed)
- Volumes where layered products are installed
- A volume for log files
- Volumes for user files (one is a RAID set from StorageWorks RAID Software)
- A locally mounted volume
- Volumes for code management system (CMS) files and software builds
Device Device Error Volume Name Status Count Label DSA0: Mounted 0 VAXVMS062 DPA0: (LUNTIC) Online 0 (remote access) DPA1: (LUNTIC) Mounted 0 GROUP $1$DKA130: (LUNTIC) Mounted 0 PSYCHO $1$DUA0: (BRNDMG) ShadowSetMember 0 (member of DSA0:) $1$DUA1: (BRNDMG) ShadowSetMember 0 (member of DSA0:) $1$DUA2: (BRNDMG) Mounted 0 CMS $1$DUA3: (BRNDMG) Mounted 0 BUILD $1$DUA11: (BRNDMG) Mounted 0 USER1 $1$DUA12: (BRNDMG) Mounted 0 USER2 $1$DUA13: (BRNDMG) Mounted 0 USER3 $1$DUA14: (BRNDMG) Mounted 0 USER4 $1$DUA52: (BRNDMG) Mounted 0 GROUP0000001 $1$DUA53: (BRNDMG) Mounted 0 GROUP0000002 $1$DUA54: (BRNDMG) Mounted 0 VAX_PRODUCTS $1$DUA55: (BRNDMG) Mounted 61 LOGFILES $1$DUA58: (BRNDMG) Mounted 0 PRNOID_PAGE $1$DUA59: (BRNDMG) Mounted 0 LUNTIC_PAGE $1$DUA60: (BRNDMG) Mounted 0 SENILE_PAGE $1$DUA63: (BRNDMG) Mounted 0 PHYSICAL $1$DUA110: (DMNTIA) Mounted 0 ALPVMS062 $1$DUA140: (DMNTIA) Mounted 0 ALP_PRODUCTS $4$DIA1: (NROSIS1) Mounted 0 OPENVMS062
Volume Attributes |
Policy |
Reason |
---|---|---|
Volume receives Minimal writes |
Defragment every 7 days |
Fewer writes mean less defragmentation |
Volume use is minimal |
Defragment every 7 days |
Fewer writes mean less defragmentation |
Volume receives constant writes |
Defragment every day |
Constant writes and deletes cause more fragmentation |
Volume is very busy |
Defragment during periods of low use |
Many users mean many files will not be defragmented |
Volume is mounted to all nodes |
Do not restrict which node can defragment the volume |
No restrictions mean more efficient processing |
Volume is mounted locally |
Restrict defragmentation process to the node to which it is mounted |
Only that node can see the volume |
If defragmentation cannot be scheduled when few users are on the system, the priority of the process may be changed to take advantage of system resources as they are available.
For example, the scheduling scripts for the system volumes and layered software products volumes. Both of these types of volumes have a minimum amount of writes to them.
LUNTIC boots off of $1$DUA110:
PRNOID and SENILE boot off of DSA0: (shadow set)
NROSIS boots off of $4$DIA1:
$ DEFRAGMENT VOLUME DSA0: - /SCRIPT=DEFRAG_DSA0 - /INTERVAL=7-00:00 - /AFTER=17:00 - /FULL - /LOG=DFG$DATABASE:DEFRAG_DSA0 - /NODE=(PRNOID,SENILE) - /MAIL/NOOPCOM_NOTIFICATION $ DEFRAGMENT VOLUME $1$DUA110: - /SCRIPT=DEFRAG_$1$DUA110 - /INTERVAL=7-00:00 - /AFTER=17:00 - /FULL - /LOG=DFG$DATABASE:DEFRAG_$1$DUA110 - /NODE=(LUNTIC) - /MAIL/NOOPCOM_NOTIFICATION $ DEFRAGMENT VOLUME $4$DIA1: - /SCRIPT=DEFRAG_$4$DIA1 - /INTERVAL=7-00:00 - /AFTER=17:00 - /FULL - /LOG=DFG$DATABASE:DEFRAG_$4$DIA1 - /NODE=(NROSIS) - /MAIL/NOOPCOM_NOTIFICATION $ DEFRAGMENT VOLUME $1$DUA140: - /SCRIPT=DEFRAG_$1$DUA140 - /INTERVAL=7-00:00 - /AFTER=17:00 - /FULL - /LOG=DFG$DATABASE:DEFRAG_$1$DUA140 - /NODE=(LUNTIC) - /MAIL/NOOPCOM_NOTIFICATION $ DEFRAGMENT VOLUME $1$DUA54: - /SCRIPT=DEFRAG_$1$DUA54 - /INTERVAL=7-00:00 - /AFTER=17:00 - /FULL - /LOG=DFG$DATABASE:DEFRAG_$1$DUA54 - /NODE=(NROSIS,SENILE,PRNOID) - /MAIL/NOOPCOM_NOTIFICATION
$ DEFRAGMENT VOLUME DPA1: - /SCRIPT=DEFRAG_DPA1 - /INTERVAL=1-00:00 - /AFTER=17:00 - /FULL - /LOG=DFG$DATABASE:DEFRAG_DPA1 - /MAIL/NOOPCOM_NOTIFICATION $ DEFRAGMENT VOLUME $1$DUA11: - /SCRIPT=DEFRAG_$1$DUA11 - /INTERVAL=1-00:00 - /AFTER=17:00 - /FULL - /LOG=DFG$DATABASE:DEFRAG_$1$DUA11 - /MAIL/NOOPCOM_NOTIFICATION $ DEFRAGMENT VOLUME $1$DUA12: - /SCRIPT=DEFRAG_$1$DUA12 - /INTERVAL=1-00:00 - /AFTER=17:00 - /FULL - /LOG=DFG$DATABASE:DEFRAG_$1$DUA12 - /MAIL/NOOPCOM_NOTIFICATION $ DEFRAGMENT VOLUME $1$DUA13: - /SCRIPT=DEFRAG_$1$DUA13 - /INTERVAL=1-00:00 - /AFTER=17:00 - /FULL - /LOG=DFG$DATABASE:DEFRAG_$1$DUA13 - /MAIL/NOOPCOM_NOTIFICATION $ DEFRAGMENT VOLUME $1$DUA14: - /SCRIPT=DEFRAG_$1$DUA14 - /INTERVAL=1-00:00 - /AFTER=17:00 - /FULL - /LOG=DFG$DATABASE:DEFRAG_$1$DUA14 - /MAIL/NOOPCOM_NOTIFICATION $ DEFRAGMENT VOLUME $1$DUA63: - /SCRIPT=DEFRAG_$1$DUA63 - /INTERVAL=1-00:00 - /AFTER=17:00 - /FULL - /LOG=DFG$DATABASE:DEFRAG_$1$DUA63 - /MAIL/NOOPCOM_NOTIFICATION
$ DEFRAGMENT VOLUME $1$DKA130: - /SCRIPT=DEFRAG_$1$DKA130 - /INTERVAL=7-00:00 - /AFTER=17:00 - /FULL - /LOG=DFG$DATABASE:DEFRAG_$1$DKA130 - /NODE=(LUNTIC) - /MAIL/NOOPCOM_NOTIFICATION
Start the scripts at 6 a.m. to avoid the nightly software builds.
Lower the priority of the defragmentation process to minimize user impact or optimize system resources.
Run the defragmentation process on the Alpha system and the fastest VAX system.
$ DEFRAGMENT VOLUME $1$DUA2: - /SCRIPT=DEFRAG_$1$DUA2 - /INTERVAL=1-00:00 - /AFTER=06:00 - /FULL - /PRIORITY=DEFAULT=1, MINIMUM=0) - /LOG=DFG$DATABASE:DEFRAG_$1$DUA2 - /NODE=(PRNOID,LUNTIC) - /MAIL/NOOPCOM_NOTIFICATION $ DEFRAGMENT VOLUME $1$DUA3: - /SCRIPT=DEFRAG_$1$DUA3 - /INTERVAL=1-00:00 - /AFTER=06:00 - /FULL - /PRIORITY=DEFAULT=1, MINIMUM=0) - /LOG=DFG$DATABASE:DEFRAG_$1$DUA3 - /NODE=(LUNTIC,PRNOID) - /MAIL/NOOPCOM_NOTIFICATION
Note
The paging volumes ($1$DUA58:, $1$DUA59:, and $1$DUA60:) have only one file, the paging file. The paging file is always open so DFO will not defragment any files on the volumes.
The individual RAID set volumes ($1$DUA52: and $1$DUA53:), have one large file which is not fragmented. We created the script to defragment the RAID set, DPA1:.
The individual shadow set members ($1$DUA0: and $1$DUA1:) are defragmented with the script for DSA0:.
2.8. Creating Scheduling Scripts for a Standalone System
Device Device Error Volume Name Status Count Label $1$DKA0: (SPIELN) Mounted 0 ALPHA071 $1$DKA100: (SPIELN) Mounted 0 USER1 $1$DKB0: (SPIELN) Online 0 BUILD
$ DEFRAGMENT VOLUME $1$DKA0: - /SCRIPT=DEFRAG_$1$DKA0 - /INTERVAL=1-00:00 - /AFTER=21:00 - /FULL - /LOG=DFG$DATABASE:DEFRAG_$1$DKA0 - /MAIL/NOOPCOM_NOTIFICATION $ DEFRAGMENT VOLUME $1$DKA100: - /SCRIPT=DEFRAG_$1$DKA100 - /INTERVAL=1-00:00 - /AFTER=21:00 - /FULL - /LOG=DFG$DATABASE:DEFRAG_$1$DKA100 - /MAIL/NOOPCOM_NOTIFICATION $ DEFRAGMENT VOLUME $1$DKB0: - /SCRIPT=DEFRAG_$1$DKB0 - /INTERVAL=1-00:00 - /AFTER=21:00 - /FULL - /LOG=DFG$DATABASE:DEFRAG_$1$DKB0 - /MAIL/NOOPCOM_NOTIFICATION
Chapter 3. Using Defrag
3.1. Introduction
General guidelines for using the Defrag software
Examples illustrating how to use the Defrag software
The Defrag command set
Defrag command reference material in a format similar to that of the VSI OpenVMS DCL Dictionary
3.2. Defrag Capabilities
The Defrag variant of the Disk File Optimizer software provides capabilities to defragment files and volumes, but not for scheduling and storing information about the defragmentation operations. To schedule defragmentation operations, you can create a batch file to define defragmentation operations, or you can use a scheduling product. The Defrag PLUS variant of the software, as described in Chapter 4, Using Defrag PLUS, provides scheduling options and allows you to store defragmentation commands in a database.
3.2.1. Interface
Disk File Optimizer commands are available from the DCL interface or from within the Disk File Optimizer. When you enter a command from within the Disk File Optimizer, you do not enter the word “DEFRAGMENT” first, except for the DEFRAGMENT FILE and DEFRAGMENT VOLUME commands.
$ DEFRAGMENT FILE *.C /FULL/LOG=defrag_c.log $ DEFRAGMENT MONITOR DUA1: $ DEFRAGMENT SHOW DUA1:
$ DEFRAGMENT DFO> DEFRAGMENT FILE *.C /FULL/LOG=defrag_c.log DFO> MONITOR DUA1: DFO> SHOW DUA1:
3.2.2. Graphic User Interface
$ DEFRAGEMENT/INTERFACE=DECWINDOWS
$ DEFRAGEMENT/INTERFACE=CHARACTER_CELL
3.2.3. Online Help
$ HELP DEFRAGMENT
$ DEFRAGMENT HELP
DFO> HELP
3.2.4. Speed and Effectiveness of Defragmentation Operations
The amount of free space on the volume.
If all other variables are constant, a volume with little free space takes longer to defragment than a volume with a lot of free space.
The number of users accessing files on the volume.
Because the defragmentation process does not impact a user's ability to read and write files, it cannot defragment a file that is being accessed. Thus a large number of user file accesses on the target volume can negatively impact the effectiveness of the defragmentation process.
User-set CPU or I/O limits.
In general, the more restrictive the limits, the longer it takes to defragment a given volume.
3.2.5. Scheduling Defragmentation Operations
Although Defrag does not provide actual scheduling capabilities,you still need to consider the best time to run defragmentation operations on your system. Use VAX Performance Analyzer (VPA) or DEC Performance Solution (DECps) software to find many of the parameters, such as periods of low activity, that will help determine the best times to schedule the defragmentation process.
3.2.5.1. Scheduling Guidelines
Schedule defragmentation during periods of low user activity. This step ensures the process can defragment all candidate files. If a user opens a file while the defragmentation process is running, the fragmented file cannot be defragmented.
Schedule the defragmentation process periodically to maintain volumes in a defragmented state. This also makes the defragmentation process more effective.
Schedule defragmentation before and after user activity that may significantly contribute to fragmentation, such as end-of-month processing.
3.2.5.2. Using DECscheduler
You can use the DECscheduler product with Defrag to schedule defragmentation operations. There are no special requirements for doing this. For information about DECscheduler, see DECscheduler document.
3.2.6. Using Hot-files Information
The Disk File Optimizer allows you to automatically use hotfile records from the VPA or DECps database to identify frequently accessed files. The defragmentation process automatically determines which, if either, of these products is installed on your system and queries the appropriate database. To augment the frequent files list using the hotfiles records from one of these products, use the /HOTFILE_DATABASE qualifier with the DEFRAGMENT FILE or DEFRAGMENT VOLUME command.
If you use the /HOTFILE_DATABASE qualifier, the defragmentation process queries the appropriate database for hotfile records relating to the target volume. The files listed in the hotfile records are automatically added to the /FREQUENT file list.
The standard defragmentation process samples hotfile data using the previous 24 hour period (that is, 24 hours before you enter the DEFRAGMENT FILE or DEFRAGMENT VOLUME command) as a sample time.
Both VPA and DECps allow you to modify the hotfile collection process. If you have VPA installed, use the ADVISE /COLLECT command and /[NO]HOTFILE_QUEUE={value} qualifier. If you have DECps installed, use the ADVISE COLLECT SET command and the /[NO]HOTFILE_QUEUE={value} qualifier. See the VPA or DECps documentation for additional details.
3.2.7. Defining Quotas for the Defragmentation Process
The process quotas are values applied to the defragmentation process and then disappear when the process is complete. For more information on process quota values, refer to the VMS Authorize Utility Manual.
You can define the process quotas for defragmentation processes. When the defragmentation process starts up it selects the maximum value from the following three sources:
Hard coded values
SYSGEN process quotas (PQL_Mxxx)
DFO logical process quotas
By changing the SYSGEN process quotas or DFO logical process quotas you can define the process quotas for the defragmentation processes. The following sections describes these values and describes how to change them.
3.2.7.1. Hard coded values
You cannot change the hard coded values for the defragmentation processes but the following shows the hard coded values:
ASTLIM - 100
BIOLM - 18
BYTLM - 61440
DIOLM - 18
ENQLM - 500
FILLM - 50
JTQUOTA - (uses system default)
PGFLQUOTA - 50000
PRCLM - 8
TQELM - 10
WSDEFAULT - 512
WSEXTENT - 16000
WSQUOTA - 2048
3.2.7.2. SYSGEN Process Quotas
The SYSGEN PQL_Mxxx process quotas are defined in SYSGEN. You can change these dynamic PQL_Mxxx parameters in SYSGEN. For more information on SYSGEN process quota values, refer to the SYSGEN Generation Utility.
This list shows the PQL_Mxxx parameters that affect the defragmentation processes:
PQL_MASTLM
PQL_MBIOLM
PQL_MBYTLM
PQL_MDIOLM
PQL_MENQLM
PQL_MFILLM
PQL_MJTQUOTA
PQL_MPGFLQUOTA
PQL_MPRCLM
PQL_MTQELM
PQL_MWSDEFAULT
PQL_MWSEXTENT
PQL_MWSQUOTA
3.2.7.3. DFO Logical Process Quotas
DFO provides logicals that allow you to define the process quotas for the defragmentation process. These logicals are defined in SYS$STARTUP:DFG$STARTUP.COM. When you install DFO these logicals are commented out. By uncommenting the affected line and executing DFG$STARTUP.COM you can affect the quotas for the defragmentation processes.
$ DEFINE/SYSTEM/EXECUTIVE_MODE DFG$PGFLQUOTA 120000These rules apply to setting process quota values:
You cannot decrease a quota value below the system PQL minimum as defined by SYSGEN.
You may decrease a DFO quota value to the associated PQL_Mxxx minimum value, but this is not recommended.
$! To use these logicals, increase the associated value, uncomment the $! desired line, and execute this file. $! $! CALL DEFINE_LOGICAL DFG$ASTLM 100 $! CALL DEFINE_LOGICAL DFG$BIOLM 18 $! CALL DEFINE_LOGICAL DFG$BYTLM 61440 $! CALL DEFINE_LOGICAL DFG$DIOLM 18 $! CALL DEFINE_LOGICAL DFG$ENQLM 500 $! CALL DEFINE_LOGICAL DFG$FILLM 50 $! CALL DEFINE_LOGICAL DFG$JTQUOTA {uses system default} $ CALL DEFINE_LOGICAL DFG$PGFLQUOTA 120000 $! CALL DEFINE_LOGICAL DFG$PRCLM 8 $! CALL DEFINE_LOGICAL DFG$TQELM 10 $! CALL DEFINE_LOGICAL DFG$WSDEFAULT 512 $! CALL DEFINE_LOGICAL DFG$WSEXTENT 16000 $! CALL DEFINE_LOGICAL DFG$WSQUOTA 2048
3.2.7.4. Defining the Transfer Size Logical
The logical, DFG$TRANSFERSIZE, helps you tune the Disk File Optimizer. The definition of this logical allows you to change the amount of data that is transferred at onetime. On a volume that has files with large extents, you could wait up to 20 minutes while the system transfers these large extents before you could access the file. By defining this logical, you could access this file in less than a minute. This logical changes the impact that the Disk File Optimizer has on applications that are simultaneously accessing the same files.
This logical is set to 10,000 blocks by default. You can change it by editing SYS$STARTUP:DFG$STARTUP.COM and then executing the command procedure.
3.3. Wildcard Character Use
The file-spec field allows wildcard characters. You can specify wildcard characters in place of the directory name, file name, file type, or file version number field. The default file-spec for all wildcard operations is DISK:[000000...]*.*;*. Specifying *.TMP;*selects all *.TMP;* files on the entire volume.
3.4. Examples Using Defrag
This section provides some general examples of what you can do with the Defrag software. Additional examples are shown for each command in Section 3.5, “Defrag Command Set”.
3.4.1. Creating Log Files
Brief
Full
Brief log files provide an abbreviated description of events that occur during a defragmentation operation. Brief log files are the default log file type.
Full log files provide an extended version of events that occur during defragmentation operations. Full log files are obtained by specifying /FULL.
$ DEFRAGMENT VOLUME DISK$ONE/LEVEL=2/LOG=DISK$ONE_ANA.LOG/FULL
Blank - file has been preprocessed for defragmentation d - file has been defragmented * - file has been partly defragmented D - file has been placed for dormant access Dd - file has been defragmented and placed dormant D* - file has been placed dormant and been partly defragmented F - file has been placed for frequent access Fd - file has been defragmented and placed frequent F* - file has been placed frequent and been partly defragmented Moved - file has been moved (number of extents unchanged) EMPTY - file was empty; no action taken FAIL - file's fragmentation cannot be reduced IN USE - new disk space for file was in use; no action taken OPEN - file was open; no action taken NOMOVE - file may not be moved; no action taken UNAVL - file was unavailable; no action taken
3.4.2. Showing the State of a Disk
The defragmentation software can show the current fragmentation state of a volume. The SHOW subcommand provides a variety of report options that show the level of fragmentation on a given volume.
$ DEFRAGMENT SHOW DISK$ONE/VOLUME
This command generates a fragmentation index, free space summary, and file fragmentation summary. The fragmentation index is an estimate of the level of fragmentation on the specified volume. Its value is derived from the number of files on the volume, their sizes,the number of extents in those files, and the state of the free space on the volume. The file and free space fragmentation summary provides more detail on the fragmentation index. Refer to Appendix C, DEFRAGMENT SHOW Command Report for more information on this report.
Other options available show file and free space histograms, list all free space holes, list all files with more than a given number of extents, and provide locations for specified files.
3.5. Defrag Command Set
Command |
Description |
---|---|
DEFRAGMENT ABORT {volume-name[,...]} [/QUALIFIERS...] |
Aborts the defragmentation process associated with the specified volume. Before exiting, the defragmentation process performs an orderly shutdown of all outstanding activities. |
DEFRAGMENT ATTACH {process_name} [/QUALIFIERS...] |
Transfers control from the current process (which goes into hibernation) to the specified process. |
DEFRAGMENT EXIT |
Exits the user from the Disk File Optimizer utility and returns to the system prompt. |
DEFRAGMENT FILE {file_name[,...]} [/QUALIFIERS...] |
Defragments a selected file (or files). |
DEFRAGMENT HELP {command} |
Invokes VMS HELP utility for the Disk File Optimizer software. |
DEFRAGMENT MONITOR {volume-name} [/QUALIFIERS...] |
Invokes the defragmentation monitor, which monitors an ongoing defragmentation process. The input parameter must be a volume name. |
DEFRAGMENT OFFLINE_VOLUME {volume-name[,...]} [/QUALIFIERS...] |
Defragments INDEXF.SYS on the specified volume according to the selected command line qualifiers. |
DEFRAGMENT SHOW [{volume-name[,...]}] [/QUALIFIERS...] |
Shows the fragmentation state of the specified volumes. |
DEFRAGMENT SPAWN {command} |
Creates a subprocess and either transfers control to the subprocess or executes a DCL command from within the subprocess. |
DEFRAGMENT VOLUME {volume_name[,...]} [/QUALIFIERS...] |
Defragments a selected volume (or volumes). The DEFRAGMENT VOLUME command creates a detached process that defragments the target volume. This process executes immediately. |
3.5.1. The Defrag Commands
This section provides detailed information about each command for the Defrag variant of the Disk File Optimizer software.
DEFRAGMENT ABORT
DEFRAGMENT ABORT — The ABORT subcommand terminates the defragmentation process on the volume specified in the command line.
Format
DEFRAGMENT ABORT
[ { volume-name[,...] } { /ALL } ]Parameters
volume-name
The volume-name parameter identifies the volume or volumes on which the defragmentation process is to be aborted. The volume-name specification accepts the standard wildcard characters. If you use an asterisk (*) for the volume-name specification, Defrag aborts all defragmentation processes on the VAXcluster system. If you use a percent sign (%) to match a particular character in the volume-name specification, Defrag aborts the defragmentation processes on the volumes in the VAXcluster system with names meeting the specification. For example, to abort defragmentation processes on all DUA drives in the VAXcluster system, use DUA% for the volume-name specification.
Description
The ABORT subcommand terminates execution of the defragmentation process(es) associated with the volumes specified on the command line. The process is terminated in an orderly fashion. The defragmentation process completes current functions, executes housekeeping functions, and then exits, leaving the volume fully usable and accessible.
Restrictions
The volume-name parameter is not allowed if the /ALL qualifier is used.
Qualifiers
- /ALL, /NOALL
The /ALL qualifier aborts all defragmentation processes on the system. This is equivalent to using an asterisk (*) for the volume-name specification.
Examples
$ DEFRAGMENT ABORT DISK$USER1
This command aborts the defragmentation process currently executing on volume DISK$USER1.
$ DEFRAGMENT ABORT /ALL
This command aborts all defragmentation processes on all volumes in the VAXcluster system.
DEFRAGMENT ATTACH
DEFRAGMENT ATTACH — The ATTACH subcommand transfers control from the current process (which then hibernates) to the specified process.
Format
DEFRAGMENT ATTACH
[ { process-name | /IDENTIFICATION=pid } ]Parameters
process-name
The process-name specifies the name of a process to which control transfers. The process must already exist, be part of your current job, and share the same input stream as your current process. However, the process cannot be your current process or a subprocess created with the /NOWAIT qualifier.
Process names can contain from 1 to 15 alphanumeric characters. If a connection to the specified process cannot be made, an error message is displayed.
Description
The ATTACH command allows you to connect your input stream to another process. You can use the ATTACH command to change control from one subprocess to another subprocess or to the parent process.
When you enter the ATTACH command, the parent or “source” process is put into hibernation and your input stream is connected to the specified destination process. You can use the ATTACH command to connect to a subprocess that is part of a current job left hibernating as a result of the DCL SPAWN/WAIT command or another ATTACH command, as long as the connection is valid. (No connection can be made to the current process, to a process that is not part of the current job, or to a process that does not exist. If any of these connections are attempted, an error message is displayed.)
You can also use the ATTACH command with the DCL SPAWN /WAIT command to return to a parent process without terminating the subprocess running the Disk File Optimizer.
Restrictions
The ATTACH command cannot be used if your terminal has an associated mailbox.
You cannot use the process-name parameter with the /IDENTIFICATION qualifier.
You must supply either a process name or a PID for this command.
Qualifiers
- /IDENTIFICATION=pid
/IDENTIFICATION lets you specify the process identification (PID) of the process to which terminal control will be transferred. Leading zeros can be omitted.
Examples
$ DEFRAGMENT ATTACH JONES_2
This ATTACH command transfers the terminal's control to the subprocess named JONES_2.
$ DEFRAGMENT ATTACH /IDENTIFICATION=2A401A1B
This ATTACH command switches control from the current process to the process whose PID is 2A401A1B.
DEFRAGMENT EXIT
DEFRAGMENT EXIT — The EXIT subcommand exits the Disk File Optimizer utility and returns the system prompt to the user.
Format
DEFRAGMENT EXIT
Parameters
None.
Description
The EXIT subcommand exits the user from the Disk File Optimizer utility. EXIT shuts everything down in an orderly sequence.
Restrictions
None.
Qualifiers
None.
Examples
The following is an example of the EXIT command:
DFO> EXIT $
This command exits the user from the Disk File Optimizer utility and returns the user to the DCL prompt.
DEFRAGMENT FILE
DEFRAGMENT FILE — The FILE command defragments the files specified on the command line according to the DEFRAGMENT command line. Use this command to defragment a small number of files. To defragment a large number of files, use the DEFRAGMENT VOLUME command.
Format
DEFRAGMENT FILE
[file-spec[,...] ] [ { /BRIEF | /CONSOLIDATE_FREESPACE | /CPU_LIMIT | /DORMANT | /EPILOGUE | /EXCLUDE | /FREQUENT | /FULL | /HOTFILE_DATABASE | /IGNORE | /IO_LIMIT | /LEVEL | /LOG | /OPCOM_NOTFICATION | /OPTIONS | /PRIORITY | /PROLOGUE | /RVN | /TIME_LIMIT | /WAIT | /WRITE_CHECK } ]Parameters
file-spec[,...]
The file-spec parameter identifies the files to be defragmented. You may use wildcards for the file specification.
Description
The DEFRAGMENT FILE command defragments the specified files according to the selected command line qualifiers. When you specify a file name without the device and/or directory, the defragmentation software operates on files in the current directory on the current device. You must explicitly specify the device and directory name for files not in the default directory.
The defragmentation process begins immediately.
Restrictions
The /LOG qualifier is required with /LEVEL=5.
/BRIEF and /FULL cannot be used concurrently.
Qualifiers
- /BRIEF (default), /NOBRIEF
The /BRIEF qualifier can be used only when the /LOG qualifier is used. The /BRIEF qualifier requests a brief log of all actions taken by the defragmentation process. This log includes beginning and ending file status information. The /BRIEF and /FULL qualifiers are mutually exclusive, and /NOBRIEF produces the same result as /FULL. The /BRIEF qualifier is the default.
- /CONSOLIDATE_FREESPACE, /NOCONSOLIDATE_FREESPACE (default)
The /CONSOLIDATE_FREESPACE qualifier tells the Disk File Optimizer to use its free space consolidation algorithm.
- /CPU_LIMIT=n, /NOCPU_LIMIT
The /CPU_LIMIT qualifier specifies the percent of CPU resources that may be used for anyone defragmentation process. If this percentage is exceeded, the priority for the process drops to the minimum as specified by the /PRIORITY qualifier, or defaults to three.
- /DORMANT=(file-spec[,...]), /NODORMANT (default)
The /DORMANT qualifier indicates files to be considered dormant when final file placement decisions are made. In order for the file to be placed dormant, it must be the file specified in the command line. Dormant files are placed at the high end of the volume.
If a file is indicated in both the DORMANT and FREQUENT lists, it is considered dormant. If a file is indicated in both the EXCLUDE and DORMANT lists, it is excluded.Note
The amount of free space on the volume, the number of files currently being accessed, and other factors influence file placement. The Disk File Optimizer does not guarantee file placement, but makes every effort to place files as described.
- /EPILOGUE={file-name}, /NOEPILOGUE (default)
The /EPILOGUE qualifier identifies a DCL command file which DFO executes upon completion of the DEFRAGMENT operation.
Mounting or dismounting the disks cannot be done through the Command file specified.
Refer to Appendix B, Disk File Optimizer Logicals and Files for logicals that are available to these command procedures.
- /EXCLUDE=(file-spec[,...]), /NOEXCLUDE (default)
- The /EXCLUDE qualifier specifies files to be excluded from processing. The defragmentation process ignores files matching the listed file specifications. Any file indicated in the EXCLUDE list and in either the FREQUENT or DORMANT lists is excluded from processing.
Note
The defragmentation process always excludes system files, open files, files excluded in an options file (/OPTIONS qualifier), and files excluded using the /IGNORE qualifier.
- /FREQUENT=(file-spec[,...]), /NOFREQUENT (default)
The /FREQUENT qualifier indicates files to be considered frequently accessed when final file placement decisions are made. In order for the file to be placed frequent, it must be the file specified in the command line. Frequent files are placed toward the center of the volume.
If a file is indicated in both the FREQUENT and DORMANT lists, it is considered dormant. If a file is indicated in both the FREQUENT and EXCLUDE lists, it is excluded.Note
The amount of free space on the volume, the number of files currently being accessed, and other factors influence file placement. The Disk File Optimizer does not guarantee file placement, but makes every effort to place files as described.
- /FULL, /NOFULL (default)
The /FULL qualifier requests a full log of all actions taken by the defragmentation process. The /FULL qualifier must be used with the /LOG qualifier. The /FULL and /BRIEF qualifiers are mutually exclusive, and /NOFULL provides the same functionality as /BRIEF.
- /HOTFILE_DATABASE , /NOHOTFILE_DATABASE (default)
The /HOTFILE_DATABASE qualifier causes the defragmenter to query the appropriate hotfile database and append the list of hotfiles to the defragmenter's FREQUENT file list.
- /IGNORE=(keyword[,...]), /IGNORE=(PLACED)(default), /NOIGNORE
- The /IGNORE qualifier requests that the defragmentation process ignore certain types of files as specified by the following keywords:
INDEXED—Ignores all RMS indexed files
NOINDEXED—May defragment RMS indexed files
PLACED—Ignores all files with explicit placement flags set in their headers
NOPLACED—May defragment files with explicit placement flags
Files indicated by the /IGNORE qualifier are added to the EXCLUDE list.
The default value (/IGNORE=PLACED) indicates that files with explicit placement control should be ignored, and that RMS indexed files should be defragmented and placed in appropriate locations on the volume.
- /IO_LIMIT=n, /NOIO_LIMIT
The /IO_LIMIT qualifier specifies the maximum direct I/O rate (per second) of any one defragmentation process. If the I/O rate is exceeded, the priority for the process drops to the minimum priority as specified by the /PRIORITY qualifier or defaults to three.
- /LEVEL={n}, /LEVEL=2 (default)
- The defragmentation process selects files for defragmentation (from among those not excluded) based on the /LEVEL qualifier. Once a file is selected as a candidate, the defragmentation process attempts to fully defragment that file (make it 100 percent contiguous). Specify the level number as an integer ranging from one to five:
/LEVEL=1
Any file that is not 100 percent contiguous, or that can be selected using levels two and three, is a candidate for defragmentation.
/LEVEL=2 (default)
Any file whose extents cannot be completely mapped by the mapping window, or that can be selected using level three, is a candidate for defragmentation. The default window value is seven and can be set for a given volume using:
$ SET VOLUME {device-spec}/WINDOWS=[n]
/LEVEL=3
Any file with retrieval pointers in more than one file header is a candidate for defragmentation.
/LEVEL=4
The defragmentation process for level four processing performs only free space consolidation. This level is used with the /CONSOLIDATE_FREESPACE qualifier.
/LEVEL=5
This level requests a volume analysis only; no defragmentation occurs. The statistical results are available in the log file, which is required when /LEVEL=5 is selected (see the /LOG qualifier). If level 5 is selected, the /LEVEL=2 candidate file spec
- /LOG={file-spec}, /NOLOG (default)
The /LOG qualifier causes the defragmentation process to create a file containing a list of all its operations. The information in the log file varies with the presence of the /FULL or /BRIEF qualifiers. The /FULL qualifier lists all files analyzed by the defragmentation process and reports their status during each phase of defragmentation. The /BRIEF qualifier lists only the statistics of each phase, such as number of files analyzed and number of files defragmented.
- /OPCOM_NOTIFICATION (default), /NOOPCOM_NOTIFICATION
The /OPCOM_NOTIFICATION qualifier sends brief status and termination messages regarding defragmentation processes to OPCOM.
- /OPTIONS={file-spec}, /NOOPTIONS (default)
- The /OPTIONS qualifier provides an alternate method for associating files with the /DORMANT, /EXCLUDE, or /FREQUENT qualifiers. If the list of files for any of these qualifiers is long, you can create a separate file that contains this information. Each record in the options file consists of a file name followed by one of the following keywords:
/EXCLUDE—File to be excluded
/FREQUENT—File to be considered frequently accessed
/DORMANT—File to be considered dormant
The following example shows the contents of an options file called MYOPTFILE.OPT. This file specifies that all files on the target device called FILE1.EXE are frequent files, all files in the [ARCHIVE] directory are to be excluded, and all files in the [OLDSTUFF] directory and its subdirectories are dormant.FILE1.EXE/FREQUENT [ARCHIVE]*.*;*/EXCLUDE [OLDSTUFF...]*.*;*/DORMANT
Files indicated by the /EXCLUDE qualifier and by either the /DORMANT or /FREQUENT qualifier are excluded. Files indicated by the /DORMANT and /FREQUENT qualifiers are considered dormant. This rule is applied equally across all files specified in the /OPTIONS file, as well as those associated with these qualifiers on the command line.
- /PRIORITY=(DEFAULT=n, MINIMUM=n), /NOPRIORITY (default)
The /PRIORITY qualifier specifies priorities for the defragment process. The minimum priority setting is used when the defragmentation process exceeds the value specified by either /CPU_LIMIT or /IO_LIMIT.
- /PROLOGUE={file-name}, /NOPROLOGUE (default)
The /PROLOGUE qualifier identifies a DCL command file which DFO executes just before the Defragment operation starts.
Mounting or dismounting the disks cannot be done through the Command file specified.
Refer to Appendix B, Disk File Optimizer Logicals and Files for logicals that are available to these command procedures.
- /RVN=n, /RVN=0 (default)
When you have a bound volume set, use the /RVN qualifier to identify the relative volume number (RVN) of a specific disk (from the set) to be defragmented. The default of zero tells the Disk File Optimizer to defragment all disks in the bound volume set.
- /TIME_LIMIT={delta-time}, /NOTIME_LIMIT (default)
The /TIME_LIMIT qualifier specifies the maximum elapsed time allowed for a given defragmentation operation. If the time limit is exceeded, the defragmentation process is aborted.
Specify time as a delta time. Refer to the VSI OpenVMS User's Manual for more information on specifying times.
If the time limit is set unreasonably low, the defragmentation process may not accomplish useful defragmentation.
- /WAIT (default), /NOWAIT
The /WAIT qualifier causes the input device to wait until the defragmentation process finishes before returning control to the user.
- /WRITE_CHECK, /NOWRITE_CHECK (default)
The /WRITE_CHECK qualifier requests that a read-after-write check be performed on all defragmented or placed files. This qualifier significantly extends the execution time of a defragmentation process.
Examples
$ DEFRAGMENT FILE *.C;*
This command defragments all files with a .C extension in the current default directory. To determine the device and directory in which the files are located, issue the SHOW DEFAULT command.
DFO> DEFRAGMENT FILE *.C;*
This command defragments all files with a .C extension on the current default device and directory. The only difference between this command and the previous example is that this command is entered from within the Disk File Optimizer utility instead of from the DCL prompt.
$ DEFRAGMENT FILE SYS$LOGIN:LOGIN.COM;2/EXCLUDE=*.OLD;*
This command defragments the LOGIN.COM file and excludes all files with a .OLD extension.
DEFRAGMENT HELP
DEFRAGMENT HELP — The HELP subcommand invokes VMS Help for the Disk File Optimizer utility.
Format
DEFRAGMENT HELP
Parameters
None.
Restrictions
None.
Examples
$ DEFRAGMENT HELP
This command invokes HELP for the Disk File Optimizer utility directly from the DCL prompt.
$ HELP DEFRAGMENT
This command invokes HELP for the Disk File Optimizer utility directly from the DCL prompt.
DFO> HELP
This command invokes HELP from within the Disk File Optimizer utility.
DEFRAGMENT MONITOR
DEFRAGMENT MONITOR — The MONITOR subcommand displays the progress of ongoing defragmentation processes.
Format
DEFRAGMENT MONITOR
[ { volume-name } { /CONTINUOUS } ]Parameters
volume-name
The volume-name parameter identifies the volume whose defragmentation process you want monitored.
Description
The MONITOR subcommand provides current process statistics for the defragmentation process and information about the volume being defragmented. This information in three display windows—the process statistics display,the process activities display, and the free space display.
The process statistics display shows the following defragmentation process information (Figure 3.1, “Process Statistics Display”):
The defragmentation process ID
The defragmentation process name
The current date and time
The node on which the defragmentation process is operating
The status of the defragmentation process*
The buffered I/O count and rate of the defragmentation process*
The CPU utilization (time and usage) of the defragmentation process*
The direct I/O count and rate of the defragmentation process*
The page fault count and rate of the defragmentation process*
The current defragmentation process phase*
The elapsed time since the start of the defragmentation process
The process information marked with an asterisk (*) in the preceding list appears highlighted on the process display whenever it changes.
To access the process activities display, enter N or press the Next Screen key. The process activities display shows the following process-related information (Figure 3.2, “Process Activities Display”):
Name of current defragmentation phase
Number of files evaluated
Number of candidate files for defragmentation
Number of dormant files
Total number of placed files
Number of excluded files
Total number of indexed files
Number of frequent files
- For the file defragmentation phase:
Number of files partly defragmented
Number of files defragmented
Number of files processed
- For the file placement phase:
Number of dormant files placed
Number of frequent files placed
- For the free space consolidation phase:
Number of extents to be consolidated into free space
Number of extents left to be consolidated into free space
Current file being evaluated
To access the free space display, enter N or press the Next Screen key. The free space display shows the following device-related information (Figure 3.3, “Free Space Display”):
The cluster size of the device
The maximum LBN on the device
An approximate free space distribution map
The name of the device being defragmented
The number of free blocks on the device
The free space map represents how free space is organized on the volume being defragmented. The Y axis indicates the percentage of free space in a given LBN range; the X axis indicates the LBN range.
A fourth display of information—the message display—appears on the bottom of your screen whenever a broadcast message is received by the process executing the monitor. The message display holds the last four broadcast messages (such as mail notification) received by the process. To erase this display,enter Ctrl/W; to remove this display entirely, enter R or press the Remove key. To scroll through the broadcast messages, enter Ctrl/T. Figure 3.4, “Process Statistics Display with Message Display” shows the process statistics display with the additional message display.
Ctrl/C, Ctrl/Y, or Ctrl/Z exit the monitor.
Ctrl/W refreshes the screen and erases the message display.
N or Next Screen switches to the next display.
P or Previous Screen switches to previous display.
R or Remove removes the message display.
Ctrl/T scrolls through the broadcast messages.
Restrictions
None.
Qualifiers
- /CONTINUOUS (default), /NOCONTINUOUS
The /CONTINUOUS qualifier provides a continuous monitor display.
The /NOCONTINUOUS provides a snapshot display and then exits to the DCL prompt.
Examples
The following example shows how to invoke the monitor.
$ DEFRAGMENT MONITOR DISK$ONE/NOCONTINUOUS
In this example, the defragmentation process executing against DISK$ONE is monitored. Since the /NOCONTINUOUS qualifier was specified, the monitor function samples the defragmentation process statistics and the free space on DISK$ONE one time before exiting to the DCL prompt.
DEFRAGMENT OFFLINE_VOLUME
DEFRAGMENT OFFLINE_VOLUME — The OFFLINE_VOLUME subcommand defragments the INDEXF.SYS file on the specified offline volume according to the defragment command line qualifiers.
Format
DEFRAGMENT OFFLINE_VOLUME
[ { volume-name } { /EPILOGUE | /LOG, brief only | /OPCOM_NOTIFICATION | /PROLOGUE | /WAIT } ]Parameters
volume-name
The volume-name is the name of the volume containing the INDEXF.SYS file to be defragmented.
Description
The OFFLINE_VOLUME subcommand defragments INDEXF.SYS on the specified volume according to the selected command line qualifiers. By definition INDEXF.SYS has a minimum of four extents. The extents consist of the following:
Bootstrap block and home block
Backup home block
Backup index file header
Index file bitmap and file headers
The minimum number of extents INDEXF.SYS can have after defragmentation is five.
Before defragmenting the INDEXF.SYS file, do the following:
Defragment and consolidate free space on the disk volume. Consolidating free space on the disk volume gives DFO a place to create a new defragmented INDEXF.SYS file.
Check the free space summary to ensure there is enough free space on the disk volume to create a defragmented INDEXF.SYS. Use the following command to check the free space summary:
$ DEFRAGMENT SHOW disk_volume:/VOL
An example of the free space summary report is shown below:
Freespace Summary: Total free space: 211072 blocks Percentage free: 10 (rounded) Total free extents: 23 Maximum free extent: 53316 blocks, LBN: 671852 Minimum free extent: 4 blocks, LBN: 730360 Average free extent: 9177 blocks Median free extent: 584 blocks
If you defragment the INDEXF.SYS file without adequate free extent, the defragmentation of INDEXF.SYS could fail.
Analyze the disk volume to make sure it has no problems:
$ ANALYZE/DISK disk_name
If the disk needs to be repaired, use the following command to repair it:
$ ANALYZE/DISK/REPAIR disk_name
After defragmenting the INDEXF.SYS file, perform another ANALYZE/DISK/REPAIR.
Restrictions
This command is only valid on a disk device that is not mounted. If the device is mounted, an error occurs and the process will abort. This command cannot work on the system disk because it is always mounted.
For a bound volume set, this utility only works on the "ROOT" volume.
For disk volumes in a shadow set (single member or otherwise), the following restrictions apply:
Do not specify the virtual unit name to defragment (for example: DSAnnnn:).
Specify only one physical device name (for example: $1$DUAnnnn:).
Use the following procedure to defragment INDEXF.SYS in a shadow set:
Dismount both members of the shadow set.
- Mount one of the physical disk volumes with /OVERRIDE=SHADOW and then dismount it before doing the defragmentation. If you do not do this, you will receive the following error:
%SYSTEM-F-WRITLCK, write lock error
Defragment the INDEXF.SYS on the disk volume.
Mount the disk volume into the shadow set.
Add the disk volume that was not defragmented into the shadow set. Mounting this disk volume causes a full copy operation.
If you experience a power failure during the defragmentation of INDEXF.SYS, you may need to do the following:
Repair alternate index file header and index file bitmap by doing a ANALYZE/DISK/REPAIR.
Delete disk:[000000]DFG$DEFRAG_INDEXF.DAT.
Qualifiers
- /EPILOGUE={file-name}, /NOEPILOGUE (default)
The /EPILOGUE qualifier identifies a DCL command file which DFO executes upon completion of the DEFRAGMENT operation.
Mounting or dismounting the disks cannot be done through the Command file specified.
Refer to Appendix B, Disk File Optimizer Logicals and Files for logicals that are available to these command procedures.
- /LOG={file-spec}, /NOLOG (default)
The /LOG qualifier causes the defragmentation process to create a file containing a list of all its operations.
- /MAIL_NOTIFICATION, /NOMAIL_NOTIFICATION (default)
The /MAIL_NOTIFICATION qualifier requests that brief status and termination messages regarding defragmentation processes be mailed to the mail distribution list provided in the file DFG$MAIL_ADDRESS.
- /OPCOM_NOTIFICATION (default), /NOOPCOM_NOTIFICATION
The /OPCOM_NOTIFICATION qualifier requests that brief status and termination messages regarding defragmentation processes be sent to OPCOM.
- /PROLOGUE={file-name}, /NOPROLOGUE (default)
The /PROLOGUE qualifier identifies a DCL command file which DFO executes just before the Defragment operation starts.
Mounting or dismounting the disks cannot be done through the Command file specified.
Refer to Appendix B, Disk File Optimizer Logicals and Files for logicals that are available to these command procedures.
- /WAIT (default), /NOWAIT
The /WAIT qualifier causes the input device to wait until the defragmentation process finishes before returning control to the user.
Examples
$ DISMOUNT/CLUSTER $1$DKB100: $ MOUNT/OVER=ID $1$DKB100: $ ANALYZE/DISK_STRUCTURE $1$DKB100: $ DISMOUNT $1$DKB100: $ DEFRAGMENT OFFLINE_VOLUME $1$DKB100:/LOG=OFFLINE_DKB100.LOG $ MOUNT/OVER=ID $1$DKB100: $ ANALYZE/DISK_STRUCTURE $1$DKB100: $ DISMOUNT $1$DKB100: $ MOUNT/CLUSTER $1$DKB100: USER1
Dismount volume from the cluster
Mount volume privately to analyze disk structure
Check volume for readability and validity of Files-11 structure information
Dismount volume to defragment INDEXF.SYS
Defragment INDEXF.SYS on volume
Mount volume privately to analyze disk structure
Check volume for readability and validity of Files-11 structure information
Dismount volume
Mount volume into the cluster
DEFRAGMENT SHOW
DEFRAGMENT SHOW — The SHOW subcommand displays information about the fragmentation state of the given volume.
Format
DEFRAGMENT SHOW
[ { volume-name } { /FILE_LIST | /FREE_LIST | /HISTOGRAM | /LOCATION | /OUTPUT | /STATISTICS } ]Parameters
volume-name
The parameter for the SHOW subcommand is a volume name. The SHOW command displays information about the fragmentation state of the specified volume.
Description
A list of files with a user-selected minimum level of fragmentation
A histogram of the file fragmentation and free space fragmentation state of the volume
A list of all free space extents on the volume
Summary statistics on both file fragmentation and free space fragmentation
The location of user selected files
All information in the volume fragmentation analysis is optional. By default, only the summary statistics are provided. If the volume is mounted with the /NOWRITE qualifier, you cannot use the DEFRAGMENT SHOW command.
Restrictions
None.
Qualifiers
- /FILE_LIST=(min_extents), /FILE_LIST=(VOL_MAP_WINDOW + 1) (default)
The /FILE_LIST qualifier shows the fragmentation state of a volume. It lists all files on the volume that have min_extents or more extents (fragments). By default, the number of file window mapping pointers set for the volume (INITIALIZE{volume}/WINDOW=n) plus one is used. This value lists all files that require at least one window turn to completely map.
- /FREE_LIST, /NOFREE_LIST (default)
The /FREE_LIST qualifier shows the fragmentation state of the volume. It lists the location and size of all of the free space extents on the volume.
- /HISTOGRAM, /NOHISTOGRAM (default)
The /HISTOGRAM qualifier shows the fragmentation state of a volume. It generates two histograms. The first plots the number of files against the number of extents per file and provides information about how many files are fragmented and how badly they are fragmented. The second histogram plots the number of free space extents (holes) against the size of these free space extents. It provides information about how many free space extents are on the volume and their sizes.
- /LOCATION=(file-spec[,...]), /NOLOCATION
The /LOCATION qualifier shows the fragmentation state of the volume. It prints the extents (fragments) associated with all specified files. If no files are specified,the /LOCATION qualifier appends location information to all files listed with the /FILE_LIST qualifier. The supplied file-spec may contain wildcards in place of the directory, file name,extension, or version fields.
- /OUTPUT={file-spec}, /OUTPUT=SYS$OUTPUT (default)
The /OUTPUT qualifier may be used when showing the volume fragmentation state. It directs the output of the SHOW subcommand to a file. By default, output is directed to SYS$OUTPUT. If output is directed to a filename without extension, the file is given a default extension of .lis.
- /STATISTICS (default), /NOSTATISTICS
The /STATISTICS qualifier shows the volume fragmentation state. It provides a summary of the file and free space fragmentation for the volume. Refer to Appendix C, DEFRAGMENT SHOW Command Report for more information on this report.
Examples
$ DEFRAGMENT SHOW MY_VOLUME/OUTPUT=OUTPUT.TXT
In this example, information associated with MY_VOLUME is displayed. Output is directed to a file called OUTPUT.TXT.
Note
If output is directed to a filename without extension, the file is given a default extension of .lis.
$ DEFRAGMENT SHOW DISK$ONE/HISTOGRAM
In this example, the volume fragmentation report includes the summary statistics (/STATISTICS is default) and histograms for both file fragmentation and free space fragmentation. The report is sent to the SYS$OUTPUT device.
DEFRAGMENT SPAWN
DEFRAGMENT SPAWN — The SPAWN subcommand creates a subprocess and executes a DCL command in the subprocess, or transfers terminal control to the subprocess if no command is supplied.
Format
DEFRAGMENT SPAWN
[ { command } ]Parameters
command
This is a DCL command string of less than 132 characters that is to be executed in the context of the created subprocess. When the command completes, the subprocess terminates and control returns to the parent process. A command is optional. If no command is supplied, control passes to DCL.
Description
The SPAWN subcommand creates a subprocess of your current process.
You should use the DCL LOGOUT command to terminate the subprocess and return to the parent process. You can also use the DCL ATTACH command to transfer control of the terminal to another process in the subprocess tree, including the parent process, (the Defragment Utility).
If the DFO SPAWN command is invoked with a DCL command specified as the command parameter, that command is executed in the subprocess, and control returns immediately to the parent process.
If the command parameter is not specified,then control is passed to the created DCL subprocess until it is deleted or until an ATTACH command is issued to transfer control to another process.
Restrictions
None.
Examples
$ DEFRAGMENTDFO> SPAWN $
The SPAWN command creates a subprocess and transfers terminal control to the created subprocess. Since no particular command was entered in this example, SPAWN sends control to DCL.
DFO> SPAWN SHOW DEFAULT DISK$1:[JONES] DFO>
The SPAWN command creates a subprocess and executes the DCL command SHOW DEFAULT in the created subprocess. Control then returns to the Disk File Optimizer parent process.
DEFRAGMENT VOLUME
DEFRAGMENT VOLUME — The VOLUME subcommand defragments the volume given as a parameter on the command line according to the defragment command line qualifiers.
Format
DEFRAGMENT VOLUME
[ { volume-name } { /BRIEF | /CONSOLIDATE_FREESPACE | /CPU_LIMIT | /DORMANT | /EPILOGUE | /EXCLUDE | /FREQUENT | /FULL | /HOTFILE_DATABASE | /IGNORE | /IO_LIMIT | /LEVEL | /LOG | /OPCOM_NOTFICATION | /OPTIONS | /PRIORITY | /PROLOGUE | /RVN | /TIME_LIMIT | /WAIT | /WRITE_CHECK } ]Parameters
volume-name
The volume-name parameter is the name of the volume to be defragmented.
Description
The VOLUME subcommand defragments the specified volume according to the selected command line qualifiers. The defragmentation process begins executing immediately and executes only once.
Restrictions
The /LOG qualifier is required if /LEVEL=5 is selected.
/BRIEF and /FULL cannot be used concurrently.
Qualifiers
- /BRIEF (default), /NOBRIEF
The /BRIEF qualifier has meaning only when the /LOG qualifier is also present. The /BRIEF qualifier requests a brief log of all actions taken by the defragmentation process. This log includes beginning and ending volume status information. The /BRIEF and /FULL qualifiers are mutually exclusive, and /NOBRIEF produces the same result as /FULL. The /BRIEF qualifier is the default.
- /CONSOLIDATE_FREESPACE (default) , /NOCONSOLIDATE_FREESPACE
The /CONSOLIDATE_FREESPACE qualifier tells the Disk File Optimizer to use its free space consolidation algorithm.
- /CPU_LIMIT=n, /NOCPU_LIMIT
The /CPU_LIMIT qualifier specifies the percent of CPU resources to be used for any one defragmentation process. If this percentage is exceeded, the priority for the process drops to the minimum, as specified by the /PRIORITY qualifier, or defaults to three.
- /DORMANT=(file-spec[,...]), /NODORMANT (default)
The /DORMANT qualifier indicates files to be considered dormant when final file placement decisions are made. Dormant files are placed at the high end of the volume.
If a file is indicated in both the DORMANT and FREQUENT lists, it is considered dormant. If a file is indicated in both the EXCLUDE and DORMANT lists, it is excluded.Note
The amount of free space on the volume, the number of files currently being accessed, and other factors influence file placement. The Disk File Optimizer does not guarantee file placement, but makes every effort to place files as described.
- /EPILOGUE={file-name}, /NOEPILOGUE (default)
The /EPILOGUE qualifier identifies a DCL command file which DFO executes upon completion of the DEFRAGMENT operation.
Mounting or dismounting the disks cannot be done through the Command file specified.
Refer to Appendix B, Disk File Optimizer Logicals and Files for logicals that are available to these command procedures.
- /EXCLUDE=(file-spec[,...]), /NOEXCLUDE (default)
- The /EXCLUDE qualifier specifies files to be excluded from processing. The defragmentation process ignores files matching the listed file specifications. Any file indicated in the EXCLUDE list and in either the FREQUENT or DORMANT lists is excluded from processing.
Note
The defragmentation process always excludes system files, open files, files excluded in an options file (/OPTIONS qualifier), and files excluded using the /IGNORE qualifier.
- /FREQUENT=(file-spec[,...]), /NOFREQUENT (default)
The /FREQUENT qualifier indicates files to be considered frequently accessed when final file placement decisions are made. Frequent files are placed toward the center of the volume.
If a file is indicated in both the FREQUENT and DORMANT lists, it is considered dormant. If a file is indicated in both the FREQUENT and EXCLUDE lists, it is excluded.Note
The amount of free space on the volume, the number of files currently being accessed, and other factors influence file placement. The Disk File Optimizer does not guarantee file placement, but makes every effort to place files as described.
- /FULL, /NOFULL (default)
The /FULL qualifier requests a full log of all actions taken by the defragmentation process. The /FULL qualifier must be used with the /LOG qualifier. The /FULL and /BRIEF qualifiers are mutually exclusive, and /NOFULL provides the same functionality as /BRIEF.
- /HOTFILE_DATABASE , /NOHOTFILE_DATABASE (default)
The /HOTFILE_DATABASE qualifier causes the defragmenter to query the appropriate hotfile database and append the list of hotfiles to the defragmenter's /FREQUENT file list.
- /IGNORE=(keyword[,...]), /IGNORE=(PLACED)(default), /NOIGNORE
- The /IGNORE qualifier requests that the defragmentation process ignore certain types of files as specified by the following keywords:
INDEXED—Ignores all RMS indexed files
NOINDEXED—May defragment RMS indexed files
PLACED—Ignores all files with explicit placement flags set in their headers
NOPLACED—May defragment files with explicit placement flags
Files indicated by the /IGNORE qualifier are added to the EXCLUDE list.
The default value (/IGNORE=PLACED) indicates that files with explicit placement control should be ignored, and that RMS indexed files should be defragmented and placed in appropriate locations on the volume.
- /IO_LIMIT=n, /NOIO_LIMIT
The /IO_LIMIT qualifier specifies the maximum direct I/O rate (per second) of any one defragmentation process. If the I/O rate is exceeded, the priority for the process drops to the minimum priority as specified by the /PRIORITY qualifier or defaults to three.
- /LEVEL={n}, /LEVEL=2 (default)
- The defragmentation process selects files for defragmentation (from among those not excluded) based on the /LEVEL qualifier. Once a file is selected as a candidate, the defragmentation process attempts to fully defragment that file (make it 100 percent contiguous). Specify the level number as an integer ranging from one to five:
/LEVEL=1
Any file that is not 100 percent contiguous, or that can be selected using levels two and three, is a candidate for defragmentation.
/LEVEL=2 (default)
Any file whose extents cannot be completely mapped by the mapping window, or that can be selected using level three, is a candidate for defragmentation. The default window value is seven and can be set for a given volume using:
$ SET VOLUME {device-spec}/WINDOWS=[n]
/LEVEL=3
Any file with retrieval pointers in more than one file header is a candidate for defragmentation.
/LEVEL=4
The defragmentation process for level four processing performs only free space consolidation. This level is used with the /CONSOLIDATE_FREESPACE qualifier.
/LEVEL=5
This level requests a volume analysis only; no defragmentation occurs. The statistical results are available in the log file, which is required when /LEVEL=5 is selected (see the /LOG qualifier). If level 5 is selected, the /LEVEL=2 candidate file specifications are listed in the full log file.
- /LOG={file-spec}, /NOLOG (default)
The /LOG qualifier causes the defragmentation process to create a file containing a list of all its operations. The information in the log file varies with the presence of the /FULL or /BRIEF qualifiers. The /FULL qualifier lists all files analyzed by the defragmentation process and reports their status during each phase of defragmentation. The /BRIEF qualifier lists only the statistics of each phase, such as number of files analyzed, and number of files defragmented.
- /OPCOM_NOTIFICATION (default), /NOOPCOM_NOTIFICATION
The /OPCOM_NOTIFICATION qualifier requests that brief status and termination messages regarding defragmentation processes be sent to OPCOM.
- /OPTIONS={file-spec}, /NOOPTIONS (default)
- The /OPTIONS qualifier provides an alternate method for associating files with the /DORMANT, /EXCLUDE, or /FREQUENT qualifiers. If the list of files for any of these qualifiers is long, you can create a separate file that contains this information. Each record in the options file consists of a file name followed by one of the following keywords:
/EXCLUDE—File to be excluded
/FREQUENT—File to be considered frequently accessed
/DORMANT—File to be considered dormant
The following example shows the contents of an options file called MYOPTFILE.OPT. This file specifies that all files on the target device called FILE1.EXE are frequent files, all files in the [ARCHIVE] directory are to be excluded, and all files in the [OLDSTUFF] directory and its subdirectories are dormant.FILE1.EXE/FREQUENT [ARCHIVE]*.*;*/EXCLUDE [OLDSTUFF...]*.*;*/DORMANT
Files indicated by the /EXCLUDE qualifier and by either the /DORMANT or /FREQUENT qualifier are excluded. Files indicated by the /DORMANT and /FREQUENT qualifiers are considered dormant. This rule is applied equally across all files specified in the /OPTIONS file on the command line.
- /PRIORITY=(DEFAULT=n, MINIMUM=n), /NOPRIORITY (default)
The /PRIORITY qualifier specifies priorities for the defragment process. The minimum priority setting is used when the defragmentation process exceeds the value specified by either /CPU_LIMIT or /IO_LIMIT.
- /PROLOGUE={file-name}, /NOPROLOGUE (default)
The /PROLOGUE qualifier identifies a DCL command file which DFO executes just before the Defragment operation starts.
Mounting or dismounting the disks cannot be done through the Command file specified.
Refer to Appendix B, Disk File Optimizer Logicals and Files for logicals that are available to these command procedures.
- /RVN=n, /RVN=0 (default)
When you have a bound volume set, use this qualifier to identify a disk from the volume set or all disks in the volume set. The default of zero tells the Disk File Optimizer to defragment all disks in the bound volume set. Specify a relative volume number (RVN) to defragment a specific disk that belongs to a bound volume set.
- /TIME_LIMIT={delta-time}, /NOTIME_LIMIT (default)
The /TIME_LIMIT qualifier specifies the maximum elapsed time allowed for a given defragmentation operation. If the time limit is exceeded, the defragmentation process is aborted.
Specify time as a delta time. Refer to the VSI OpenVMS User's Manual for more information on specifying times.
If the time limit is set unreasonably low, the defragmentation process may not accomplish useful defragmentation.
- /WAIT (default), /NOWAIT
The /WAIT qualifier causes the input device to wait until the defragmentation process finishes before returning control to the user.
- /WRITE_CHECK, /NOWRITE_CHECK (default)
The /WRITE_CHECK qualifier requests that a read-after-write check be performed on all defragmented or placed files. This qualifier significantly extends the execution time of a defragmentation process.
Examples
The following example shows how to defragment a volume.
$ DEFRAGMENT VOLUME DISK$USER_1
This command defragments DISK$USER_1 using default qualifiers. The defragmentation process executes once.
Chapter 4. Using Defrag PLUS
4.1. Introduction
General guidelines for using the Defrag PLUS software
Information about storing defragmentation operation information in database scripts
Information about scheduling defragmentation operations
Defrag PLUS command reference material in a format similar to that of the VSI OpenVMS DCL Dictionary
4.2. General Guidelines
Store sets of defragmentation operations
Schedule defragmentation operations
4.2.1. DCL Interface
Disk File Optimizer commands are available from the DCL prompt or from within the Disk File Optimizer utility. When you enter a command from within the Disk File Optimizer, you do not enter the word “DEFRAGMENT” first, except for the DEFRAGMENT FILE and DEFRAGMENT VOLUME commands.
$ DEFRAGMENT FILE *.C /FULL/LOG=defrag_c.log/SCRIPT=c/AFTER=22:00 $ DEFRAGMENT MODIFY c /NOAFTER/FILES=*.OBJ $ DEFRAGMENT SHOW c $ DEFRAGMENT REMOVE c
$ DEFRAGMENT DFO> DEFRAGMENT FILE *.C /FULL/LOG=defrag_c.log/SCRIPT=c/AFTER=22:00 DFO> MODIFY c /NOAFTER/FILES=*.OBJ DFO> SHOW c DFO> REMOVE c
4.2.2. Wildcard Use
The file-spec field allows wildcard characters. You may specify wildcard characters in place of the directory name, file name, file type, or file version number field. The default file-spec for all wildcard operations is DISK:[000000...]*.*;*. Specifying *.TMP;*selects all *.TMP;* files on the entire volume.)
4.2.3. Graphic User Interface
The Disk File Optimizer graphic user interface GUI is available by entering the following command at the DCL prompt:
$ DEFRAGEMENT/INTERFACE=DECWINDOWS
You can explicitly select the character-cell interface by entering this command at the DCL prompt:
$ DEFRAGEMENT/INTERFACE=CHARACTER_CELL
4.2.4. Online Help
$ HELP DEFRAGMENT
$ DEFRAGMENT HELP
DFO> HELP
4.2.5. Quickness and Effectiveness of Defragmentation
The amount of free space on the volume.
If all other variables are constant, a volume with little free space takes longer to defragment than a volume with a lot of free space.
The number of users accessing files on the volume.
Because the defragmentation process does not impact a user's ability to read and write files, it cannot defragment a file that is being accessed. Thus a large number of user file accesses on the target volume can negatively impact the effectiveness of the defragmentation process.
User-set CPU or I/O limits.
In general, the more restrictive the limits, the longer it takes to defragment a given volume.
4.2.6. Cluster Management
By default, all DEFRAGMENT subcommands have systemwide or clusterwide scope. For example, an ABORT subcommand entered on one node of a cluster, effects all nodes. Where appropriate, you may limit the scope of a command by using the /NODE qualifier.
By specifying the node name, you limit defragmentation process creation to the specified node. Thus, the actual defragmentation work occurs on the dedicated node, leaving the other nodes in the cluster available for their usual workload. With this scheme, only one scheduler process is required. Scheduler processes are only required on the nodes that execute defragmentation processes. This scheme does not inhibit command processing in any way. DEFRAGMENT commands can be entered and processed from any node in the cluster.
Another option is to use all nodes in the cluster. This is the default for Disk File Optimizer software. By using the DEFRAGMENT SET command to set the PROCESS_LIMIT parameter, you can limit the number of concurrent defragmentation processes on a node-by-node basis. Thus, some nodes may execute any number of concurrent defragmentation processes while others may execute a limited number of concurrent defragmentation processes.
Note
If you enter a DEFRAGMENT command for a device that is currently unavailable, or unavailable from the issuing node, the Disk File Optimizer software issues a warning message indicating the device is unsuitable for defragmentation and asks if you wish to continue to input the command. If this command will not take effect until after the device is available, enter Y in response to this message and the command is entered into the database. If you enter N in response to this message, the command is not entered into the database. When the scheduler starts the script, the device must be mounted or the command will fail.
4.3. Scripts
Run immediately, after a specified time, or at defined intervals
Remain in the database for future use
Delete after running once
4.3.1. Creating and Using Scripts
Creating permanent scripts that run periodically eliminates the need for operator intervention and prevents the build-up of fragmented files on the disk. Usually, once you set up a script to run on a routine schedule, no further intervention is required. (Refer to the DEFRAGMENT START command in Section 4.6, “ Disk File Optimizer Command Set” to restart scripts after a system or node failure.)
$ DEFRAGMENT VOLUME volume-name[/QUALIFIERS]
- volume-name is the name of the target device.
- /QUALIFIERS defines the desired script characteristics.
The scheduling and defragmentation qualifiers determine when and how a script operates. For more information about the specific qualifiers for these commands, see Section 4.6, “ Disk File Optimizer Command Set”, the DEFRAGMENT SHOW or DEFRAGMENT DISABLE commands.
4.3.2. Script Naming Conventions
You may use any combination of uppercase and lowercase letters (a through Z).
You may use any number (0 through 9).
You may use the underscore (_).
You can include the dollar sign ($) within the script name, but not as the first character. (VSI reserves the dollar sign for special use.)
You may use a hyphen (-) in the script name, but do not end a script name with a hyphen because the hyphen is the DCL continuation character.
4.3.3. Examples of Creating and Using Scripts
This section includes examples of analyzing volumes, creating log files,and using the scheduling and defragmentation qualifiers to defragment volumes.
4.3.3.1. Creating Log Files
Brief
Full
Brief log files provide an abbreviated description of events that occur during a defragmentation operation. Brief log files are the default log file type.
Full log files provide an extended version of events that occur during defragmentation operations. Full log files are obtained by specifying /FULL.
$ DEFRAGMENT VOLUME DISK$ONE/LEVEL=2/LOG=DISK$ONE_ANA.LOG/FULL
Blank - file has been preprocessed for defragmentation d - file has been defragmented * - file has been partly defragmented D - file has been placed for dormant access Dd - file has been defragmented and placed dormant D* - file has been placed dormant and been partly defragmented F - file has been placed for frequent access Fd - file has been defragmented and placed frequent F* - file has been placed frequent and been partly defragmented Moved - file has been moved (number of extents unchanged) EMPTY - file was empty; no action taken FAIL - file's fragmentation cannot be reduced IN USE - new disk space for file was in use; no action taken OPEN - file was open; no action taken NOMOVE - file may not be moved; no action taken UNAVL - file was unavailable; no action taken
4.3.3.2. Showing the State of a Disk
The defragmentation software can show the current fragmentation state of a volume. The SHOW subcommand provides a variety of report options which show the level of fragmentation on a given volume.
$ DEFRAGMENT SHOW DISK$ONE/VOLUME
This command generates a fragmentation index, free space summary, and file fragmentation summary. The fragmentation index is an estimate of the level of fragmentation on the specified volume. Its value is derived from the number of files on the volume, their sizes,the number of extents in those files, and the state of the free space on the volume. The file and free space fragmentation summary provide more detail on the fragmentation index. Refer to Refer to Appendix C, DEFRAGMENT SHOW Command Report for more information on this report.
Other options available show file and free space histograms, list all free space holes, list all files with more than a given number of extents, and provide locations for specified files.
4.3.3.3. Creating a Named, Periodic Script
$ DEFRAGMENT VOLUME DISK$ONE/SCRIPT=DEFRAG_1/LEVEL=2- _$ /LOG=DEFRAG_1.LOG/INTERVAL=7-0/NODE=NODE_1
This command assigns a name of DEFRAG_1 to this script. Candidate files are selected on the basis of whether they meet LEVEL 2 file qualifications. A log file will be written to DEFRAG_1.LOG.
Additionally, because no start time was indicated, script DEFRAG_1 begins executing immediately and will execute at the same time every seventh day (/INTERVAL=7-0) thereafter.
DEFRAG_1 is restricted to execute on NODE_1 in the VAXcluster system. Finally,because no time limit was given in this command, the defragmentation process will execute until it completes.
4.3.3.4. Copying Scripts
The /INHERIT qualifier is used to copy a set of script characteristics. Using the /INHERIT qualifier, you can create new scripts, based on existing scripts.
When using the /INHERIT qualifier, a script's characteristics, such as start time (/AFTER), excluded files (/EXCLUDE), and so forth, are derived from a combination of the script given as a value to the /INHERIT qualifier and any additional command line qualifiers. To prohibit a script from inheriting a given characteristic,negate the associated command line qualifier by providing a new value. For example, to prohibit a script from inheriting the starting time of the inherited script, specify /NOAFTER or /AFTER={time-spec}.
$ DEFRAGMENT VOLUME DISK$TWO/SCRIPT=DEFRAG_2- _$ /INHERIT=DEFRAG_1/LOG=DEFRAG_2.LOG
Note
The Disk File Optimizer software will not allow two scripts to defragment the same volume at the same time.
The DEFRAG_2 script will inherit all DEFRAG_1 characteristics except the target volume, script name, and log file.
4.3.3.5. Modifying Scripts
$ DEFRAGMENT MODIFY DEFRAG_2 /FREQUENT=(*.EXE,*.C)/NOLOG
In this example, DEFRAG_2 is modified so that it has a list of frequent files and no longer produces a log file.
For additional examples of modifying scripts, see Section 4.3.3.6, “Linking and Modifying Linked Scripts”.
4.3.3.6. Linking and Modifying Linked Scripts
$ DEFRAGMENT VOLUME DISK$TWO/SCRIPT=DEFRAG_2- _$ /PREDECESSOR=DEFRAG_1/LOG=DEFRAG_2.LOG
In this case, DEFRAG_1 must complete execution before DEFRAG_2 can begin executing. If you entered another command and specified /SCRIPT=DEFRAG_3/PREDECESSOR=DEFRAG_2, then the scripts would execute in order: DEFRAG_1, DEFRAG_2, DEFRAG_3.
$ DEFRAGMENT MODIFY B /PREDECESSOR=D
When the predecessor field of a script that is part of a linked set of scripts is modified, that script is first removed from any linked set of scripts. After it is removed, the script is placed in the new linked set as indicated by the /PREDECESSOR qualifier. Thus, B is removed from its linked set of (A,B,C) and made the successor of D. Two linked sets of scripts are now present (A,C) and (D,B,E,F).
$ DEFRAGMENT MODIFY B /NOPREDECESSOR
This command removes B from its linked set of scripts. From the previous example, the linked scripts are now (A,C) and (D,E,F). Script B is no longer part of a linked set of scripts and operates according to its own scheduling characteristics.
$ DEFRAGMENT MODIFY B /PREDECESSOR=A
After executing this command, there are again two sets of linked scripts (A,B,C) and (D,E,F).
4.3.3.7. Saving Database Contents
$ DEFRAGMENT SHOW/ALL/PARAMETERS/COMMAND_LINE/OUTPUT=MY_DB_CONTENTS.COM
MY_DB_CONTENTS.COM now contains a list of valid defragment command lines that describes all the scripts and I/O, process,and CPU limits found in the database.
4.3.3.8. Re-creating the Database
$ RUN SYS$SYSTEM:DFG$CREATE_DATABASE $ RUN SYS$SYSTEM:DFG$INIT_DATABASE$ @MY_DB_CONTENTS
$ RUN SYS$SYSTEM:DFG$INIT_DATABASE $ @MY_DB_CONTENTS
Caution
Stop all scheduler processes before you initialize the database by executing SYS$MANAGER:DFG$STOP_SCHEDULER.COM on all nodes that have running schedulers. If you fail to stop the scheduler before running SYS$SYSTEM:DFG$INIT_DATABASE.EXE, the scheduler will fail and report an inconsistent database message.
4.3.4. Using Hotfiles Information
The Disk File Optimizer allows you to automatically use hotfile records from the VPA or DECps database to identify frequently accessed files. The defragmentation process automatically determines which of these products is installed on your system and queries the appropriate database. To augment the frequent files list using the hotfiles records from one of these products, use the /HOTFILE_DATABASE qualifier with the DEFRAGMENT FILE or DEFRAGMENT VOLUME command.
If you use the /HOTFILE_DATABASE qualifier, the defragmentation process first queries the appropriate database for hotfile records relating to the target volume. The files listed in the hotfile records are automatically added to the /FREQUENT file list.
Selected Scheduling |
Result |
---|---|
None selected |
Sample data over the previous 24 hours. |
/INTERVAL=X |
Sample data over the previous X time period. |
/PREDECESSOR=X |
Search through the list of predecessors. If a predecessor is found with an /INTERVAL time, use that time. If no /INTERVAL is found, use the previous 24 hours. |
Both VPA and DECps allow you to modify the hotfile collection process. If you have VPA installed, use the ADVISE /COLLECT command and /[NO]HOTFILE_QUEUE={value} qualifier. If you have DECps installed, use the ADVISE COLLECT SET command and the /[NO]HOTFILE_QUEUE={value} qualifier. See the VPA or DECps documentation for additional details.
4.3.5. Defining Quotas for the Defragmentation Process
The process quotas are values applied to the defragmentation process and then disappear when the process is complete. For more information on process quota values, refer to the VMS Authorize Utility Manual.
You can define the process quotas for defragmentation processes. When the defragmentation process starts up it selects the maximum value from the following three sources:
Hard coded values
SYSGEN process quotas (PQL_Mxxx)
DFO logical process quotas
By changing the SYSGEN process quotas or DFO logical process quotas you can define the process quotas for the defragmentation processes. The following sections describes these values and describes how to change them.
4.3.5.1. Hard coded values
You cannot change the hard coded values for the defragmentation processes but the following shows the hard coded values:
ASTLIM - 100
BIOLM - 18
BYTLM - 61440
DIOLM - 18
ENQLM - 500
FILLM - 50
JTQUOTA - (uses system default)
PGFLQUOTA - 50000
PRCLM - 8
TQELM - 10
WSDEFAULT - 512
WSEXTENT - 16000
WSQUOTA - 2048
4.3.5.2. SYSGEN Process Quotas
The SYSGEN PQL_Mxxx process quotas are defined in SYSGEN. You can change these dynamic PQL_Mxxx parameters in SYSGEN. For more information on SYSGEN process quota values, refer to the SYSGEN Generation Utility.
This list shows the PQL_Mxxx parameters that affect the defragmentation processes:
PQL_MASTLM
PQL_MBIOLM
PQL_MBYTLM
PQL_MDIOLM
PQL_MENQLM
PQL_MFILLM
PQL_MJTQUOTA
PQL_MPGFLQUOTA
PQL_MPRCLM
PQL_MTQELM
PQL_MWSDEFAULT
PQL_MWSEXTENT
PQL_MWSQUOTA
4.3.5.3. DFO Logical Process Quotas
DFO provides logicals that allow you to define the process quotas for the defragmentation process. These logicals are defined in SYS$STARTUP:DFG$STARTUP.COM. When you install DFO these logicals are commented out. By uncommenting the affected line and executing DFG$STARTUP.COM you can affect the quotas for the defragmentation processes.
$ DEFINE/SYSTEM/EXECUTIVE_MODE DFG$PGFLQUOTA 120000These rules apply to setting process quota values:
You cannot decrease a quota value below the system PQL minimum as defined by SYSGEN.
You may decrease a DFO quota value to the associated PQL_Mxxx minimum value, but this is not recommended.
$! To use these logicals, increase the associated value, uncomment the $! desired line, and execute this file. $! $! CALL DEFINE_LOGICAL DFG$ASTLM 100 $! CALL DEFINE_LOGICAL DFG$BIOLM 18 $! CALL DEFINE_LOGICAL DFG$BYTLM 61440 $! CALL DEFINE_LOGICAL DFG$DIOLM 18 $! CALL DEFINE_LOGICAL DFG$ENQLM 500 $! CALL DEFINE_LOGICAL DFG$FILLM 50 $! CALL DEFINE_LOGICAL DFG$JTQUOTA {uses system default} $ CALL DEFINE_LOGICAL DFG$PGFLQUOTA 120000 $! CALL DEFINE_LOGICAL DFG$PRCLM 8 $! CALL DEFINE_LOGICAL DFG$TQELM 10 $! CALL DEFINE_LOGICAL DFG$WSDEFAULT 512 $! CALL DEFINE_LOGICAL DFG$WSEXTENT 16000 $! CALL DEFINE_LOGICAL DFG$WSQUOTA 2048
4.3.5.4. Defining the Transfer Size Logical
The logical, DFG$TRANSFERSIZE, helps you tune the Disk File Optimizer. The definition of this logical allows you to change the amount of data that is transferred at onetime. On a volume that has files with large extents, you could wait up to 20 minutes while the system transfers these large extents before you could access the file. By defining this logical, you could access this file in less than a minute. This logical changes the impact that the Disk File Optimizer has on applications that are simultaneously accessing the same files.
This logical is set to 10,000 blocks by default. You can change it by editing SYS$STARTUP:DFG$STARTUP.COM and then executing the command procedure.
4.4. Scheduling Defragmentation Operations
Defrag PLUS allows you to execute named scripts once, every day at a specified time, on a particular date, or according to any periodic interval. You cannot, however, define a single script to run Monday at 4:00, Tuesday at 7:00, and Friday at 9:00. To do this, you would either have to modify the script daily, or create three scripts.
Schedule defragmentation during periods of low user activity. This step ensures the defragmentation process can defragment all candidate files. If a user opens a file while the defragmentation process is running, the process stops. Use VPA or DECps software to find periods of low use activity.
Schedule the defragmentation process periodically to maintain volumes in a defragmented state. This also makes the defragmentation process more effective.
Schedule defragmentation before and after user activity that may significantly contribute to fragmentation, such as end-of-month processing.
4.5. Error Recovery Procedures
Note
The LOSTEXTHDR error does not affect file access.
If a linked script is executing when a system failure occurs, you must start the successors to that script manually using the DEFRAGMENT START command. Alternately, if the linked set of scripts executes on a periodic schedule, you can wait for the next period when all the scripts in the linked set execute automatically.
4.6. Disk File Optimizer Command Set
Command |
Description |
---|---|
DEFRAGMENT ABORT {script-name[,...] | volume-name[,...]} [/QUALIFIERS...] |
Aborts the defragmentation process associated with the specified script. Before exiting, the defragmentation process performs an orderly shutdown of all outstanding activities. |
DEFRAGMENT ATTACH {process_name} [/QUALIFIERS...] |
Transfers control from the current process (which goes into hibernation) to the specified process. |
DEFRAGMENT CANCEL {script-name[,...]} [/QUALIFIERS...] |
Cancels the next scheduled execution of the specified script. Normal scheduling resumes after the next scheduled execution. |
DEFRAGMENT DISABLE {script-name[,...]} [/QUALIFIERS...] |
Disables the specified script. A script does not execute while it is disabled. The script remains disabled until it is enabled with the ENABLE subcommand. |
DEFRAGMENT ENABLE {script-name[,...]} [/QUALIFIERS...] |
Enables a previously disabled script. Once enabled, a script operates normally. |
DEFRAGMENT EXIT |
Exits the user from the Disk File Optimizer utility and returns to the system prompt. |
DEFRAGMENT FILE {file_name[,...]} [/QUALIFIERS...] |
Defragments a selected file (or files). |
DEFRAGMENT HELP {command} |
Invokes VMS HELP utility for the Disk File Optimizer software. |
DEFRAGMENT MODIFY {script-name} [/QUALIFIERS...] |
Modifies an existing script. |
DEFRAGMENT MONITOR {script-name | volume-name} [/QUALIFIERS...] |
Invokes the defragmentation monitor, which monitors an ongoing defragmentation process. The input parameter can be either a script or a volume name, depending on the setting of the /VOLUME qualifier. |
DEFRAGMENT OFFLINE_VOLUME {volume-name[,...]} [/QUALIFIERS...] |
Defragments INDEXF.SYS on the specified volume according to the selected command line qualifiers. |
DEFRAGMENT REMOVE {script-name[,...] | node-name[,...]} [/QUALIFIERS...] |
Removes the specified script or node name from the scheduling and parameter database. |
DEFRAGMENT SET {(parameter=value[,...])} [/NODE=(node[,...]]) |
Sets the specified parameters (CPU_LIMIT, IO_LIMIT, PROCESS_LIMIT) to the values specified. |
DEFRAGMENT SHOW [{script-name[,...] | {volume-name[,...]}] [/QUALIFIERS...] |
Shows the contents of the scheduling and parameter database or the fragmentation state of the supplied volumes. |
DEFRAGMENT SPAWN {command} |
Creates a subprocess and either transfers control to the subprocess or executes a DCL command from within the subprocess. |
DEFRAGMENT START {script-name[,...]} [/QUALIFIERS] |
Starts the specified script at the time specified by the /AFTER qualifier. By default, the script starts immediately. |
DEFRAGMENT VOLUME {volume_name[,...]} [/QUALIFIERS...] |
Defragments a selected volumes. The DEFRAGMENT VOLUME command creates and enters a script into the scheduling database. This script defragments the specified volume. By default, the script is immediately eligible for execution. |
4.6.1. Defrag PLUS Commands
This section provides detailed information about each command for the Defrag PLUS variant of the Disk File Optimizer software.
DEFRAGMENT ABORT
DEFRAGMENT ABORT — The ABORT subcommand terminates the execution of the script orscripts specified in the command line.
Format
DEFRAGMENT ABORT
[
{ script-name[,...] }
{ /AFTER | /ALL } ]Parameters
The script-name parameter is the name of the script to be aborted. You can use wildcards in the script-name specification. Use an asterisk (*) to take action on all scripts on the VAXcluster system; use a percent sign (%) to match a single character in the script-name specification.
Description
The ABORT subcommand terminates execution of the defragmentation process(es) associated with the scripts specified on the command line. The process is terminated in an orderly fashion. The defragmentation process completes current functions, executes housekeeping functions, and then exits, leaving the volume fully usable and accessible. If the specified script is not executing,a message indicating that the script is not executing is returned to the user.
Restrictions
You cannot use the script-name parameter with the /ALL qualifier.
Qualifiers
- /AFTER={time}, /NOAFTER (default)
The /AFTER qualifier aborts the script after the specified time.
You can specify time as either an absolute time or as a combination of absolute and delta times. For complete information on specifying time values, see the VSI OpenVMS DCL Dictionary.
- /ALL, /NOALL (default)
The /ALL qualifier aborts all currently executing scripts across the system. This qualifier is equivalent to using an asterisk (*) for the script-name parameter.
Example
$ DEFRAGMENT ABORT MY_SCRIPT/AFTER=16:30
This command aborts MY_SCRIPT after 16:30 on the day this command is submitted.
$ DEFRAGMENT ABORT/ALL
This command immediately aborts all currently executing scripts in the entire system.
DEFRAGMENT ATTACH
DEFRAGMENT ATTACH — The ATTACH subcommand transfers control from the current process (which then hibernates) to the specified process.
Format
DEFRAGMENT ATTACH
[
{ process-name }
{ /IDENTIFICATION=pid } ]Parameters
The process-name specifies the name of a process to which control transfers. The process must already exist, be part of your current job, and share the same input stream as your current process. However, the process cannot be your current process or a subprocess created with the /NOWAIT qualifier.
Process names can contain from 1 to 15 alphanumeric characters. If a connection to the specified process cannot be made, an error message is displayed.
Description
The ATTACH command allows you to connect your input stream to another process. You may use the ATTACH command to change control from one subprocess to another subprocess or to the parent process.
When you enter the ATTACH command, the parent or “source” process is put into hibernation, and your input stream is connected to the specified destination process. You may use the ATTACH command to connect to a subprocess that is part of a current job left hibernating as a result of the DCLSPAWN /WAIT command or another ATTACH command as long as the connection is valid. (No connection can be made to the current process, to a process that is not part of the current job, or to a process that does not exist. If any of these connections are attempted, an error message is displayed. )
You can also use the ATTACH command with the DCL SPAWN /WAIT command to return to a parent process without terminating the subprocess running the Disk File Optimizer software.
Restrictions
The ATTACH command cannot be used if your terminal has an associated mailbox. You cannot use the process-name parameter with the /IDENTIFICATION qualifier. You must supply either a process name or a PID for this command.
Qualifiers
- /IDENTIFICATION=pid
/IDENTIFICATION lets you specify the process identification (PID) of the process to which terminal control will be transferred. Leading zeros can be omitted.
Examples
$ DEFRAGMENT ATTACH JONES_2
This ATTACH command transfers the terminal's control to the subprocess named JONES_2.
$ DEFRAGMENT ATTACH /IDENTIFICATION=2A401A1B
This ATTACH command switches control from the current process to the process whose PID is 2A401A1B.
DEFRAGMENT CANCEL
DEFRAGMENT CANCEL — The CANCEL subcommand skips the next scheduled execution of the scripts specified in the command line.
Format
DEFRAGMENT CANCEL
[
{ script-name }
{ /ALL } ]Parameters
The script-name parameter is the name of the scripts to be canceled. You can use wildcards in the script-name specification. Use an asterisk (*) to take action on all scripts on the VAXcluster system; use a percent sign (%) to match a single character in the script-name specification.
Description
The CANCEL subcommand causes the scheduler to skip the next scheduled execution of the script specified in the command line. Normal scheduling resumes afterward.
Restrictions
The script-name parameter is not allowed if the /ALL qualifier is used.
Qualifiers
- /ALL, /NOALL (default)
The /ALL qualifier cancels the next scheduled execution of all scripts in the scheduling and parameter database.
Examples
$ DEFRAGMENT CANCEL MY_SCRIPT, YOUR_SCRIPTIn this example, the next scheduled execution of MY_SCRIPT and YOUR_SCRIPT are canceled. Afterwards, both scripts resume their normal schedule.
DEFRAGMENT DISABLE
DEFRAGMENT DISABLE — The DISABLE subcommand makes the specified script ineligible for execution. Currently executing scripts are not affected. Use the ABORT subcommand to stop currently executing scripts.
Format
DEFRAGMENT DISABLE
[
{ script-name }
{ /ALL } ]Parameters
The script-name parameter is the name of the scripts to be canceled. You can use wildcards in the script-name specification. Use an asterisk (*) to take action on all scripts on the VAXcluster system; use a percent sign (%) to match a single character in the script-name specification.
Description
The DISABLE subcommand makes the specified script ineligible for execution. The script remains disabled until reactivated using the ENABLE subcommand.
Disabling a predecessor script automatically disables any scripts that are successors.
Disabling an already disabled script has no effect; however, an informational message is issued.
Restrictions
The script-name parameter is not allowed if the /ALL qualifier is used.
Qualifiers
- /ALL, /NOALL (default)
The /ALL qualifier disables all scripts in the scheduling and parameter database.
Examples
$ DEFRAGMENT DISABLE MY_SCRIPTIn this example, MY_SCRIPT is disabled.
DEFRAGMENT ENABLE
DEFRAGMENT ENABLE — The ENABLE subcommand reactivates scripts that have been disabled.
Format
DEFRAGMENT ENABLE
[
{ script-name }
{ /ALL } ]Parameters
The script-name parameter is the name of the scripts to be canceled. You can use wildcards in the script-name specification. Use an asterisk (*) to take action on all scripts on the VAXcluster system; use a percent sign (%) to match a single character in the script-name specification.
Description
The ENABLE subcommand makes the specified script eligible for execution. The specified script remains enabled until disabled by the DISABLE subcommand.
Enabling an already enabled script has no effect; however, an informational message is issued.
The ENABLE subcommand reactivates disabled scripts including any successor/predecessor dependencies within a linked list of scripts.
Restrictions
The script-name parameter is not allowed if the /ALL qualifier is used.
Qualifiers
- /ALL, /NOALL (default)
The /ALL qualifier enables all disabled scripts in the scheduling and parameter database.
Examples
$ DEFRAGMENT ENABLE/ALL
In this example, all previously deactivated scripts are enabled. The enabled script executes according to its previously set schedule.
Enabled predecessor or successor scripts resume executing according to their link dependencies.
$ DEFRAGMENT ENABLE MY_SCRIPT
In this example, MY_SCRIPT is enabled. MY_SCRIPT starts executing according to the parameters and qualifiers assigned to it.
DEFRAGMENT EXIT
DEFRAGMENT EXIT — The EXIT subcommand exits from the Disk File Optimizer utility and returns the user to the system prompt.
Format
DEFRAGMENT EXIT
Parameters
None.
Description
The EXIT subcommand exits the user from the Disk File Optimizer utility. EXIT shuts everything down in an orderly sequence.
Restrictions
None.
Qualifiers
None.
Examples
DFO> EXIT $
This command exits from the Disk File Optimizer utility and returns the user to the DCL prompt.
DEFRAGMENT FILE
DEFRAGMENT FILE — The DEFRAGMENT FILE command defragments the files specified on the command line according to the DEFRAGMENT command line qualifiers. Use this command to defragment a small number of files. To defragment a large number of files, use the DEFRAGMENT VOLUME command.
Format
DEFRAGMENT FILE
[
{ file-spec[,...] }
{ /AFTER | /BRIEF | /CONSOLIDATE_FREESPACE | /DORMANT | /EPILOGUE | /EXCLUDE | /FREQUENT | /FULL | /HOTFILE_DATABASE | /IGNORE | /INHERIT | /INTERVAL | /LEVEL | /LOG | /MAIL_NOTIFICATION | /NODE | /OPCOM_NOTFICATION | /OPTIONS | /PREDECESSOR | /PRIORITY | /PROLOGUE | /RVN | /SCRIPT | /TIME_LIMIT | /WRITE_CHECK } ]Parameters
The file-spec parameter identifies the file or files to be defragmented. You may use wildcards for the file specification.
Description
The DEFRAGMENT FILE command defragments the specified file or files according to the selected command line qualifiers. When you specify a file name without the device and/or directory, the defragmentation software operates on files in the current directory on the current device. You must explicitly specify the device and directory name for files not in the default directory where the command is issued.
This command may be permanently added to the scheduling and parameter database as a script. If no script name is specified using the /SCRIPT qualifier, the defragmentation software generates a unique script name of the form DFG$SCRIPTX[X...], where X is a hexadecimal number. This number is chosen to keep all script names unique. Names beginning with DFG$ are reserved for use by the defragmentation software.
Once the defragmentation command line is entered in the database, it is eligible for execution according to its scheduling parameters. If no scheduling information is provided, the script begins executing immediately and executes only once.
/SCRIPT={script-name}
/INTERVAL={delta-time}
/PREDECESSOR={script-name}
Restrictions
A script that has the /CONTINUOUS qualifier may not be named as the predecessor of another script. If you specify the /INTERVAL qualifier, the /PREDECESSOR qualifier is not allowed. If /LEVEL=5 is selected, the /LOG qualifier is required. Do not use /BRIEF and /FULL concurrently.
Qualifiers
- /AFTER={time}, /AFTER={current_time}(default), /NOAFTER
The /AFTER qualifier keeps the script from executing until after the specified time.
You can specify time as either an absolute time or as a combination of absolute and delta times. For complete information on specifying time values, see the VSI OpenVMS DCL Dictionary.
The /AFTER qualifier has three states. It can be specified with a valid time, it can be omitted from the command line, or it can be negated (/NOAFTER). If /AFTER is specified with a valid time, the script is scheduled to execute after that time. If the /AFTER qualifier is omitted, the defragmentation software processes the command as if the /AFTER qualifier were specified with the current time. If /NOAFTER is specified, no starting time is associated with the script being defined. The /NOAFTER qualifier allows you to define a script without scheduling it to execute. To subsequently start the script, use the START subcommand.
- /BRIEF (default), /NOBRIEF
The /BRIEF qualifier is used only with the /LOG qualifier. The /BRIEF qualifier requests a brief log of all actions taken by the defragmentation process. This log includes beginning and ending file status information. The /BRIEF and /FULL qualifiers are mutually exclusive, and /NOBRIEF produces the same result as /FULL. The /BRIEF qualifier is the default.
- /CONSOLIDATE_FREESPACE, /NOCONSOLIDATE_FREESPACE (default)
The /CONSOLIDATE_FREESPACE qualifier tells the Disk File Optimizer to use its free space consolidation algorithm.
- /DORMANT=(file-spec[,...]), /NODORMANT (default)
The /DORMANT qualifier indicates files to be considered dormant when final file placement decisions are made. In order for the file to be placed dormant, it must be the file specified in the command line. Dormant files are placed at the high end of the volume.
If a file is indicated in both the DORMANT and FREQUENT lists, it is considered dormant. If a file is indicated in both the EXCLUDE and DORMANT lists, it is excluded.Note
The amount of free space on the volume, the number of files currently being accessed, and other factors influence file placement. The Disk File Optimizer does not guarantee file placement, but makes every effort to place files as described.
- /EPILOGUE={file-name}, /NOEPILOGUE (default)
The /EPILOGUE qualifier identifies a DCL command file which DFO executes upon completion of the DEFRAGMENT operation.
Mounting or dismounting the disks cannot be done through the Command file specified.
Refer to Appendix B, Disk File Optimizer Logicals and Files for logicals that are available to these command procedures.
- /EXCLUDE=(file-spec[,...]), /NOEXCLUDE (default)
- The /EXCLUDE qualifier specifies files to be excluded from processing. The defragmentation process ignores files matching the listed file specifications. Any file indicated in the EXCLUDE list and in either the FREQUENT or DORMANT lists is excluded from processing.
Note
The defragmentation process always excludes system files, open files, files excluded in an options file (/OPTIONS qualifier), and files excluded using the /IGNORE qualifier.
- /FREQUENT=(file-spec[,...]), /NOFREQUENT (default)
The /FREQUENT qualifier indicates files to be considered frequently accessed when final file placement decisions are made. In order for the file to be placed frequent, it must be the file specified in the command line. Frequent files are placed toward the center of the volume.
If a file is indicated in both the FREQUENT and DORMANT lists, it is considered dormant. If a file is indicated in both the FREQUENT and EXCLUDE lists, it is excluded.See Section 4.3, “Scripts” for more information.Note
The defragmentation process always excludes system files, open files, files excluded in an options file (/OPTIONS qualifier), and files excluded using the /IGNORE qualifier.
- /FULL, /NOFULL (default)
The /FULL qualifier requests a full log of all actions taken by the defragmentation process. The /FULL qualifier has no meaning if the /LOG qualifier is absent. The /FULL and /BRIEF qualifiers are mutually exclusive, and /NOFULL provides the same functionality as /BRIEF.
- /HOTFILE_DATABASE , /NOHOTFILE_DATABASE (default)
The /HOTFILE_DATABASE qualifier causes the defragmenter to query the appropriate hotfile database and append the list of hotfiles to the /FREQUENT file list.
- /IGNORE=(keyword[,...]), /IGNORE=(PLACED)(default), /NOIGNORE
- The /IGNORE qualifier requests that the defragmentation process ignore certain types of files as specified by the following keywords:
INDEXED—Ignores all RMS indexed files
NOINDEXED—May defragment RMS indexed files
PLACED—Ignores all files with explicit placement flags set in their headers
NOPLACED—May defragment files with explicit placement flags
Files indicated by the /IGNORE qualifier are added to the EXCLUDE list.
The default value (/IGNORE=PLACED) indicates that files with explicit placement control should be ignored, and that RMS indexed files should be defragmented and placed in appropriate locations on the volume.
- /INHERIT={script-name}, /NOINHERIT (default)
- The purpose of the /INHERIT qualifier is to make script creation easier. By inheriting most of the command data from a previously entered script and modifying only a few items (such as volume name), a completely new script can be created. The /INHERIT qualifier creates a database entry for a new script in the following way:
Copies all fields from the specified script to the new script.
Overwrites any qualifier or parameter values in the new script with those specified on the command line.
Names the new script as appropriate. The user may specify a script name using the /SCRIPT={script-name} qualifier. Otherwise, the defragmentation software creates a unique script name. You can use wildcards in the script-name specification. Use an asterisk (*) to take action on all scripts on the VAXcluster system; use a percent sign (%) to match a single character in the script-name specification.
- /INTERVAL={delta-time}, /NOINTERVAL (default)
The /INTERVAL qualifier executes a script at regularly scheduled intervals. The /INTERVAL qualifier specifies the minimum time between two consecutive executions of a script.
Specify time as a delta time. Refer to the VSI OpenVMS DCL Dictionary for more information on specifying times. If you do not specify a time with the /INTERVAL qualifier, a default value of 24 hours is used. This value causes the associated script to run every 24 hours.
If you specify the /AFTER qualifier with the /INTERVAL qualifier, the first defragmentation operation occurs at or after the time specified by the /AFTER qualifier; all subsequent operations execute at intervals set according to the /INTERVAL qualifier.
- /LEVEL={n}, /LEVEL=1 (default)
- The defragmentation process selects files for defragmentation (from among those not excluded) based on the /LEVEL qualifier. Once a file is selected as a candidate, the defragmentation process attempts to fully defragment that file (make it 100 percent contiguous). Specify the level number as an integer ranging from one to five:
/LEVEL=1
Any file that is not 100 percent contiguous, or that can be selected using levels two and three, is a candidate for defragmentation.
/LEVEL=2 (default)
Any file whose extents cannot be completely mapped by the mapping window, or that can be selected using level three, is a candidate for defragmentation. The default window value is seven and can be set for a given volume using:
$ SET VOLUME {device-spec}/WINDOWS=[n]
/LEVEL=3
Any file with retrieval pointers in more than one file header is a candidate for defragmentation.
/LEVEL=4
The defragmentation process for level four processing performs only free space consolidation. This level is used with the /CONSOLIDATE_FREESPACE qualifier.
/LEVEL=5
This level requests a volume analysis only; no defragmentation occurs. The statistical results are available in the log file, which is required when /LEVEL=5 is selected (see the /LOG qualifier). If level 5 is selected, the /LEVEL=2 candidate file spec
- /LOG={file-spec}, /NOLOG (default)
The /LOG qualifier causes the defragmentation process to create a file containing a list of all its operations. The information in the log file varies with the presence of the /FULL or /BRIEF qualifiers.
The /FULL qualifier lists all files analyzed by the defragmentation process and reports their status during each phase of defragmentation.
The /BRIEF qualifier lists only the statistics of each phase,such as number of files analyzed and number of files defragmented.
- /MAIL_NOTIFICATION, /NOMAIL_NOTIFICATION (default)
The /MAIL_NOTIFICATION qualifier requests that brief status and termination messages regarding defragmentation processes be mailed to the distribution list provided in the file DFG$MAIL_ADDRESS.
- /NODE=(node-name[,...]), /NONODE (default)
The /NODE qualifier limits the scope of the DEFRAGMENT command to the node or set of nodes specified by /NODE=(node-name). By default, defragmentation processes may execute on any LMF licensed node in the system.
- /OPCOM_NOTIFICATION (default), /NOOPCOM_NOTIFICATION
The /OPCOM_NOTIFICATION qualifier requests that brief status and termination messages regarding defragmentation processes be sent to OPCOM.
- /OPTIONS={file-spec}, /NOOPTIONS (default)
- The /OPTIONS qualifier provides an alternate method for associating files with the /DORMANT, /EXCLUDE, or /FREQUENT qualifiers. If the list of files for any of these qualifiers is long, you can create a separate file for this information. Each record in the options file consists of a file name followed by one of the following keywords:
/EXCLUDE—File to be excluded
/FREQUENT—File to be considered frequently accessed
/DORMANT—File to be considered dormant
The following example shows the contents of an options file called MYOPTFILE.OPT. This file specifies that all files on the target device called FILE1.EXE are frequent files, all files in the [ARCHIVE] directory are to be excluded, and all files in the [OLDSTUFF] directory and its subdirectories are dormant.FILE1.EXE/FREQUENT [ARCHIVE]*.*;*/EXCLUDE [OLDSTUFF...]*.*;*/DORMANT
Files indicated by the /EXCLUDE qualifier and by either the /DORMANT or /FREQUENT qualifier are excluded. Files indicated by the /DORMANT qualifier and by the /FREQUENT qualifier are considered dormant. This rule is applied equally across all files specified in the /OPTIONS file, as well as those associated with these qualifiers on the command line.
- /PREDECESSOR={script-name}, /NOPREDECESSOR (default)
The /PREDECESSOR qualifier links scripts. These scripts execute in sequence; one successfully completes before the next one begins.
The predecessor script name must exist in the scheduling database or an error status message is returned. You can use wildcards in the script-name specification. Use an asterisk (*) to take action on all scripts on the VAXcluster system; use a percent sign (%) to match a single character in the script-name specification.
- /PRIORITY=(DEFAULT=n, MINIMUM=n), /NOPRIORITY (default)
The /PRIORITY qualifier specifies priorities for the defragment process. The minimum priority setting is used when the defragmentation process exceeds the value specified by either /CPU_LIMIT or /IO_LIMIT.
- /PROLOGUE={file-name}, /NOPROLOGUE (default)
The /PROLOGUE qualifier identifies a DCL command file which DFO executes just before the Defragment operation starts.
Mounting or dismounting the disks cannot be done through the Command file specified.
Refer to Appendix B, Disk File Optimizer Logicals and Files for logicals that are available to these command procedures.
- /RVN=n, /RVN=0 (default)
When you have a bound volume set, use this qualifier to identify a disk from the volume set or all disks in the volume set. The default of zero tells the Disk File Optimizer to defragment all disks in the bound volume set. Specify a relative volume number (RVN) to defragment a specific disk that belongs to a bound volume set.
- /SCRIPT={script-name}, /NOSCRIPT (default)
The /SCRIPT qualifier assigns a user-supplied name to a script. If a duplicate script-name is selected, defragmentation software issues a duplicate script name error message and does not enter the new script into the database—no defragmentation takes place.
A script name may be up to 64 characters in length and may contain any of the following characters:Any alphanumeric character
Underscore ( _ )
Hyphen ( - )
Dollar sign ( $ )
Observe the following rules when naming a script:You may use any combination of uppercase and lowercase letters.
DO not begin script names using the dollar sign. However, you can include the dollar sign within the script name. (The dollar sign is reserved for special use by VSI.)
Do not end a script name with a hyphen, since the hyphen is the DCL continuation character.
- /TIME_LIMIT={delta-time}, /NOTIME_LIMIT (default)
The /TIME_LIMIT qualifier specifies the maximum elapsed time allowed for a given defragmentation operation. If the time limit is exceeded, the defragmentation process is aborted.
Specify time as a delta time. Refer to the VSI OpenVMS User's Manual for more information on specifying times.
For linked scripts, the time limit of the first script applies to the whole set. Time limits specified with successor scripts apply to these scripts only.
If the time limit is set unreasonably low, the defragmentation process may not accomplish useful defragmentation.
- /WRITE_CHECK, /NOWRITE_CHECK (default)
The /WRITE_CHECK qualifier requests that a read-after-write check be performed on all defragmented or placed files. This qualifier significantly extends the execution time of a defragmentation process.
Examples
$ DEFRAGMENT FILE *.C;*
This command defragments all files with a .C extension in the user's current default directory. To determine the device and directory in which the files are located, issue the SHOW DEFAULT command.
DFO> DEFRAGMENT FILE *.C;*
This command defragments all files with a .C extension on the user's current default device. The only difference between this command and the previous example is that this command is entered from within the Disk File Optimizer utility instead of from the DCL prompt.
$ DEFRAGMENT FILE SYS$SYSDEVICE:[000000...]*.C
This command is the same as the previous one, except that the RMS default string is now explicitly identified as SYS$SYSDEVICE:[000000...]*.C;*.
$ DEFRAGMENT FILE SYS$LOGIN:LOGIN.COM;2/EXCLUDE=*.OLD;*
This command defragments the user's LOGIN.COM file and excludes all files with a .OLD extension.
$ DEFRAGMENT FILE/INHERIT=OTHER_FILE_SCRIPT.NOAFTER
This commands creates a file script identical to the OTHER_FILE_SCRIPT and allows the Disk File Optimizer to name it (DFG$XXX).
$ DEFRAGMENT FILE SYS$SYSTEM:[000000...]*.RDB/INHERIT=X/SCRIPT=Y
This command creates a script called Y. Other script characteristics, such as logfile, are inherited from script X.
DEFRAGMENT HELP
DEFRAGMENT HELP — The HELP subcommand invokes VMS Help for the Disk File Optimizer utility.
Format
DEFRAGMENT HELP
Parameters
None.
Description
$ HELP DEFRAGMENT
$ DEFRAGMENT HELP
Restrictions
None.
Qualifiers
None.
Examples
$ DEFRAGMENT HELP
This command invokes HELP for the Disk File Optimizer utility directly from DCL.
$ HELP DEFRAGMENT
This command invokes HELP for the Disk File Optimizer utility directly from DCL.
DFO> HELP
This command invokes HELP from within the Disk File Optimizer utility.
DEFRAGMENT MODIFY
DEFRAGMENT MODIFY — The MODIFY subcommand allows you to change the qualifiers associated with a particular script.
Format
DEFRAGMENT MODIFY
[
{ script-name }
{ /AFTER | /BRIEF | /CONSOLIDATE_FREESPACE | /CONTINUOUS | /DORMANT | /EPILOGUE | /EXCLUDE | /FILES | /FREQUENT | /FULL | /HOTFILE_DATABASE | /IGNORE | /INTERVAL | /LEVEL | /LOG | /MAIL_NOTIFICATION | /NODE | /OPCOM_NOTFICATION | /OPTIONS | /PREDECESSOR | /PRIORITY | /PROLOGUE | /RVN | /SCRIPT | /TIME_LIMIT | /VOLUME | /WRITE_CHECK } ]Parameters
The script-name parameter identifies the script to modify. You can use wildcards in the script-name specification. Use an asterisk (*) to take action on all scripts on the VAXcluster system; use a percent sign (%) to match a single character in the script-name specification.
Description
The MODIFY subcommand modifies specified portions of an existing script. This is easier than using the INHERIT subcommand to do similar things.
Restrictions
A script that has the /CONTINUOUS qualifier may not be named as the predecessor of another script. If you specify the /INTERVAL qualifier, the /PREDECESSOR qualifier is not allowed. If /LEVEL=5 is selected, the /LOG qualifier is required. Do not use /BRIEF and /FULL concurrently. Do not use /CONTINUOUS and /INTERVAL for a script.
Qualifiers
- /AFTER={time}, /AFTER={current_time}(default), /NOAFTER
The /AFTER qualifier keeps the script from executing until after the specified time.
You can specify time as either an absolute time or as a combination of absolute and delta times. For complete information on specifying time values, see the VSI OpenVMS User's Manual.
The /AFTER qualifier has three states. It can be specified with a valid time, it can be omitted from the command line, or it can be negated (/NOAFTER). If /AFTER is specified with a valid time, the script is scheduled to execute after that time. If the /AFTER qualifier is omitted, the defragmentation software processes the command as if the /AFTER qualifier were specified with the current time. If /NOAFTER is specified, no starting time is associated with the script being defined. The /NOAFTER qualifier allows you to define a script without scheduling it to execute. To subsequently start the script, use the START subcommand.
- /BRIEF (default), /NOBRIEF
The /BRIEF qualifier may only be used when the /LOG qualifier is also present. The /BRIEF qualifier requests a brief log of all actions taken by the defragmentation process. This log includes beginning and ending volume status information. The /BRIEF and /FULL qualifiers are mutually exclusive, and /NOBRIEF produces the same result as /FULL. The /BRIEF qualifier is the default.
- /CONSOLIDATE_FREESPACE, /NOCONSOLIDATE_FREESPACE (default)
The /CONSOLIDATE_FREESPACE qualifier tells the Disk File Optimizer to use its free space consolidation algorithm.
- /CONTINUOUS, /NOCONTINUOUS (default)
The /CONTINUOUS qualifier causes the script to execute repeatedly. After each successful defragmentation operation, the script becomes eligible for execution again. As long as any PROCESS_LIMITs (see the SET subcommand) are not violated, the script executes repeatedly. If all PROCESS_LIMITs have been reached, the script is queued until an outstanding defragmentation process completes, then the script is allowed to execute.
By default, the defragmentation process associated with a script may execute on any appropriately licensed node in a cluster. Thus, successive defragmentation processes do not necessarily execute on the same node.
- /DORMANT=(file-spec[,...]), /NODORMANT (default)
The /DORMANT qualifier indicates files to be considered dormant when final file placement decisions are made. Dormant files are placed at the high end of the volume.
If a file is indicated in both the DORMANT and FREQUENT lists, it is considered dormant. If a file is indicated in both the EXCLUDE and DORMANT lists, it is excluded.Note
The amount of free space on the volume, the number of files currently being accessed, and other factors influence file placement. The Disk File Optimizer does not guarantee file placement, but makes every effort to place files as described.
- /EPILOGUE={file-name}, /NOEPILOGUE (default)
The /EPILOGUE qualifier identifies a DCL command file which DFO executes upon completion of the DEFRAGMENT operation.
Mounting or dismounting the disks cannot be done through the Command file specified.
Refer to Appendix B, Disk File Optimizer Logicals and Files for logicals that are available to these command procedures.
- /EXCLUDE=(file-spec[,...]), /NOEXCLUDE (default)
- The /EXCLUDE qualifier specifies files to be excluded from processing. The defragmentation process ignores files matching the listed file specifications. Any file indicated in the EXCLUDE list and in either the FREQUENT or DORMANT lists is excluded from processing.
Note
The defragmentation process always excludes system files, open files, files excluded in an options file (/OPTIONS qualifier), and files excluded using the /IGNORE qualifier.
- /FILES=(file-spec[,...])
The /FILES qualifier modifies the list of files to be defragmented.
- /FREQUENT=(file-spec[,...]), /NOFREQUENT (default)
The /FREQUENT qualifier indicates files to be considered frequently accessed when final file placement decisions are made. Frequent files are placed toward the center of the volume.
If a file is indicated in both the FREQUENT and DORMANT lists, it is considered dormant. If a file is indicated in both the FREQUENT and EXCLUDE lists, it is excluded.See Section 4.3, “Scripts” for more information.Note
The amount of free space on the volume, the number of files currently being accessed, and other factors influence file placement. The Disk File Optimizer does not guarantee file placement, but makes every effort to place files as described.
- /FULL, /NOFULL (default)
The /FULL qualifier requests a full log of all actions taken by the defragmentation process. The /FULL qualifier has no meaning if the /LOG qualifier is absent. The /FULL and /BRIEF qualifiers are mutually exclusive, and /NOFULL provides the same functionality as /BRIEF.
- /HOTFILE_DATABASE , /NOHOTFILE_DATABASE (default)
The /HOTFILE_DATABASE qualifier causes the defragmenter to query the appropriate hotfile database and append the list of hotfiles to the defragmenter's /FREQUENT file list.
- /IGNORE=(keyword[,...]), /IGNORE=(PLACED)(default), /NOIGNORE
- The /IGNORE qualifier requests that the defragmentation process ignore certain types of files as specified by the following keywords:
INDEXED—Ignores all RMS indexed files
NOINDEXED—May defragment RMS indexed files
PLACED—Ignores all files with explicit placement flags set in their headers
NOPLACED—May defragment files with explicit placement flags
Files indicated by the /IGNORE qualifier are added to the EXCLUDE list.
The default value (/IGNORE=PLACED) indicates that files with explicit placement control should be ignored, and that RMS indexed files should be defragmented and placed in appropriate locations on the volume.
- /INTERVAL={delta-time}, /NOINTERVAL (default)
Causes a script to execute at regularly scheduled intervals. The /INTERVAL qualifier specifies the minimum time between two consecutive executions of a script.
Specify time as a delta time. Refer to the VSI OpenVMS User's Manual for more information on specifying times. If you do not specify a time with the /INTERVAL qualifier, a default value of 1 day is used. This value causes the associated script to run every 24 hours.
If you specify the /AFTER qualifier with the /INTERVAL qualifier, the first defragmentation operation occurs at or after the time specified by the /AFTER qualifier; all subsequent operations execute at intervals set according to the /INTERVAL qualifier.
- /LEVEL={n}, /LEVEL=2 (default)
- The defragmentation process selects files for defragmentation (from among those not excluded) based on the /LEVEL qualifier. Once a file is selected as a candidate, the defragmentation process attempts to fully defragment that file (make it 100 percent contiguous). Specify the level number as an integer ranging from one to five:
/LEVEL=1
Any file that is not 100 percent contiguous, or that can be selected using levels two and three, is a candidate for defragmentation.
/LEVEL=2 (default)
Any file whose extents cannot be completely mapped by the mapping window, or that can be selected using level three, is a candidate for defragmentation. The default window value is seven and can be set for a given volume using:
$ SET VOLUME {device-spec}/WINDOWS=[n]
/LEVEL=3
Any file with retrieval pointers in more than one file header is a candidate for defragmentation.
/LEVEL=4
The defragmentation process for level four processing performs only free space consolidation. This level is used with the /CONSOLIDATE_FREESPACE qualifier.
/LEVEL=5
This level requests a volume analysis only; no defragmentation occurs. The statistical results are available in the log file, which is required when /LEVEL=5 is selected (see the /LOG qualifier). If level 5 is selected, the /LEVEL=2 candidate file spec
- /LOG={file-spec}, /NOLOG (default)
The /LOG qualifier causes the defragmentation process to create a file containing a list of all its operations. The information in the log file varies with the presence of the /FULL or /BRIEF qualifiers. The /FULL qualifier lists all files analyzed by the defragmentation process and reports their disposition during each phase of defragmentation. The /BRIEF qualifier lists only the statistics of each phase, such as number of files analyzed, and number of files defragmented.
- /MAIL_NOTIFICATION, /NOMAIL_NOTIFICATION (default)
The /MAIL_NOTIFICATION qualifier requests that brief status and termination messages regarding defragmentation processes be mailed to the mail distribution list provided in the file DFG$MAIL_ADDRESS.
- /NODE=(node-name[,...]), /NONODE (default)
The /NODE qualifier limits the scope of the DEFRAGMENT command to the node or set of nodes specified by /NODE=(node-name). By default, defragmentation processes may execute on any LMF licensed node in the system.
- /OPCOM_NOTIFICATION (default), /NOOPCOM_NOTIFICATION
The /OPCOM_NOTIFICATION qualifier requests that brief status and termination messages regarding defragmentation processes be sent to OPCOM.
- /OPTIONS={file-spec}, /NOOPTIONS (default)
- The /OPTIONS qualifier provides an alternate method for associating files with the /DORMANT, /EXCLUDE, or /FREQUENT qualifiers. If the list of files for any of these qualifiers is long, you can create a separate file for this information. Each record in the options file consists of a file name followed by one of the following keywords:
/EXCLUDE—File to be excluded
/FREQUENT—File to be considered frequently accessed
/DORMANT—File to be considered dormant
The following example shows the contents of an options file called MYOPTFILE.OPT. This file specifies that all files on the target device called FILE1.EXE are frequent files, all files in the [ARCHIVE] directory are to be excluded, and all files in the [OLDSTUFF] directory and its subdirectories are dormant.FILE1.EXE/FREQUENT[ARCHIVE]*.*;*/EXCLUDE[OLDSTUFF...]*.*;*/DORMANT
Files indicated by the /EXCLUDE qualifier and by either the /DORMANT or /FREQUENT qualifier are excluded. Files indicated by the /DORMANT qualifier and by the /FREQUENT qualifier are considered dormant. This rule is applied equally across all files specified in the /OPTIONS file, as well as those associated with these qualifiers on the command line.
- /PREDECESSOR={script-name}, /NOPREDECESSOR (default)
The /PREDECESSOR qualifier identifies the name of the script that precedes the execution of this script in a linked set of scripts. These scripts execute in sequence; one successfully completes before the next one begins.
The predecessor script name must exist in the scheduling database or an error status message is returned. You can use wildcards in the script-name specification. Use an asterisk (*) to take action on all scripts on the VAXcluster system; use a percent sign (%) to match a single character in the script-name specification.
- /PRIORITY=(DEFAULT=n, MINIMUM=n), /NOPRIORITY (default)
The /PRIORITY qualifier specifies priorities for the defragment process. The minimum priority setting is used when the defragmentation process exceeds the value specified by either /CPU_LIMIT or /IO_LIMIT.
- /PROLOGUE={file-name}, /NOPROLOGUE (default)
The /PROLOGUE qualifier identifies a DCL command file which DFO executes just before the Defragment operation starts.
Mounting or dismounting the disks cannot be done through the Command file specified.
Refer to Appendix B, Disk File Optimizer Logicals and Files for logicals that are available to these command procedures.
- /RVN=n, /RVN=0 (default)
When you have a bound volume set, use this qualifier to identify a disk from the volume set or all disks in the volume set. The default of zero tells the Disk File Optimizer to defragment all disks in the bound volume set. Specify a relative volume number (RVN) to defragment a specific disk that belongs to a bound volume set.
- /SCRIPT={script-name}, /NOSCRIPT (default)
The /SCRIPT qualifier assigns a new name to a script. If a duplicate script-name is selected, defragmentation software issues a duplicate script name error message and does not enter the new script into the database—no defragmentation takes place.
A script name may be up to 64 characters in length and may contain any of the following characters:Any alphanumeric character
Underscore ( _ )
Hyphen ( - )
Dollar sign ( $ )
Observe the following rules when naming a script:Use any combination of uppercase and lowercase letters.
Do not begin script names using the dollar sign. However, you can include the dollar sign within the script name. (The dollar sign is reserved for special use by VSI.)
Do not end a script name with a hyphen, since the hyphen is the DCL continuation character.
The VSI OpenVMS User's Manual contains more information on naming conventions.
- /TIME_LIMIT={delta-time}, /NOTIME_LIMIT (default)
The /TIME_LIMIT qualifier specifies the maximum elapsed time allowed for a given defragmentation operation. If the time limit is exceeded, the defragmentation process is aborted.
Specify time as a delta time. Refer to the VSI OpenVMS User's Manual for more information on specifying times.
For linked scripts, the time limit of the first script applies to the whole set. Time limits specified with successor scripts apply to these scripts only.
If the time limit is set unreasonably low, the defragmentation process may not accomplish useful defragmentation.
- /VOLUME={volume-name}, /NOVOLUME (default)
Identifies the volume where the files reside.
- /WRITE_CHECK, /NOWRITE_CHECK (default)
The /WRITE_CHECK qualifier requests that a read-after-write check be performed on all defragmented or placed files. This qualifier significantly extends the execution time of a defragmentation process.
Examples
$ DEFRAGMENT MODIFY C/SCRIPT=A
This command changes the name of script C to A.
$ DEFRAGMENT MODIFY */MAIL_NOTIFICATION
This command turns on mail notification for all scripts in the database.
$ DEFRAGMENT MODIFY myscript/LOG=new_log/NOPREDECESSOR
This command causes subsequent executions of myscript to generate a log file called NEW_LOG.LOG, located in the user's default directory. The NOPREDECESSOR qualifier disassociates myscript from its predecessor. However, any script for which myscript is a predecessor remains dependent upon the execution of myscript.
$ DEFRAGMENT MODIFY *C/SCRIPT=*D
This command changes the name of each script that ends in C to end in D. For instance, DAILYC becomes DAILYCD.
DEFRAGMENT MONITOR
DEFRAGMENT MONITOR — The MONITOR subcommand displays the progress of an ongoing defragmentation processes on a terminal.
Format
DEFRAGMENT MONITOR
[
{ script-name|volume-name }
{ /CONTINUOUS | /VOLUME } ]Parameters
The parameter for the MONITOR subcommand is either a script name or a volume name for Defrag PLUS. You can use wildcards in the script-name specification. Use an asterisk (*) to take action on all scripts on the VAXcluster system; use a percent sign (%) to match a single character in the script-name specification.
If a volume name is supplied, then you must use the /VOLUME qualifier to tell Defrag PLUS the parameter is a volume name, rather than a script name.
Description
The MONITOR subcommand provides current process statistics for the defragmentation process and information about the volume being defragmented. The monitor displays this information on three window displays—the process statistics display, the process activities display, and the free space display.
The process statistics display shows the following defragmentation process information (Figure 4.1, “Process Statistics Display”):
The defragmentation process ID
The defragmentation process name
The current date and time
The name of the script being monitored
The node on which the defragmentation process is operating
The status of the defragmentation process*
The buffered I/O count and rate of the defragmentation process*
The CPU utilization (time and usage) of the defragmentation process*
The direct I/O count and rate of the defragmentation process*
The page fault count and rate of the defragmentation process*
The current defragmentation process phase*
The elapsed time since the start of the defragmentation process
The process information marked with an asterisk (*) in the preceding list appears highlighted on the process display whenever it changes.
To access the process activities display, enter N or press the Next Screen key. The process activities display shows the following process-related information (Figure 4.2, “Process Activities Display”):
Name of current defragmentation phase
Number of files evaluated
Number of candidate files for defragmentation
Number of dormant files
Total number of placed files
Number of excluded files
Total number of indexed files
Number of frequent files
- For the file defragmentation phase:
Number of files partly defragmented
Number of files defragmented
Number of files processed
- For the file placement phase:
Number of dormant files placed
Number of frequent files placed
- For the free space consolidation phase:
Number of extents to be consolidated into free space
Number of extents left to be consolidated into free space
Current file being evaluated
To access the free space display, enter N or press the NextScreen key. The free space display shows the following device-related information (Figure 4.3, “Free Space Display”):
An approximate free space distribution map*
The name of the device being defragmented*
The number of free blocks on the device*
The cluster size of the device
The maximum LBN on the device
The device information marked with an asterisk (*) in the preceding list appears highlighted on the device display whenever it changes.
The free space map represents how free space is organized on the volume being defragmented. The Y axis indicates the percentage of free space in a given LBN range; the X axis indicates the LBN range.
A fourth display of information—the message display—appears on the bottom of your screen whenever a broadcast message is received by the process executing the monitor. The message display holds the last four broadcast messages (such as mail notification) received by the process. To erase this display, enter Ctrl/W; to remove this display entirely, enter R or press the Remove key. To scroll through the broadcast messages, enter Ctrl/T. Figure 4.4, “Process Statistics Display with Message Display” shows the process statistics display with the additional message display.
Ctrl/C, Ctrl/Y, or Ctrl/Z exit the monitor.
Ctrl/W refreshes the screen and erases the message display.
N or Next Screen switches to the next display.
P or Previous Screen switches to previous display.
R or Remove removes the message display.
Ctrl/T scrolls through the broadcast messages.
Restrictions
If a volume name is entered as a parameter, the /VOLUME qualifier must be used.
Qualifiers
- /CONTINUOUS (default), /NOCONTINUOUS
The /CONTINUOUS qualifier invokes a continuous monitor display. Entering Ctrl/C, Ctrl/Y, or Ctrl/Z terminates this display.
Using /NOCONTINUOUS provides a snapshot display and then returns to the DCL prompt.
- /VOLUME (default), /NOVOLUME
The /VOLUME qualifier indicates that a volume name instead of a script name is present on the command line. The /VOLUME qualifier must be used when a volume name is provided as a parameter to the MONITOR subcommand.
Examples
$ DEFRAGMENT MONITOR MY_SCRIPT/NOVOLUME
In this example, the monitor function displays ongoing run-time statistics for the defragmentation process associated with MY_SCRIPT. It also displays an approximate free-space map of the target volume. The display continues until interrupted with a Ctrl/C, Ctrl/Y, or Ctrl/Z because the /CONTINUOUS qualifier is present by default.
$ DEFRAGMENT MONITOR DISK$ONE/NOCONTINUOUS
In this example, the defragmentation process executing against DISK$ONE is monitored. Since the /NOCONTINUOUS qualifier was specified, the monitor function samples the defragmentation process statistics and the free space on DISK$ONE one time before exiting to the DCL prompt.
DEFRAGMENT OFFLINE_VOLUME
DEFRAGMENT OFFLINE_VOLUME — The DEFRAGMENT OFFLINE_VOLUME command defragments the INDEXF.SYS file on the offline volume given as a parameter to the command line according to the defragment command line qualifiers.
Format
DEFRAGMENT OFFLINE_VOLUME
[
{ volume-name }
{ /AFTER | /EPILOGUE | /INTERVAL | /LOG, brief only | /MAIL_NOTIFICATION | /NODE | /OPCOM_NOTIFICATION | /PROLOGUE | /SCRIPT } ]Parameters
The volume-name is the name of the volume containing the INDEXF.SYS file to be defragmented.
Description
The OFFLINE_VOLUME subcommand defragments INDEXF.SYS on the specified volume according to the selected command line qualifiers. By definition INDEXF.SYS has a minimum of four extents. The extents consist of the following:
Bootstrap block and home block
Backup home block
Backup index file header
Index file bitmap and file headers
The minimum number of extents INDEXF.SYS can have after defragmentation is five.
Before defragmenting the INDEXF.SYS file, do the following:
Defragment and consolidate free space on the disk volume. Consolidating free space on the disk volume gives DFO a place to create a new defragmented INDEXF.SYS file.
Check the free space summary to ensure there is enough free space on the disk volume to create a defragmented INDEXF.SYS. Use the following command to check the free space summary:
$ DEFRAGMENT SHOW disk_volume:/VOL
An example of the free space summary report is shown below:
Freespace Summary: Total free space: 211072 blocks Percentage free: 10 (rounded) Total free extents: 23 Maximum free extent: 53316 blocks, LBN: 671852 Minimum free extent: 4 blocks, LBN: 730360 Average free extent: 9177 blocks Median free extent: 584 blocks
If you defragment the INDEXF.SYS file without adequate free extent, the defragmentation of INDEXF.SYS could fail.
Analyze the disk volume to make sure it has no problems:
$ ANALYZE/DISK disk_name
If the disk needs to be repaired, use the following command to repair it:
$ ANALYZE/DISK/REPAIR disk_name
After defragmenting the INDEXF.SYS file, perform another ANALYZE/DISK/REPAIR.
This command may be permanently added to the scheduling and parameter database as a script. If no script name is specified using the /SCRIPT qualifier, the defragmentation software generates a unique script name.
Once the defragmentation command line is entered in the database, it is eligible for execution according to its scheduling parameters. If no scheduling information is provided, the script begins executing immediately and executes only once.
- /SCRIPT = {script name }
- /INTERVAL = {delta time }
Restrictions
This command is only valid on a disk device that is not mounted. If the device is mounted, an error occurs and the process will abort. This command cannot work on the system disk because it is always mounted.
For a bound volume set, this utility only works on the "ROOT" volume.
For disk volumes in a shadow set (single member or otherwise), the following restrictions apply:
Do not specify the virtual unit name to defragment (for example: DSAnnnn:).
Specify only one physical device name (for example: $1$DUAnnnn:).
Use the following procedure to defragment INDEXF.SYS in a shadow set:
Dismount both members of the shadow set.
- Mount one of the physical disk volumes with /OVERRIDE=SHADOW and then dismount it before doing the defragmentation. If you do not do this, you will receive the following error:
%SYSTEM-F-WRITLCK, write lock error
Defragment the INDEXF.SYS on the disk volume.
Mount the disk volume into the shadow set.
Add the disk volume that was not defragmented into the shadow set. Mounting this disk volume causes a full copy operation.
If you experience a power failure during the defragmentation of INDEXF.SYS, you may need to do the following:
Repair alternate index file header and index file bitmap by doing a ANALYZE/DISK/REPAIR.
Delete disk:[000000]DFG$DEFRAG_INDEXF.DAT.
Qualifiers
- /AFTER={time}, /AFTER={current_time}(default), /NOAFTER
The /AFTER qualifier keeps the script from executing until after the specified time.
You can specify time as either an absolute time or as a combination of absolute and delta times. For complete information on specifying time values, see the VSI OpenVMS User's Manual.
The /AFTER qualifier has three states. It can be specified with a valid time, it can be omitted from the command line, or it can be negated (/NOAFTER). If /AFTER is specified with a valid time, the script is scheduled to execute after that time. If the /AFTER qualifier is omitted, the defragmentation software processes the command as if the /AFTER qualifier were specified with the current time. If /NOAFTER is specified, no starting time is associated with the script being defined. The /NOAFTER qualifier allows you to define a script without scheduling it to execute. To subsequently start the script, use the START subcommand.
- /EPILOGUE={file-name}, /NOEPILOGUE (default)
The /EPILOGUE qualifier identifies a DCL command file which DFO executes upon completion of the DEFRAGMENT operation.
Mounting or dismounting the disks cannot be done through the Command file specified.
Refer to Appendix B, Disk File Optimizer Logicals and Files for logicals that are available to these command procedures.
- /INTERVAL={delta-time}, /NOINTERVAL (default)
The /INTERVAL qualifier executes a script at regularly scheduled intervals. The /INTERVAL qualifier specifies the minimum time between two consecutive executions of a script.
Specify time as a delta time. Refer to the VSI OpenVMS User's Manual for more information on specifying times. If you do not specify a time with the /INTERVAL qualifier, a default value of 1 day is used. This value causes the associated script to run every 24 hours.
If you specify the /AFTER qualifier with the /INTERVAL qualifier, the first defragmentation operation occurs at or after the time specified by the /AFTER qualifier; all subsequent operations execute at intervals set according to the /INTERVAL qualifier.
- /LOG={file-spec}, /NOLOG (default)
The /LOG qualifier causes the defragmentation process to create a file containing a list of all its operations.
- /MAIL_NOTIFICATION, /NOMAIL_NOTIFICATION (default)
The /MAIL_NOTIFICATION qualifier requests that brief status and termination messages regarding defragmentation processes be mailed to the mail distribution list provided in the file DFG$MAIL_ADDRESS.
- /NODE=(node-name[,...]), /NONODE (default)
The /NODE qualifier limits the scope of the DEFRAGMENT command to the node or set of nodes specified by /NODE=(node-name). By default, defragmentation processes may execute on any LMF licensed node in the system.
- /OPCOM_NOTIFICATION (default), /NOOPCOM_NOTIFICATION
The /OPCOM_NOTIFICATION qualifier requests that brief status and termination messages regarding defragmentation processes be sent to OPCOM.
- /PROLOGUE={file-name}, /NOPROLOGUE (default)
The /PROLOGUE qualifier identifies a DCL command file which DFO executes just before the Defragment operation starts.
Mounting or dismounting the disks cannot be done through the Command file specified.
Refer to Appendix B, Disk File Optimizer Logicals and Files for logicals that are available to these command procedures.
- /SCRIPT={script-name}, /NOSCRIPT (default)
The /SCRIPT qualifier assigns a user-supplied name to a script. If a duplicate script-name is selected, defragmentation software issues a duplicate script name error message and does not enter the new script into the database—no defragmentation takes place.
A script name may be up to 64 characters in length and may contain any of the following characters:Any alphanumeric character
Underscore ( _ )
Hyphen ( - )
Dollar sign ( $ )
Observe the following rules when naming a script:You may use any combination of uppercase and lowercase letters.
You cannot begin script names using the dollar sign, but you can include the dollar sign within the script name. (The dollar sign is reserved for special use by VSI.)
You should not end a script name with a hyphen, since the hyphen is the DCL continuation character.
Examples
The following examples illustrate how to use the OFFLINE_VOLUME subcommand and its qualifiers.
$ DEFRAGMENT OFFLINE_VOLUME $1$DKB100:- /SCRIPT=DEFRAG_OFFLINE_USER1- /NOAFTER $ DISMOUNT/CLUSTER $1$DKB100: $ MOUNT/OVER=ID $1$DKB100: $ ANALYZE/DISK_STRUCTURE $1$DKB100: $ DISMOUNT $1$DKB100: $ DEFRAGMENT START DEFRAG_OFFLINE_USER1 $ MOUNT/OVER=ID $1$DKB100: $ ANALYZE/DISK_STRUCTURE $1$DKB100: $ DISMOUNT $1$DKB100: $ MOUNT/CLUSTER $1$DKB100: USER1
Create script to defragment INDEXF.SYS on volume
Dismount volume from the cluster
Mount volume privately to analyze disk structure
Check volume for readability and validity of Files-11 structure information
Dismount volume to defragment INDEXF.SYS
Start OFFLINE_VOLUME script
Mount volume privately to analyze disk structure
Check volume for readability and validity of Files-11 structure information
Dismount volume
Mount volume into the cluster
DEFRAGMENT REMOVE
DEFRAGMENT REMOVE — The REMOVE subcommand deletes the specified script or node from the defragmentation scheduling and parameter database.
Format
DEFRAGMENT REMOVE
[
{ script-name[,...] | node-name[,...] }
{ /AFTER | /ALL | /NODE } ]Parameters
The script-name parameter specifies the script to remove from the defragmentation database. You can use wildcards in the script-name specification. Use an asterisk (*) to take action on all scripts on the VAXcluster system; use a percent sign (%) to match a single character in the script-name specification.
This parameter is not allowed if the /ALL qualifier is used.
The node-name parameter specifies the node to remove from the defragmentation database.
Description
The REMOVE subcommand deletes the specified script or node from the defragmentation database. Scripts executing when the command is issued are allowed to complete before they are removed.
When a script that has a predecessor or a successor is removed,all forward and backward links are updated to reflect the removal. For example, assume that A is the predecessor of B, B is the predecessor of C, and B is removed. After B is removed, A becomes the predecessor of C.
Restrictions
If the /ALL qualifier is used, then the script-name parameter cannot be used. If the node is a script, it cannot be removed. If the node has a scheduler or defragmentation process running, it cannot be removed.
Qualifiers
- /AFTER=time, /NOAFTER (default)
The /AFTER qualifier does not delete the script until after the specified time. Specify time as a VMS absolute time or combination absolute and delta time. Refer to the VSI OpenVMS User's Manual for more information on how to specify time.
- /ALL, /NOALL (default)
The /ALL qualifier indicates that all scripts are to be removed from the scheduling and parameter database.
If /ALL is used, the script-name parameter is not allowed.
- /NODE
The /NODE qualifier removes the specified node name from the scheduling and parameter database.
Examples
$ DEFRAGMENT REMOVE MY_SCRIPT/AFTER=16:30
In this example, MY_SCRIPT is removed from the database. It is removed after 16:30 on the day this command is entered.
$ DEFRAGMENT REMOVE MYNODE/NODE
In this example, MYNODE is removed from the database.
DEFRAGMENT SET
DEFRAGMENT SET — The SET subcommand defines or changes the value of the defragmentation process limits.
Format
DEFRAGMENT SET
[
{ (parameter=value[,...] ) }
{ /NODE } ]Parameters
CPU_LIMIT specifies the percent of CPU usage for any one defragmentation process. The CPU percent is the percent of a single CPU.
IO_LIMIT specifies the maximum direct I/O rate (per second) of any one defragmentation process.
PROCESS_LIMIT specifies the maximum number of defragmentation processes per node.
Description
The limits are no longer exceeded.
The defragmentation process priority is at the SYSGEN parameter, DEFPRI, minus 1.
Defragmentation processes have a base priority equal to the SYSGEN parameter, DEFPRI, or the current priority of the scheduler, whichever is greater.
If there are more than the specified number of defragmentation processes running on any of the given nodes when the PROCESS_LIMIT is set, the excess processes are allowed to continue. However, new processes are not started until the number of executing defragmentation processes drops below the PROCESS_LIMIT value.
Enter values for CPU_LIMIT as integers ranging from 0 to 100 (inclusive). Enter values for IO_LIMIT and PROCESS_LIMIT as integers ≥ 0.
A value of zero for any of these parameters imposes no limit.
Restrictions
None.
Qualifiers
- /NODE=(node-name[,...]), /NONODE (default)
The /NODE qualifier limits the scope of the SET subcommand. By default, a given parameter is set identically on all nodes in the scheduling database. To limit parameters to fewer nodes, specify the node names with the /NODE qualifier.
Examples
$ DEFRAGMENT SET PROCESS_LIMIT=3, IO_LIMIT=14/NODE=NODE_1
In this example, the maximum number of defragmentation processes that can occur on NODE_1 is 3. Further, a restriction of 14 direct I/Os per second is placed on each of these 3 defragmentation processes.
$ DEFRAGMENT SET CPU_LIMIT=50
In this example, the maximum CPU resources allocated to any defragmentation process is set to 50 percent on all nodes in the system. If a defragmentation process exceeds this limit, its priority is decremented each minute (approximately) until it reaches the SYSGEN parameter, DEFPRI, minus 1.
DEFRAGMENT SHOW
DEFRAGMENT SHOW — The SHOW subcommand displays information about the fragmentation state of thegiven volume and information from the scheduling database.
Format
DEFRAGMENT SHOW
[
{ script-name |volume-name }
{ /ALL | /COMMAND_LINE | /DEVICE | /FILE_LIST | /FREE_LIST | /HISTOGRAM | /LOCATION | /NAMES | /NODE | /OUTPUT | /PARAMETERS | /RUNNING | /STATISTICS | /VOLUME } ]Parameters
The parameter for the SHOW subcommand is either a script name or a volume name. Names can be omitted if the /ALL qualifier is used. If a script name is supplied or if the /PARAMETERS qualifier is specified, the SHOW command queries the scheduling database and displays this information. You can use wildcards in the script-name specification. Use an asterisk (*) to take action on all scripts on the VAXcluster system; use a percent sign (%) to match a single character in the script-name specification.
If a volume name is supplied (/VOLUME required), the SHOW command displays information about the fragmentation state of the specified volume. A list of names can be provided, but the list cannot contain both script and volume names.
Description
A list of files with a user-selected minimum level of fragmentation
A histogram of the file fragmentation and free space fragmentation state of the volume
A list of all free space extents on the volume
Summary statistics on both file fragmentation and free space fragmentation
The location of user selected files
All information in the volume fragmentation analysis is optional. By default,only the summary statistics are provided.
The SHOW subcommand also can display data contained in the scheduling database. Depending on additional qualifiers, the output consists of the SET parameters and script information. Further, the output can be directed to a file and can be displayed in two formats.
Restrictions
If showing a script or volume, do not use the /ALL qualifier
If showing a volume, then you must use the /VOLUME qualifier
Qualifiers
- /ALL, /NOALL (default)
The /ALL qualifier is used to show information from the scheduling database. It displays information about all scripts and parameters in the scheduling database. If /ALL is used, the script-name parameter is not allowed.
- /COMMAND_LINE, /NOCOMMAND_LINE (default)
The /COMMAND_LINE qualifier is used to show information from the scheduling database. It formats the output of the SHOW subcommand as a valid DEFRAGMENT command line. Thus, all the data in the scheduling database can be extracted into a file (/ALL/COMMAND_LINE/OUTPUT=file.ext).
- /DEVICE=(device_spec[,device_spec])...
The /DEVICE qualifier selects only the named scripts on the specified devices.
- /FILE_LIST=(min_extents), /FILE_LIST=(VOL_MAP_WINDOW + 1) (default)
The /FILE_LIST qualifier is used to show the fragmentation state of a volume. It lists all files on the volume that have min_extents or more extents (fragments). By default, the number of file window mapping pointers set for the volume (INITIALIZE {volume}/WINDOW=n) plus one is used. This value lists all files that require at least one window turn to completely map.
- /FREE_LIST, /NOFREE_LIST (default)
The /FREE_LIST qualifier is used to show the fragmentation state of the volume. It lists the location and size of all of the free space extents on the volume.
- /HISTOGRAM, /NOHISTOGRAM (default)
The /HISTOGRAM qualifier is used to show the fragmentation state of a volume. It generates two histograms. The first plots the number of files against the number of extents per file and provides information about how many files are fragmented and how badly they are fragmented. The second histogram plots the number of free space extents (holes) against the size of these free space extents. It provides information about how many free space extents are on the volume and their sizes.
- /LOCATION=(file-spec[,...]), /NOLOCATION
The /LOCATION qualifier is used to show the fragmentation state of the volume. It prints the extents (fragments) associated with all specified files. If no files are specified, the /LOCATION qualifier appends location information to all files listed with the /FILE_LIST qualifier. The supplied file-spec may contain wildcards in place of the directory, file name, extension, or version fields.
- /NAMES
The /NAMES qualifier lists only the first line of the usual show output. The first line of the script includes the name of the script, whether the script is enabled or disabled, and the target device for the script.
- /NODE=(node-name[,...]), /NONODE (default)
The /NODE qualifier selects only those scripts and node names that are specified on the command line.
When used with the /PARAMETERS qualifier, the /NODE qualifier displays CPU_LIMIT, IO_LIMIT, and PROCESS_LIMIT information for specified nodes only. If the /NODE qualifier is not used, the /PARAMETERS qualifier displays this information for all nodes in the scheduling database.
- /OUTPUT={file-spec}, /OUTPUT=SYS$OUTPUT (default)
The /OUTPUT qualifier may be used to show the volume fragmentation state or to show information from the scheduling database. It directs the output of the SHOW subcommand to a file. By default, output is directed to SYS$OUTPUT.
- /PARAMETERS, /NOPARAMETERS (default)
The /PARAMETERS qualifier is used to show information from the scheduling database. It displays the CPU_LIMIT, IO_LIMIT, and PROCESS_LIMIT settings for all nodes in the scheduling database (unless specific nodes are designated with the /NODE qualifier). By default, these settings are not shown.
- /RUNNING
The /RUNNING qualifier shows scripts that are currently running.
- /STATISTICS (default), /NOSTATISTICS
The /STATISTICS qualifier is used to show the volume fragmentation state. It provides a summary of the file and free space fragmentation for the volume. Refer to Appendix C, DEFRAGMENT SHOW Command Report for more information on this report.
- /VOLUME, /NOVOLUME (default)
The /VOLUME qualifier must be used to show the fragmentation state of a volume. It indicates that any parameter supplied on the command line is a volume name instead of a script name. The /VOLUME qualifier is incompatible with any of the qualifiers used to show database information except the /OUTPUT qualifier.
Examples
$ DEFRAGMENT SHOW/PARAMETERS
In this example, the current values of CPU_LIMIT, IO_LIMIT and PROCESS_LIMIT for all nodes in the scheduling database are shown.
$ DEFRAGMENT SHOW MY_SCRIPT/OUTPUT=OUTPUT.TXT
In this example, information associated with MY_SCRIPT is displayed. No parameter information is displayed. Output is directed to a file called OUTPUT.TXT.
Note
If output is directed to a filename without extension, the file is given a default extension of .lis.
$ DEFRAGMENT SHOW MY_SCRIPT/COMMAND_LINE/PARAMETERS
In this example, information associated with MY_SCRIPT is displayed. The current values of CPU_LIMIT, IO_LIMIT and PROCESS_LIMIT for all nodes in the scheduling database are also shown. The format for the information is a valid DEFRAGMENT command line. Output is directed to the user's SYS$OUTPUT device. If output is directed to a filename without extension, the file is given a default extension of .lis.
$ DEFRAGMENT SHOW MY_VOLUME/OUTPUT=OUTPUT.TXT
In this example, information associated with MY_VOLUME is displayed. Output is directed to a file called OUTPUT.TXT.
$ DEFRAGMENT SHOW DISK$ONE/VOLUME/HISTOGRAM
In this example, the volume fragmentation report includes the summary statistics (/STATISTICS is default) and histograms for both file fragmentation and free space fragmentation. The report is sent to the SYS$OUTPUT device.
DEFRAGMENT SPAWN
DEFRAGMENT SPAWN — The Disk File Optimizer SPAWN subcommand creates a subprocess and executes a DCL command in the subprocess, or transfers terminal control to the subprocess if no command is supplied.
Format
DEFRAGMENT SPAWN
[
{ command } ]Parameters
This is a DCL command string of less than 132 characters that is to be executed in the context of the created subprocess. After the command is executed, the subprocess terminates and control returns to the parent process. A command is optional. If no command is supplied, control passes to DCL.
Description
The Disk File Optimizer SPAWN command creates a subprocess of your current process.
Use the DCL LOGOUT command to terminate the subprocess and return to the parent process. You can also use the DCL ATTACH command to transfer control of the terminal to another process in the subprocess tree, including the parent process.
If the Disk File Optimizer SPAWN command is invoked with a DCL command specified as the command parameter, that command is executed in the subprocess, and control returns immediately to the parent process.
If the command parameter is not specified,then control is passed to the created DCL subprocess until it is deleted or until an ATTACH command is issued to transfer control to another process.
Restrictions
None.
Qualifiers
None.
Examples
$ DEFRAGMENT DFO> SPAWN $
The SPAWN command creates a subprocess and transfers terminal control to the created subprocess.
DFO> SPAWN SHOW DEFAULT DISK$1:[JONES] DFO>
The SPAWN command creates a subprocess and executes the DCL command SHOW DEFAULT in the created subprocess. Control then returns to the Disk File Optimizer parent process.
DEFRAGMENT START
DEFRAGMENT START — The START subcommand starts the specified script.
Format
DEFRAGMENT START
[
{ script-name[,...] }
{ /AFTER } ]Parameters
The script-name parameter is the name of the script(s) to be started. You can use wildcards in the script-name specification. Use an asterisk (*) to take action on all scripts on the VAXcluster system; use a percent sign (%) to match a single character in the script-name specification.
Description
The START subcommand starts any script not currently executing. You may use it to start scripts halted due to unusual system events, such as system failures. If a defragmentation process fails, successor scripts are not automatically started. Use the START subcommand to start these successor scripts.
Restrictions
None.
Qualifiers
- /AFTER=time, /NOAFTER (default)
The /AFTER qualifier keeps the script from starting until after the specified time.
You can specify time as either an absolute time or as a combination of absolute and delta times. For complete information on specifying time values, see the VSI OpenVMS User's Manual.
Examples
The following example shows how to start a script:
$ DEFRAGMENT START MY_SCRIPT/AFTER=16:30
In this example, MY_SCRIPT is started. The /AFTER qualifier stipulates that MY_SCRIPT should start after 16:30 of the day this command is submitted. If the script is periodic, the period is unchanged.
DEFRAGMENT VOLUME
DEFRAGMENT VOLUME — The DEFRAGMENT VOLUME subcommand defragments the volume named on the command line according to the defragment command line qualifiers.
Format
DEFRAGMENT VOLUME
[
{ volume-name }
{ /AFTER | /BRIEF | /CONSOLIDATE_FREESPACE | /CONTINUOUS | /DORMANT | /EPILOGUE | /EXCLUDE | /FREQUENT | /FULL | /HOTFILE_DATABASE | /IGNORE | /INHERIT | /INTERVAL | /LEVEL | /LOG | /MAIL_NOTIFICATION | /NODE | /OPCOM_NOTFICATION | /OPTIONS | /PREDECESSOR | /PRIORITY | /PROLOGUE | /RVN | /SCRIPT | /TIME_LIMIT | /WRITE_CHECK } ]Parameters
The volume-name parameter is the name of the volume to be defragmented.
Description
The VOLUME subcommand defragments the specified volume according to the selected command line qualifiers. This command may be permanently added to the scheduling and parameter database as a script. If no script name is specified using the /SCRIPT qualifier, the defragmentation software generates a unique script name of the form DFG$SCRIPTX[X...], where X is a hexadecimal number. This number is chosen to keep all script names unique. Names beginning with DFG$ are reserved for use by the defragmentation software.
Once the defragmentation command line is entered in the database, it is eligible for execution according to its scheduling parameters. If no scheduling information is provided, the script begins executing immediately and executes only once.
/SCRIPT={script-name}
/INTERVAL={delta-time}
/PREDECESSOR={script-name}
Restrictions
A script that has the /CONTINUOUS qualifier may not be named as the predecessor of another script. If you specify the /INTERVAL qualifier, the /PREDECESSOR qualifier is not allowed. If /LEVEL=5 is selected, the /LOG qualifier is required. Do not use /BRIEF and /FULL concurrently. Do not use /CONTINUOUS and /INTERVAL for a script.
Qualifiers
- /AFTER={time}, /AFTER={current_time}(default), /NOAFTER
The /AFTER qualifier keeps the script from executing until after the specified time.
You can specify time as either an absolute time or as a combination of absolute and delta times. For complete information on specifying time values, see the VSI OpenVMS User's Manual.
The /AFTER qualifier has three states. It can be specified with a valid time, it can be omitted from the command line, or it can be negated (/NOAFTER). If /AFTER is specified with a valid time, the script is scheduled to execute after that time. If the /AFTER qualifier is omitted, the defragmentation software processes the command as if the /AFTER qualifier were specified with the current time. If /NOAFTER is specified, no starting time is associated with the script being defined. The /NOAFTER qualifier allows you to define a script without scheduling it to execute. To subsequently start the script, use the START subcommand.
- /BRIEF (default), /NOBRIEF
The /BRIEF qualifier has meaning only when the /LOG qualifier is also present. The /BRIEF qualifier requests a brief log of all actions taken by the defragmentation process. This log includes beginning and ending volume status information. The /BRIEF and /FULL qualifiers are mutually exclusive, and /NOBRIEF produces the same result as /FULL. The /BRIEF qualifier is the default.
- /CONSOLIDATE_FREESPACE (default), /NOCONSOLIDATE_FREESPACE
The /CONSOLIDATE_FREESPACE qualifier tells the Disk File Optimizer to use its free space consolidation algorithm.
- /CONTINUOUS, /NOCONTINUOUS (default)
The /CONTINUOUS qualifier causes the script to execute repeatedly. After each successful defragmentation operation, the script becomes eligible for execution again. As long as any PROCESS_LIMITs (see the SET subcommand) are not violated, the script executes repeatedly. If all PROCESS_LIMITs have been reached, the script is queued until an outstanding defragmentation process completes, then the script is allowed to execute.
By default, the defragmentation process associated with a script may execute on any appropriately licensed node in a cluster. Thus, successive defragmentation processes do not necessarily execute on the same node.
- /DORMANT=(file-spec[,...]), /NODORMANT (default)
The /DORMANT qualifier indicates files to be considered dormant when final file placement decisions are made. Dormant files are placed at the high end of the volume.
If a file is indicated in both the DORMANT and FREQUENT lists, it is considered dormant. If a file is indicated in both the EXCLUDE and DORMANT lists, it is excluded.Note
The amount of free space on the volume, the number of files currently being accessed, and other factors influence file placement. The Disk File Optimizer does not guarantee file placement, but makes every effort to place files as described.
- /EPILOGUE={file-name}, /NOEPILOGUE (default)
The /EPILOGUE qualifier identifies a DCL command file which DFO executes upon completion of the DEFRAGMENT operation.
Mounting or dismounting the disks cannot be done through the Command file specified.
Refer to Appendix B, Disk File Optimizer Logicals and Files for logicals that are available to these command procedures.
- /EXCLUDE=(file-spec[,...]), /NOEXCLUDE (default)
- The /EXCLUDE qualifier specifies files to be excluded from processing. The defragmentation process ignores files matching the listed file specifications. Any file indicated in the EXCLUDE list and in either the FREQUENT or DORMANT lists is excluded from processing.
Note
The defragmentation process always excludes system files, open files, files excluded in an options file (/OPTIONS qualifier), and files excluded using the /IGNORE qualifier.
- /FREQUENT=(file-spec[,...]), /NOFREQUENT (default)
The /FREQUENT qualifier indicates files to be considered frequently accessed when final file placement decisions are made. Frequent files are placed to optimize access speed.
If a file is indicated in both the FREQUENT and DORMANT lists, it is considered dormant. If a file is indicated in both the FREQUENT and EXCLUDE lists, it is excluded.See Section 4.3, “Scripts” for more information.Note
The amount of free space on the volume, the number of files currently being accessed, and other factors influence file placement. The Disk File Optimizer does not guarantee file placement, but makes every effort to place files as described.
- /FULL, /NOFULL (default)
The /FULL qualifier requests a full log of all actions taken by the defragmentation process. The /FULL qualifier has no meaning if the /LOG qualifier is absent. The /FULL and /BRIEF qualifiers are mutually exclusive, and /NOFULL provides the same functionality as /BRIEF.
- /HOTFILE_DATABASE , /NOHOTFILE_DATABASE (default)
The /HOTFILE_DATABASE qualifier causes the defragmenter to query the appropriate hotfile database and append the list of hotfiles to the defragmenter's /FREQUENT file list.
- /IGNORE=(keyword[,...]), /IGNORE=(PLACED)(default), /NOIGNORE
- The /IGNORE qualifier requests that the defragmentation process ignore certain types of files as specified by the following keywords:
INDEXED—Ignores all RMS indexed files
NOINDEXED—May defragment RMS indexed files
PLACED—Ignores all files with explicit placement flags set in their headers
NOPLACED—May defragment files with explicit placement flags
Files indicated by the /IGNORE qualifier are added to the EXCLUDE list.
The default value (/IGNORE=PLACED) indicates that files with explicit placement control should be ignored, and that RMS indexed files should be defragmented and placed in appropriate locations on the volume.
- /INHERIT={script-name}, /NOINHERIT (default)
- The purpose of the /INHERIT qualifier is to make script creation easier. By inheriting most of the command data from a previously entered script and modifying only a few items (such as volume name), a completely new script can be created. The /INHERIT qualifier creates a database entry for a new script in the following way:
Copies all fields from the specified script to the new script.
Overwrites any qualifier or parameter values in the new script with those specified on the command line.
Names the new script as appropriate. The user may specify a script name using the /SCRIPT={script-name} qualifier. Otherwise, the defragmentation software creates a unique script name. You can use wildcards in the script-name specification. Use an asterisk (*) to take action on all scripts on the VAXcluster system; use a percent sign (%) to match a single character in the script-name specification.
- /INTERVAL={delta-time}, /NOINTERVAL (default)
The /NOINTERVAL qualifier executes a script at regularly scheduled intervals. The /INTERVAL qualifier specifies the minimum time between consecutive executions of a script.
Specify time as a delta time. Refer to the VSI OpenVMS User's Manual for more information on specifying times. If you do not specify a time with the /INTERVAL qualifier, the default value of 24 hours is used.
If you specify the /AFTER qualifier with the /INTERVAL qualifier, the first defragmentation operation occurs at or after the time specified by the /AFTER qualifier; all subsequent operations execute at intervals set with the /INTERVAL qualifier.
- /LEVEL={n}, /LEVEL=2 (default)
- The defragmentation process selects files for defragmentation (from among those not excluded) based on the /LEVEL qualifier. Once a file is selected as a candidate, the defragmentation process attempts to fully defragment that file (make it 100 percent contiguous). Specify the level number as an integer ranging from one to five:
/LEVEL=1
Any file that is not 100 percent contiguous, or that can be selected using levels two and three, is a candidate for defragmentation.
/LEVEL=2 (default)
Any file whose extents cannot be completely mapped by the mapping window, or that can be selected using level three, is a candidate for defragmentation. The default window value is seven and can be set for a given volume using:
$ SET VOLUME {device-spec}/WINDOWS=[n]
/LEVEL=3
Any file with retrieval pointers in more than one file header is a candidate for defragmentation.
/LEVEL=4
The defragmentation process for level four processing performs only free space consolidation. This level is used with the /CONSOLIDATE_FREESPACE qualifier.
/LEVEL=5
This level requests a volume analysis only; no defragmentation occurs. The statistical results are available in the log file, which is required when /LEVEL=5 is selected (see the /LOG qualifier). If level 5 is selected, the /LEVEL=2 candidate file spec
- /LOG={file-spec}, /NOLOG (default)
The /LOG qualifier causes the defragmentation process to create a file containing a list of all its operations. The information in the log file varies with the presence of the /FULL or /BRIEF qualifiers. The /FULL qualifier lists all files analyzed by the defragmentation process and reports their disposition during each phase of defragmentation. The /BRIEF qualifier lists only the statistics of each phase, such as number of files analyzed, and number of files defragmented.
- /MAIL_NOTIFICATION, /NOMAIL_NOTIFICATION (default)
The /MAIL_NOTIFICATION qualifier requests that brief status and termination messages regarding defragmentation processes be mailed to the mail distribution list provided in the file DFG$MAIL_ADDRESS.
- /NODE=(node-name[,...]), /NONODE (default)
The /NODE qualifier limits the scope of the DEFRAGMENT command to the node or set of nodes specified by /NODE=(node-name). By default, defragmentation processes may execute on any LMF licensed node in the system.
- /OPCOM_NOTIFICATION (default), /NOOPCOM_NOTIFICATION
The /OPCOM_NOTIFICATION qualifier requests that brief status and termination messages regarding defragmentation processes be sent to OPCOM.
- /OPTIONS={file-spec}, /NOOPTIONS (default)
- The /OPTIONS qualifier provides an alternate method for associating files with the /DORMANT, /EXCLUDE, or /FREQUENT qualifiers. If the list of files for any of these qualifiers is long, you can create a separate file for this information. Each record in the options file consists of a file name followed by one of the following keywords:
/EXCLUDE—File to be excluded
/FREQUENT—File to be considered frequently accessed
/DORMANT—File to be considered dormant
The following example shows the contents of an options file called MYOPTFILE.OPT. This file specifies that all files on the target device called FILE1.EXE are frequent files, all files in the [ARCHIVE] directory are to be excluded, and all files in the [OLDSTUFF] directory and its subdirectories are dormant.FILE1.EXE/FREQUENT [ARCHIVE]*.*;*/EXCLUDE [OLDSTUFF...]*.*;*/DORMANT
Files indicated by the /EXCLUDE qualifier and by either the /DORMANT or /FREQUENT qualifier are excluded. Files indicated by the /DORMANT qualifier and by the /FREQUENT qualifier are considered dormant. This rule is applied equally across all files specified in the /OPTIONS file and on the command line.
- /PREDECESSOR={script-name}, /NOPREDECESSOR (default)
The /PREDECESSOR qualifier links scripts. These scripts execute in sequence; one successfully completes before the next one begins.
The predecessor script name must exist in the scheduling database or an error status message is returned. You can use wildcards in the script-name specification. Use an asterisk (*) to take action on all scripts on the VAXcluster system; use a percent sign (%) to match a single character in the script-name specification.
- /PRIORITY=(DEFAULT=n, MINIMUM=n), /NOPRIORITY (default)
The /PRIORITY qualifier specifies priorities for the defragment process. The minimum priority setting is used when the defragmentation process exceeds the value specified by either /CPU_LIMIT or /IO_LIMIT.
- /PROLOGUE={file-name}, /NOPROLOGUE (default)
The /PROLOGUE qualifier identifies a DCL command file which DFO executes just before the Defragment operation starts.
Mounting or dismounting the disks cannot be done through the Command file specified.
Refer to Appendix B, Disk File Optimizer Logicals and Files for logicals that are available to these command procedures.
- /RVN=n, /RVN=0 (default)
When you have a bound volume set, use this qualifier to identify a disk from the volume set or all disks in the volume set. The default of zero tells the Disk File Optimizer to defragment all disks in the bound volume set. Specify a relative volume number (RVN) to defragment a specific disk that belongs to a bound volume set.
- /SCRIPT={script-name}, /NOSCRIPT (default)
The /SCRIPT qualifier assigns a user-supplied name to a script. If a duplicate script-name is selected, defragmentation software issues an error message and does not enter the new script into the database—no defragmentation takes place.
A script name may be up to 64 characters in length and may contain any of the following characters:Any alphanumeric character
Underscore ( _ )
Hyphen ( - )
Dollar sign ( $ )
Observe the following rules when naming a script:Use any combination of uppercase and lowercase letters.
Do not begin script names using the dollar sign, however you can include the dollar sign within the script name. (The dollar sign is reserved for special use by VSI.)
Do not end a script name with a hyphen, since the hyphen is the DCL continuation character.
If you do not supply a script name using the /SCRIPT qualifier, the defragmentation software generates a unique script name. This internally generated name has the format DFG$SCRIPTX[X...], where X is a hexadecimal number that keeps the script names unique. Names beginning with DFG$ are reserved for use by the defragmentation software.
- /TIME_LIMIT={delta-time}, /NOTIME_LIMIT (default)
The /TIME_LIMIT qualifier specifies the maximum elapsed time allowed for a given defragmentation operation. If the time limit is exceeded, the defragmentation process is aborted.
Specify time as a delta time. Refer to the VSI OpenVMS User's Manual for more information on specifying times.
For linked scripts, the time limit of the first script applies to the whole set. Time limits specified with successor scripts apply to these scripts only.
If the time limit is set unreasonably low, the defragmentation process may not accomplish useful defragmentation.
- /WRITE_CHECK, /NOWRITE_CHECK (default)
The /WRITE_CHECK qualifier requests that a read-after-write check be performed on all defragmented or placed files. This qualifier significantly extends the execution time of a defragmentation process.
Examples
$ DEFRAGMENT VOLUME DISK$USER_1
This command defragments DISK$USER_1 using default qualifiers. The defragmentation process executes only once. In a VAXcluster system, the defragment operation begins on a node selected at random from among those nodes in the scheduling database having fewer executing processes than the limit imposed by the SETPROCESS_LIMIT={value} subcommand. If all nodes are busy with a maximum number of defragment processes, the script does not execute until one of the outstanding defragmentation operations concludes.
After the defragmentation process stops, the script is removed from the scheduling database.
$ DEFRAGMENT VOLUME DISK$ONE/SCRIPT=MY_SCRIPT/IGNORE=(INDEXED,PLACED)- /INTERVAL=2-00:00/FREQUENT=*.EXE/LOG=MYLOG.LOG/FULL/DORMANT=*.ARCHIVE- /NODE=(N1, N2)
This command does the following:Defragments DISK$ONE.
Names the script MY_SCRIPT.
Instructs the defragmentation process to ignore all RMS indexed files and files with explicit placement control information in their headers. (These files are added to the EXCLUDE list.)
Instructs the scheduler to execute this script every two days.
Instructs the defragmentation process that all .EXE files on the entire volume should be considered frequently accessed when final file placement decisions are made.
Requests a log file, MYLOG.LOG, which is placed in the directory from which this command was entered.
Requests a /FULL log file.
Instructs the defragmentation process that all .ARCHIVE files on the entire volume should be considered dormant (rarely accessed) when final file placement decisions are made.
Limits the nodes available for the defragmentation process to nodes N1 and N2.
$ DEFRAGMENT VOLUME DISK$TWO/INHERIT=MY_SCRIPT/SCRIPT=FIRST_SCRIPT
This command inherits the script defined in the previous example. Thus, it creates a new script that is the same as MY_SCRIPT, except for the following differences:The script name is FIRST_SCRIPT instead of MY_SCRIPT.
The target volume is DISK$TWO instead of DISK$ONE.
In this case, MYLOG.LOG is also inherited. Thus, one version of the log file contains data from MY_SCRIPT, and the other version contains data from FIRST_SCRIPT. To prevent log file inheritance, specify the /LOG qualifier.
$ DEFRAGMENT VOLUME DISK$ONE/SCRIPT=SECOND_SCRIPT- /PREDECESSOR=FIRST_SCRIPT
This commands links SECOND_SCRIPT to FIRST_SCRIPT using the /PREDECESSOR qualifier. SECOND_SCRIPT does not execute until FIRST_SCRIPT completes successfully. SECOND_SCRIPT uses default parameters. Note that this example uses the DEFRAGMENT VOLUME command from within the Disk File Optimizer utility.
$ DEFRAGMENT VOLUME DISK$ONE/SCRIPT=AFTER_SCRIPT/AFTER="+00:05"
This command creates the script AFTER_SCRIPT, and it will start executing in 5 minutes.
Chapter 5. The DECwindows Interface for Defrag
5.1. Introduction
In addition to the DCL command line interface, the Disk File Optimizer (DFO) software includes a DECwindows interface. The DECwindows interface gives you a visual reference when performing tasks with the Disk File Optimizer software.
The Disk File Optimizer DECwindows interface allows you to initiate, control, and stop defragmentation operations.
The Disk File Optimizer initial window appears. Figure 5.1, “Initial Window” shows the initial window.
File – exit the DECwindows interface.
Optimize – optimize a volume, selected files, or a disks volume index file.
Monitor – monitor the defragmentation process by selecting a volume to monitor.
Report – review the current state of a volume to determine if defragmentation is needed.
5.2. File Menu
The File menu serves only one purpose. It allows you to exit this windows interface application. To do so, click on the File topic and bring down the Exit box. Click on Exit to leave this application.
Figure 5.2, “File Menu” shows the File pull-down menu.
5.3. Optimize Menu
The Optimize menu permits you to optimize a volume, file, volume index file, or abort the optimize process.
Figure 5.3, “Optimize Menu” shows the optimize menu.
5.3.1. Optimize Volume
Pull down the Optimize menu.
Select Volume.
Define the optimize parameters using the procedures in Section 5.3.1.1, “Define the Optimize Parameters”.
Restrict special files by pressing the restrict button and using the procedure in Section 5.3.1.2, “Restrict Special Files”.
Schedule the optimize process using the procedure in Section 5.3.1.3, “Schedule Optimization”.
Start the optimize process by pressing the OK or Apply button.
5.3.1.1. Define the Optimize Parameters
Before you can optimize a volume or file, you have to define the optimize parameters using Define dialog box.
Select a volume name.
Select to enable or disable write check.
Select the relative volume number of a volume set.
Select whether to defragment files and what kind of files to defragment.
Select whether to consolidate free space or not.
Select whether or not to do a volume analysis.
Select whether to notify you by log file or console message.
Select whether to report brief or full log files.
Figure 5.4, “Define Dialog Box for a Volume” shows the define dialog box for a volume. Refer to Table 5.1, “Define Dialog Box Fields” for a description of the information fields.
Select one or more file names.
Select to enable or disable write check.
Select the relative volume number of a volume set.
Select whether to defragment files and what kind of files to defragment.
Select whether to consolidate free space or not.
Select whether or not to do a volume analysis.
Select whether to notify you by log file or console message.
Select whether to report brief or full log files.
Figure 5.5, “Define Dialog Box for a File” shows the script define dialog box for a file.
Select a disk.
Select whether to notify you by log file or console message.
Select whether to report brief or full log files.
Figure 5.6, “Define Dialog Box for a Volume Index File” shows the define dialog box for a volume index file.
Field | Description |
---|---|
Volume | Defragments the volume named in the volume field. This has the same effect as using the DEFRAGMENT VOLUME DCL command. |
Selected Files | Defragments the file or files named in the files field. This has the same effect as using the DEFRAGMENT FILE DCL command. |
Volume Index Files | Defragments the INDEXF.SYS of the disk named in the disk field. This has the same effect as using the DEFRAGMENT OFFLINE_VOLUME DCL command. |
Volume... | The Volume... button only appears when the Volume or Volume Index File buttons are depressed. Enter the volume name or use the Volume... button to bring up a list of volumes or disks. |
Files... | The Files... button only appears when the Selected Files button is depressed. Push the File... button file to bring up a list of files. |
Write Check | The Write Check option requests that a read-after-write check be performed on all defragmented or placed files. This qualifier significantly extends the execution time of a defragmentation process. This has the same effect as the /WRITE_CHECK DCL qualifier. |
Relative Volume Number | Allows you to select the relative volume number of a volume set. This has the same effect as the /RVN= DCL qualifier. |
Operations |
You may elect to defragment specific files, consolidate disk space, or do an analysis check only. File defragmentation and space consolidation can be done together. Defragment Files: Allows you to select which files to defragment. Use the three-position sliding bar:
Consolidated Freespace: Consolidate the free space on the volume. Volume analysis only: Requests a volume analysis only, no defragmentation occurs. The results are available in the log file. The operations has the same effect as the /LEVEL=x DCL qualifiers as shown in Table 5.2, “Translations of Operations to DCL Command/LEVEL=x”. |
Log File |
The Log File option causes the defragmentation process to create a file containing a list of all its operations. The information in the log file varies with the presence of the Full or Brief option selections:
This has the same effect as the /LOG=log_file and /FULL or /BRIEF DCL qualifier. |
Console Message | The console message option requests that brief status and termination messages regarding defragmentation processes be sent to OPCOM. This has the same effect as the /OPCOM_NOTIFICATION DCL qualifier. |
Defragment Files | Sliding Bar | Consolidate Free Space | Volume Analysis Only | /LEVEL= |
---|---|---|---|---|
Selected | LEFT | 1 | ||
Selected | MIDDLE | 2 | ||
Selected | RIGHT | 3 | ||
Not Selected | Selected | 4 | ||
Not Selected | Not Selected | Selected | 5 |
5.3.1.2. Restrict Special Files
Files placed by the User
RMS Indexed Files
Excluded Files
Files in the hotfile database
Dormant files
Frequent files
Figure 5.7, “Restrict Special File Dialog Box” shows the Restrict Special Files dialog box for a volume and Table 5.3, “Restrict File of Dialog Box Fields” describes the information fields.
Field | Description |
---|---|
Files Placed by User | Select this button if you wish to ignore explicitly placed files. This has the same effect at the /IGNORE=(PLACED) DCL qualifier. |
RMS Indexed Files | Select this button if you wish to ignore RMS indexed files. |
Excluded Files |
The Exclude Files option specifies files to be excluded from processing. You may enter a file name in the file field or use the file list button to bring up a list of files to select from. The defragmentation process ignores files matching the listed file specifications. Any file indicated in the EXCLUDE list and in either the FREQUENT or DORMANT lists is excluded from processing. The file-spec field allows wildcard characters. You can specify wildcard characters in place of the directory name, file name, file type, or file version number field. The default file-spec for all wildcard operations is DISK:[000000...]*.*;*. Specifying *.TMP;* selects all *.TMP;* files on the entire volume. The defragmentation process always excludes files marked NOMOVE, open files, files excluded in an options file, and files excluded using the Ignore option. |
Files in Hotfile Database | This option causes the defragmenter to query the appropriate hotfile database and append the list of hotfiles to the defragmenter’s frequent file list. |
Dormant Files |
The Dormant Files option indicates files to be considered dormant when final file placement decisions are made. You may enter the file name or use the file list button to bring up a list of files to chose from. Dormant files are placed on the volume to allow placing other files in optimum disk locations. In general, they are placed further away from the ODS–2 data structures than Frequent files and files not classified in any manner. If a file is indicated in both the DORMANT and FREQUENT lists, it is considered dormant. If a file is indicated in both the EXCLUDE and DORMANT lists, it is excluded. NoteThe amount of free space on the volume, the number of files currently being accessed, and other factors influence file placement. The Disk File Optimizer does not guarantee file placement, but makes every effort to place files as described. The file-spec field allows wildcard characters. You can specify wildcard characters in place of the directory name, file name, file type, or file version number field. The default file-spec for all wildcard operations is DISK:[000000...]*.*;*. Specifying *.TMP;* selects all *.TMP;* files on the entire volume. |
Frequent Files |
The Frequent Files option indicates files to be considered frequently accessed when final file placement decisions are made. You may enter the file name or use the file list button to bring up a list of files to chose from. Frequent files are placed to optimize access speed. If a file is indicated in both the FREQUENT and DORMANT lists, it is considered dormant. If a file is indicated in both the FREQUENT and EXCLUDE lists, it is excluded. NoteThe amount of free space on the volume, the number of files currently being accessed, and other factors influence file placement. The Disk File Optimizer does not guarantee file placement, but makes every effort to place files as described. The file-spec field allows wildcard characters. You can specify wildcard characters in place of the directory name, file name, file type, or file version number field. The default file-spec for all wildcard operations is DISK:[000000...]*.*;*. Specifying *.TMP;* selects all *.TMP;* files on the entire volume. |
In Options File |
The Options File option provides an alternate method for associating files with the Dormant File, Exclude File, or Frequent File options. You may enter the file name or use the file list button to bring up a list of files to chose from. If the list of files for any of these options is long, you can create a separate file for this information. Each record of the options file consists of a file name followed by one of these keywords:
The following example shows the contents of an options file called MYOPTFILE.OPT. This file specifies that all files on the target device called FILE1.EXE are frequent files, all files in the [ARCHIVE] directory are to be excluded, and all files in the [OLDSTUFF] directory and its subdirectories are dormant. FILE1.EXE/FREQUENT [ARCHIVE]*.*;*/EXCLUDE [OLDSTUFF...]*.*;*/DORMANT |
5.3.1.3. Schedule Optimization
Wait for completion or not
CPU Limit
I/O Limit
Time limit
Optimize process priority
Execute a prologue command file before running the optimize process
Execute an epilogue command file after running the optimize process
Figure 5.8, “Schedule Definition” shows the Schedule Definition dialog box and Table 5.4, “Schedule Definition Dialog Box Fields” describes the dialog box information fields.
Field | Description |
---|---|
Do Not Wait For Completion |
This option allows the interface to be free while the optimization process completes. Selecting the Wait For Completion keeps the interface under the defragmentation process until it completes. This has the same effect as the /WAIT DCL qualifier. |
CPU Limit: | Enter into this filed the percentage of CPU usage for any one optimization process. The CPU percent is the percent of a single CPU resources. This has the same effect as the /CPU_LIMIT qualifier. |
I/O Limit: | Enter int this field the maximum direct I/O rate (per second) of any one optimize process. This has the same effect as the /IO_LIMIT qualifier |
Time Limit: | Specifies the delta time allowed for a given defragmentation operation. This has the same effect as the /TIME_LIMIT= DCL qualifier. |
Priority |
This is the priority that the OpenVMS scheduler uses for the defragment volume operation. The default priority is set at 4. The minimum priority is set at 3. This has the same effect as the /PRIORITY=(DEFAULT=n, MINIMUM=n) DCL qualifier. |
Prologue File | The Prologue File option identifies a DCL command file that DFO executes just before the defragmentation operation starts. This has the same effect as the /PROLOGUE= DCL qualifier. |
Epilogue File | The Epilogue File option identifies a DCL command file that DFO executes upon completion of the defragmentation operation. This has the same effect as the /EPILOGUE= DCL qualifier. |
5.3.2. Optimize Selected Files
Pull down the Optimize menu.
Select Volume.
Define the optimize parameters using the procedures in Section 5.3.1.1, “Define the Optimize Parameters”.
Restrict special files by pressing the restrict button and using the procedure in Section 5.3.1.2, “Restrict Special Files”.
Schedule the optimize process using the procedure in Section 5.3.1.3, “Schedule Optimization”.
Start the optimize process by pressing the OK or Apply button.
5.3.3. Optimize Volume Index File
Pull down the Optimize menu.
Select Volume.
Define the optimize parameters using the procedures in Section 5.3.1.1, “Define the Optimize Parameters”.
Restrict special files by pressing the restrict button and using the procedure in Section 5.3.1.2, “Restrict Special Files”.
Schedule the optimize process using the procedure in Section 5.3.1.3, “Schedule Optimization”.
Start the optimize process by pressing the OK or Apply button.
5.3.4. Abort an Optimize Process
Use this option to abort an optimize process that is currently executing.
Select the Optimize pull-down menu.
Select the Abort option.
Select the volume to abort from the Volume List box. Use caution because a double click on a entry will abort that optimize process.
Point to any one or more of the volumes listed, clicking once on each one you want to abort.
- Finish the abort action by selecting:
OK to abort the selected volumes and exit the Abort option
Apply to abort the selected volumes and remain in the Abort option
Cancel to leave the Abort option without taking any action
Figure 5.9, “The Abort Dialog Box” shows a list of volumes in the Abort dialog box.
5.4. Monitor a Volume
A process statistics window showing process information for the defragmentation process. Refer to Figure 5.12, “Defragmentation Process Statistics Window” and Table 5.5, “Defragmentation Process Statistics Window Description”.
A monitor map window showing free space and allocated space on the volume. Refer to Figure 5.13, “Defragmentation Full Volume Map Window” and Figure 5.14, “Defragmentation Partial Volume Map Window”.
Select the Monitor pull-down menu.
- Select the means by which you want to monitor allocated space. Select the Volume or Full Volume option of the Monitor pull-down menu. Refer to Figure 5.10, “Monitor Menu”.
IF you want to identify the volume by name,select the Volume option, then select the volume name from the Volume List. To view different parts of the entire volume map,use the arrows and scroll bars around the map on the defragmentation volume map window. If you chose to monitor the Volume, a Defragmentation Process Statistic Window and a Defragmentation Partial Volume Map Window will appear. Refer to Figure 5.12, “Defragmentation Process Statistics Window”, Figure 5.14, “Defragmentation Partial Volume Map Window” and Table 5.6, “Defragmentation Volume Map Window Description”.
IF you want to view the full volume, select the Full Volume option, then select the volume name from the Volume List. If you chose to monitor the Full Volume, a Defragmentation Process Statistic Window and a Defragmentation Full Volume Map Window will appear. Refer to Figure 5.12, “Defragmentation Process Statistics Window”, Figure 5.13, “Defragmentation Full Volume Map Window” and Table 5.5, “Defragmentation Process Statistics Window Description”.
To view more detailed information about the allocated space shown on the Defragmentation Volume Map, press mouse button 1 and drag the cursor over the area of the map you want to examine. A pop-up window identifies the files taking space on that area of the volume.
Figure 5.11, “Volume Map File Information” is an example of the volume map file information.
5.4.1. Defragmentation Process Statistics Window
The Defragmentation Process Statistics Window shows the process information and statistics on how files and space on the volume are allocated during defragmentation.
Figure 5.12, “Defragmentation Process Statistics Window” shows the Defragmentation Process Statistics window, and Table 5.5, “Defragmentation Process Statistics Window Description” describes the data field information.
Field |
Description |
---|---|
Process Id: | The defragmentation process ID number. |
Process: | The defragmentation process name. |
Date: | The current date and time. |
Script Name: | The name of the script being monitored. (The field applies to the Defrag PLUS variant only.) |
Operating On: | The node on which the defragmentation process is operating. |
Current Status: | The status of the defragmentation process. |
Phase: | The current defragmentation process phase. |
Elapsed Time: | The elapsed time since the start of the defragmentation process. |
Buffered I/O Count: and Rate: | The buffered I/O count and rate of the defragmentation process. |
Direct I/O Count: and Rate: | The direct I/O count and rate of the defragmentation process. |
CPU Utilization Time: and Usage | The CPU utilization (time and usage) of the defragmentation process. |
Page Fault Count: and Rate: | The page fault count and rate of the defragmentation process. |
Files Evaluated: | Number of files evaluated. |
Dormant Count: | Number of dormant files. |
Candidate Count: | Number of candidate files for defragmentation. |
Exclude Count: | Number of excluded files. |
Placed Files: | Number of placed files. |
Frequent Count: | Number of frequent files. |
Indexed Files: | Number of indexed files. |
Files Partly Defragmented: | Number of files partly defragmented. |
Dormant Files Placed: | Number of dormant files placed. |
Files Defragmented: | Number of files defragmented. |
Frequent Files Placed: | Number of frequent files placed. |
Files Processed: | Number of files processed. |
Free Space Extent Count: | Number of extents to be consolidated into free space. |
Free Space Extent Countdown: | Number of extents left to be consolidated into free space. |
Current File: | Current file being evaluated. |
5.4.2. Full Volume Window
The defragmentation full volume map window allows you to see how the storage space and free space on the full volume are allocated. Figure 5.13, “Defragmentation Full Volume Map Window” show the full volume map window and Table 5.6, “Defragmentation Volume Map Window Description” describes the window contents and how it functions.
Field | Description |
---|---|
Start LBN of Window | The starting LBN at the upper left corner of the viewport. |
Phase | The current phase of the defragmentation process. |
Volume | The name of the volume that is being defragmented. |
Allocated | Space Shows the color of allocated space on the disk volume. |
Free Space | Shows the color of free space on the disk volume. |
Mix of Allocated and Free Space | Shows the color of space that is partially allocated and free space. This entry is only on the full volume map. |
End LBN of Window | The ending LBN at the lower right corner of the viewport. |
Free Blocks | The number of free blocks on the disk volume. |
Blocks/Grid | The number of blocks in each grid on the view port. |
Current File | The current file the defragmentation process is working on. This entry is only on the full volume map. |
5.4.3. Partial Volume Window
The partial volume map window provides a closeup detailed view of how the storage space is allocated on a smaller segment of the whole volume. Table 5.6, “Defragmentation Volume Map Window Description” describes the window contents and how it functions.
5.5. Report on the State of a Volume
The report menu allows you to review the current state of disk volumes to determine if defragmentation is needed. Click on the Volume Fragmentation option of the Report menu for the two options it supports. See Figure 5.15, “Report Menu”. You can opt for a graphic or a text report of the state of the volumes.
5.5.1. Graphics Format
Click on the Graph... suboption of the Report-Volume Fragmentation menu. See Figure 5.15, “Report Menu”. The Report - Select Volume dialog appears. See Figure 5.17, “The Report Volume Selection Dialog Box” and Table 5.7, “Report Volume Option and Field Descriptions”.
Note that the first entry in the list is marked selected by default. You can select any other volume for the respective report. To select another volume, move mouse pointer to it and click.
Click on Ok. A graphical report of the state of the selected volume(s) appears on screen. See Figure 5.16, “Report Graphics Full Volume Map”. Click on Cancel to close this dialog.
Figure 5.16. Report Graphics Full Volume Map This dialog is nothing but a color coded display of how the volume is shared by its files and directories. While Start LBN and Volume are self explanatory, the following may require explanation:The colors green, cyan, blue, magenta and red represent directories, indexed files, placed files, no move files and open files respectively.
Three gray levels mark different extents. Darkest gray - allocated space, Lightest gray - free space and medium gray - mix of allocated and free space.
Blocks/grid, End LBN of Window and Free Block, are again self explanatory.
Click on a directory (green) or an open file (red) for the Volume Map File Information dialog see - Figure 5.11, “Volume Map File Information”. It has details concerning the selected entity with respect to its volume.
Click on OK to close that dialog.
Note
Click on Apply in the Graphic - Full volume Map dialog to find out if the selected volume is being defragmented currently.
5.5.2. Text Format
Click on the Text... suboption of the Report-Volume Fragmentation menu. See Figure 5.15, “Report Menu” for the Report - Select Volume dialog.
Use the following procedure to show volume information:
Select the Report pull-down menu. See Figure 5.15, “Report Menu”.
Click on the Volume fragmentation option of the Report pull-down menu for the report type list - Graph/Text report. Click on ’Text’ to select it. You will see the ’Report - Select Volume’ dialog. See Figure 5.17, “The Report Volume Selection Dialog Box” and to Table 5.7, “Report Volume Option and Field Descriptions”.
Select a volume from the list in the Show Volume options dialog box.
Select any of the options for showing volume information. Table 5.7, “Report Volume Option and Field Descriptions” describes the options.
IF you keep the Statistics option(default), and double click on the volume or click on ’OK’ you will see a scrollable page of a Fragmentation Report showing fragmentation index, Freespace Summary, and File Fragmentation Summary, plus more information that you can scroll down. Refer to Figure 5.18, “Report Volume: Statistics”.
IF you select the Histogram option, you will see that portion of the Fragmentation Report that shows the File Fragmentation Histogram for the number of files with a given number of extents and the Volume Free Space Histogram which shows the free space size in LBNs. Refer to Figure 5.19, “Report Volume: File Fragmentation Histogram” and Figure 5.20, “Report Volume: Volume Space Histogram”.
Finish the Report Volume Defragmentation operation by selecting:
OK to show the volume report and optionally create the output file you named in the Output File field. The dialog box disappears.
Apply to show the volume report and optionally create the output file you named in the Output File field. The dialog box remains.
Cancel to leave the Report option.
Field | Description |
---|---|
Free List | The Free List option is used to show the fragmentation state of the volume. It lists the location and size of all the free space extents on the volume. |
Histogram | The Histogram option is used to show the fragmentation state of a volume. It generates two histograms. The first plots the number of files against the number of extents per file and provides information about how many files are fragmented and how badly they are fragmented. The second histogram plots the number of free space extents (holes) against the size of these free space extents. It provides information about how many free space extents are on the volume and their sizes. |
Statistics | The Statistics option is used to show the volume fragmentation state. It provides a summary of the file and free space fragmentation for the volume. |
File List | The File List option is used to show the fragmentation state of a volume. It lists all files on the volume that have min_extents or more extents (fragments). By default, the number of file window mapping pointers set for the volume (INITIALIZE {volume} /WINDOW=n) plus one is used. This value lists all files that require at least one window turn to completely map. Use the field to specify the files for which you want to show the window mapping. |
Location | The Location option shows the extents (fragments) associated with all files specified in the field next to this option. If no files are specified, the Location option appends location information to all files listed with File List option. The supplied file-spec may contain wildcards in place of the directory, file name, extension, or version fields. |
Output File | The Output File option is used to show the volume fragmentation state or to show information from the scheduling database. It directs the output of the SHOW subcommand to a file. |
Chapter 6. The DECwindows Interface for Defrag Plus
In addition to the DCL command line interface, the Disk File Optimizer (DFO) software includes a DECwindows interface. This interface gives a visual reference for tasks built into the DFO software.
6.1. Introduction
$ DEFRAGMENT/INTERFACE=DECWINDOWS
The Disk File Optimizer initial window appears. Figure 6.1, “Initial Window” shows the initial window.
File – exit the DECwindows interface.
Optimize – create a script to optimize a volume, selected files, or a disks volume index file.
Script – create, modify, remove, show, schedule, and abort scripts for files or volumes.
Monitor – monitor the defragmentation process by selecting a script or volume to monitor.
Report – review the current state of a volume to determine if defragmentation is needed.
Options – set or show the Disk File Optimizer process parameters.
6.2. File Menu
The File menu serves only one purpose. It allows you to exit this instance of Disk File Optimizer application. To do so, click on the File menu for the Exit option. Click on 'Exit' to close and exit this application. Figure 6.2, “File Menu” shows the File pull-down menu.
6.3. Optimize Menu
Optimizing specific targets - a volume, file or an index file
aborting the optimize process
Note that while you use the 'Optimize' option, you will create a script to optimize the 'target'. This step is the same as creating a script from the 'Scripts' menu.
Pull down the Optimize menu see Figure 6.3, “Optimize Menu”.
- Select the target you wish to optimize:The 'Create Script to optimize a Volume' appears as in Table 6.1, “Define Dialog Box Fields”
a volume
selected files
a volume index file
To specify a script name type the script name in the script field box. If you do not enter a script name, this instance of the Disk File Optimizer application will assign a default script name for you that resembles DFG$SCRIPTxxx, where x is any hexidecimal character between 0 through F. This default script will be deleted upon successful completion of the defragmentation process.
Click on ’Reset’ to restore the content of all fields to their defaults.
Click on ’Inherit’ to browse a script list and select the script you wish to inherit properties from.
Choose a Volume, Selected Files, or Volume Index File.
If you choose the Volume option, enter a specific Volume name on the Volume insert line or click on the volume list button to get a list of volumes to select from. Refer to Figure 6.5, “Script Define Dialog Box for a Volume”.
If you choose the Selected Files option, enter a specific file name on the file insert line or click on the file list button for a list of files to select from. Refer to Figure 6.6, “Script Define Dialog Box for a File”.
If you choose the Volume Index File option, enter a specific disk name or names on the Disk insert line or click on the disk list button for a list of disks to select from. Refer to Figure 6.7, “Script Define Dialog Box for a Volume Index File”.
Fill out the rest of the Define dialog box according to the field description information in Table 6.1, “Define Dialog Box Fields”.
Click on the Restrict button in this dialog box and fill in the information fields according to the information in Section 6.4.1.2, “Restrict Special Files Dialog Box”.
Click on the Schedule button in this dialog box and fill in the schedule script information fields according to the procedure in Section 6.4.1.2, “Restrict Special Files Dialog Box”.
To complete the script creation process:
click on ’OK’ to complete the script and close the dialog box.
click on ’Cancel’ to close this dialog box and return to the previous screen.
click on ’Apply’ to save the script and keep the present dialog box open.
6.4. Script Menu
create
modify
remove
show
schedule and
abort
scripts for files or volumes.
Figure 6.4, “Script Menu” shows the Script pull-down menu.
6.4.1. Create Scripts
Pull down the Script menu.
- Select the create script option and designate the target you wish to create a script for: a Volume, Selected Files, or a Volume Index File.
Note
Note that you must define a script using the 'Script Define' buttons in the respective dialog box - see Section 6.4.1.1, “Define a Script”.
To specify a script name type the script name in the script field box. If you do not enter a script name, this instance of the Disk File Optimizer application will assign a default script name for you that resembles DFG$SCRIPTxxx, where x is any hexidecimal character between 0 through F. This default script will be deleted upon successful completion of the defragmentation process.
Click on ’Reset’ to restore the content of all fields to their defaults.
Click on ’Inherit’ to browse a script list and select the script you wish to inherit properties from.
Choose a Volume, Selected Files, or Volume Index File.
If you choose the Volume option, enter a specific Volume name on the Volume insert line or click on the volume list button to get a list of volumes to select from. Refer to Figure 6.5, “Script Define Dialog Box for a Volume”.
If you choose the Selected Files option, enter a specific file name on the file insert line or click on the file list button for a list of files to select from. Refer to Figure 6.6, “Script Define Dialog Box for a File”.
If you choose the Volume Index File option, enter a specific disk name or names on the Disk insert line or click on the disk list button for a list of disks to select from. Refer to Figure 6.7, “Script Define Dialog Box for a Volume Index File”.
Fill out the rest of the Define dialog box according to the field description information in Table 6.1, “Define Dialog Box Fields”.
Click on the Restrict button in this dialog box and fill in the information fields according to the information in Section 6.4.1.2, “Restrict Special Files Dialog Box”.
Click on the Schedule button in this dialog box and fill in the schedule script information fields according to the procedure in Section 6.4.1.2, “Restrict Special Files Dialog Box”.
To complete the script creation process:
click on ’OK’ to complete the script and close the dialog box.
click on ’Cancel’ to close this dialog box and return to the previous screen.
click on ’Apply’ to save the script and keep the present dialog box open.
6.4.1.1. Define a Script
Before you can create a script or optimize a volume or file, you have to define a script using one of the Script Define dialog boxes for Volume, Selected Files, or Volume Index File.
Figure 6.5, “Script Define Dialog Box for a Volume” shows the script define dialog box for a volume. Refer to Table 6.1, “Define Dialog Box Fields” for a description of the information fields.
Select a volume name.
Select to enable or disable write check.
Select the relative volume number of a volume set.
Select whether to defragment files and what kind of files to defragment.
Select whether to consolidate free space or not.
Select whether or not to do a volume analysis.
Select whether to notify you by log file or console message.
Select whether to report brief or full log files.
Figure 6.6, “Script Define Dialog Box for a File” shows the script define dialog box for a file.
Select a file name.
Select to enable or disable write check.
Select the relative volume number of a volume set.
Select whether to defragment files and what kind of files to defragment.
Select whether to consolidate free space or not.
Select whether or not to do a volume analysis.
Select whether to notify you by log file or console message.
Select whether to report brief or full log files.
Figure 6.7, “Script Define Dialog Box for a Volume Index File” shows the script define dialog box for a volume index file.
Select a disk.
Select whether to notify you by log file, console message, or mail message, or by all three.
Select whether to report brief or full log files.
Select whether to inherit the properties of another script.
Field | Description |
---|---|
Volume | Defragments the volume named in the volume field. This has the same effect as using the DEFRAGMENT VOLUME DCL command. |
Selected Files | Defragments the file or files named in the files field. This has the same effect as using the DEFRAGMENT FILE DCL command. |
Volume Index Files | Defragments the INDEXF.SYS of the disk named in the disk field. This has the same effect as using the DEFRAGMENT OFFLINE_VOLUME DCL command. |
Volume... | The Volume... button only appears when the Volume or Volume Index File buttons are depressed. Enter the volume name or use the Volume... button to bring up a list of volumes or disks. |
Files... | The Files... button only appears when the Selected Files button is depressed. Push the File... button file to bring up a list of files. |
Write Check |
The Write Check option requests that a read-after-write check be performed on all defragmented or placed files. This qualifier significantly extends the execution time of a defragmentation process. This has the same effect as the /WRITE_CHECK DCL qualifier. |
Relative Volume Number | Allows you to select the relative volume number of a volume set. This has the same effect as the /RVN= DCL qualifier. |
Operations |
You may elect to defragment specific files, consolidate disk space, or do an analysis check only. File defragmentation and space consolidation can be done together. Defragment Files: Allows you to select which files to defragment. Use the three-position sliding bar:
Consolidated Freespace: Consolidate the free space on the volume. Volume analysis only: Requests a volume analysis only, no defragmentation occurs. The results are available in the log file. The operations has the same effect as the /LEVEL=x DCL qualifiers as shown in Table 6.2, “Translations of Operations to DCL Command/LEVEL=x”. |
Log File |
The Log File option causes the defragmentation process to create a file containing a list of all its operations. The information in the log file varies with the presence of the Full or Brief option selections:
This has the same effect as the /LOG=log_file and /FULL or /BRIEF DCL qualifier. |
Console Message | The console message option requests that brief status and termination messages regarding defragmentation processes be sent to OPCOM. This has the same effect as the /OPCOM_NOTIFICATION DCL qualifier. |
Defragment Files | Sliding Bar | Consolidate Free Space | Volume Analysis Only | /LEVEL= |
---|---|---|---|---|
Selected | LEFT | 1 | ||
Selected | MIDDLE | 2 | ||
Selected | RIGHT | 3 | ||
Not Selected | Selected | 4 | ||
Not Selected | Not Selected | Selected | 5 |
6.4.1.2. Restrict Special Files Dialog Box
The Restrict Special Files dialog box allows you to include or exclude any special files during the defragmentation process.
Figure 6.8, “Restrict Special File Dialog Box” shows the Restrict Special Files dialog box for a volume and Table 6.3, “Restrict File of Dialog Box Fields” describes the information fields.
Files placed by the User
RMS Indexed Files
Excluded Files
Files in the hotfile database
Dormant files
Frequent files
Field | Description |
---|---|
Files Placed by User | Select this button if you wish to ignore explicitly placed files. This has the same effect at the /IGNORE=(PLACED) DCL qualifier. |
RMS Indexed Files | Select this button if you wish to ignore RMS indexed files. |
Excluded Files |
The Exclude Files option specifies files to be excluded from processing. You may enter a file name in the file field or use the file list button to bring up a list of files to select from. The defragmentation process ignores files matching the listed file specifications. Any file indicated in the EXCLUDE list and in either the FREQUENT or DORMANT lists is excluded from processing. The file-spec field allows wildcard characters. You can specify wildcard characters in place of the directory name, file name, file type, or file version number field. The default file-spec for all wildcard operations is DISK:[000000...]*.*;*. Specifying *.TMP;* selects all *.TMP;* files on the entire volume. The defragmentation process always excludes files marked NOMOVE, open files, files excluded in an options file, and files excluded using the Ignore option. |
Files in Hotfile Database | This option causes the defragmenter to query the appropriate hotfile database and append the list of hotfiles to the defragmenter’s frequent file list. |
Dormant Files |
The Dormant Files option indicates files to be considered dormant when final file placement decisions are made. You may enter the file name or use the file list button to bring up a list of files to chose from. Dormant files are placed on the volume to allow placing other files in optimum disk locations. In general, they are placed further away from the ODS–2 data structures than Frequent files and files not classified in any manner. If a file is indicated in both the DORMANT and FREQUENT lists, it is considered dormant. If a file is indicated in both the EXCLUDE and DORMANT lists, it is excluded. NoteThe amount of free space on the volume, the number of files currently being accessed, and other factors influence file placement. The Disk File Optimizer does not guarantee file placement, but makes every effort to place files as described. The file-spec field allows wildcard characters. You can specify wildcard characters in place of the directory name, file name, file type, or file version number field. The default file-spec for all wildcard operations is DISK:[000000...]*.*;*. Specifying *.TMP;* selects all *.TMP;* files on the entire volume. |
Frequent Files |
The Frequent Files option indicates files to be considered frequently accessed when final file placement decisions are made. You may enter the file name or use the file list button to bring up a list of files to chose from. Frequent files are placed to optimize access speed. If a file is indicated in both the FREQUENT and DORMANT lists, it is considered dormant. If a file is indicated in both the FREQUENT and EXCLUDE lists, it is excluded. NoteThe amount of free space on the volume, the number of files currently being accessed, and other factors influence file placement. The Disk File Optimizer does not guarantee file placement, but makes every effort to place files as described. The file-spec field allows wildcard characters. You can specify wildcard characters in place of the directory name, file name, file type, or file version number field. The default file-spec for all wildcard operations is DISK:[000000...]*.*;*. Specifying *.TMP;* selects all *.TMP;* files on the entire volume. |
In Options File |
The Options File option provides an alternate method for associating files with the Dormant File, Exclude File, or Frequent File options. You may enter the file name or use the file list button to bring up a list of files to chose from. If the list of files for any of these options is long, you can create a separate file for this information. Each record of the options file consists of a file name followed by one of these keywords:
The following example shows the contents of an options file called MYOPTFILE.OPT. This file specifies that all files on the target device called FILE1.EXE are frequent files, all files in the [ARCHIVE] directory are to be excluded, and all files in the [OLDSTUFF] directory and its subdirectories are dormant. FILE1.EXE/FREQUENT [ARCHIVE]*.*;*/EXCLUDE [OLDSTUFF...]*.*;*/DORMANT |
6.4.1.3. Schedule a Script Dialog Box
The Schedule Definition dialog box allows you choose many different script or defragmentation schedule parameters.
Figure 6.9, “Schedule Definition” shows the Schedule Definition dialog box and Table 6.4, “Schedule Definition Dialog Box Fields” describes the dialog box information fields.
Start after this time
Wait for start time
Don't reschedule
Reschedule at this interval
Reschedule continuously
Reschedule to follow script
Schedule on nodes:
Time limit
Execute a prologue command file before running the script
Execute an epilogue command file after running the script
Field | Description |
---|---|
Script Name | Identifies the name of the script to be scheduled. |
Start After This Time | Starts execution of the script after the specified time. This has the same effect as the DCL qualifier /AFTER=. |
Wait for Start Command | Keeps the specified script from executing until started by the Schedule Scripts option in the Script pull down menu. This has the same effect as the DCL qualifier /NOAFTER. |
Priority | This is the priority that the OpenVMS scheduler uses for the defragment volume operation. The default priority is set at 4. The minimum priority is set at 3. This has the same effect as the DCL qualifier /PRIORITY=(DEFAULT=n, MINIMUM=n). |
Time Limit | Specifies the delta time allowed for a given defragmentation operation. This has the same effect as the DCL qualifier /TIME_LIMIT=. |
Do not Reschedule | The DFO schedule will not reschedule this script. |
At This Interval | Specifies the delta time of the interval at which the script will be executed. This has the same effect as the DCL qualifier /INTERVAL=. |
Continuously | Causes the script to run continuously. When selected, the defragmentation script used for the process must be aborted or canceled when no longer needed. This has the same effect as the DCL qualifier /CONTINOUSLY. |
To Follow Script: | Names the script that will run before the current script is executed. The script must exist in the database. Enter a script name or click on the script list button for the list of scripts to choose from. This has the same effect as the DCL qualifier /PREDECESSOR=. |
Schedule on Nodes: | Limits the defragmentation to only those nodes listed. Enter a node, or nodes, or click on the node list button for a list of nodes to choose from. This has the same effect as the DCL qualifier /NODE=. |
Epilogue File | The Epilogue File option identifies a DCL command file that DFO executes upon completion of the defragmentation operation. This has the same effect as the /EPILOGUE= DCL qualifier. |
Prologue File | The Prologue File option identifies a DCL command file that DFO executes just before the defragmentation operation starts. This has the same effect as the /PROLOGUE= DCL qualifier. |
6.4.2. Modify a Script
This section describes how to modify existing scripts.
Pull down the Script menu.
Select the Modify Script option and a Script List selection box appears. See Figure 6.10, “The Modify Script Dialog Box”
Select a script from the script list selection box.
Select either the Apply or the OK button to bring up the Modify Script dialog box.
From this point on, follow the same procedure as if you were creating a script. These procedures are described in the Section 6.4.1.1, “Define a Script”, Section 6.4.1.2, “Restrict Special Files Dialog Box”, and Section 6.4.1.3, “Schedule a Script Dialog Box”.
6.4.3. Remove a Script
This option allows you to remove scripts from the database.
Select the Remove Script option of the Script pull-down menu.
Select the scripts from the Script List see Figure 6.11, “The Remove Script Dialog Box”.
Point to and click on the script names in the list to mark that you wish to remove them.
- To complete the remove, click on:
OK to remove the selected script(s) and exit the Remove Script option.
Cancel to leave the Remove Script option without taking any action.
Apply to remove the selected script(s) and remain in the Remove Script option.
6.4.4. Show a Script
Scripts that apply to specific nodes, either exclusively or shared by other nodes
Scripts that apply to specific disk volumes
All scripts in the database
You also have the option of creating an output file for selected scripts.
Select the Show Scripts option of the Script menu.
Click twice on a script name in the 'Scripts' box to select it.
Choose the kind of output you wish for the selected script:
IF you keep the Output File option, enter the name of the output file you want to create.
IF you do not select the output file option,the script file is visible only while using this option.
If you want to show scripts sorted by volume, proceed with Step 4, otherwise, continue to show scripts by node.
To 'limit' the scripts display to those belonging to the selected node leave the 'Limited' option selected (this is the default).
IF you select the Limited option, you limit the candidate list of scripts to those that apply only to the selected node. IF you do not wish to use the 'Limited' option,click on the option box to deselect it. The candidate list of scripts will then include every script that runs on all nodes.
Select a script in the Node box, and note that the script name gets highlighted in the Scripts box.
Proceed with Step 6.
To show the scripts that apply to a volume, select the volume. Scripts that apply to the volume are listed in the Scripts box.
Select a script that applies to a Volume, and note the script name gets highlighted in the Scripts box.
To see a script, double click on the script name in the Scripts field or press Return, or click on the Apply button. The contents of the script appear in the area below the script name.
This feature allows you to see more than one script at a time. To see additional scripts, select their names.
- Finish the show script operation by clicking on:
OK to produce the output file named in the Output File field
Apply to leave the Show Script dialog box and optionally produce the output file named in the Output File field
Cancel to quit and not produce any further output
6.4.5. Schedule a Script
This section describes how to schedule a defragmentation script.
Select the Script pull-down menu.
Select the Schedule Script option of the Script pull-down menu for the script list box. See Figure 6.13, “Script List Dialog Box”.
Select all the scripts you want for scheduling actions from the Script list and click on either the OK or the Apply button. This will bring up the Schedule Scripts dialog box. Refer to Figure 6.14, “Schedule Script”.
Take any of the actions on the script outlined in Table 6.5, “Script Scheduling Actions”.
- To finish the scheduling action click on:
OK button to apply the modifications and leave the dialog box.
Cancel button to quit and not take any scheduling actions on the named script.
Apply button to apply the scheduling options selected. You may take action on another script by entering the name of the script in the Script Name field.
Option | Description |
---|---|
Script Name | Name of script for scheduling action. |
Cancel | Cancels the next scheduled execution of the specified script. Normal scheduling resumes thereafter. |
Disable | This option disables the script from execution. |
Enable | This option enables a previously disabled script. Once enabled, the script operates normally. |
Start | Starts execution of the script identified. |
Start/After | Starts execution of the script when the specified time is reached. Enter the time in the field below the option. |
6.4.6. Abort a Script
Use this option to stop a script that is currently executing.
Select the Script pull-down menu.
Select the Abort option.
Select the script to abort from the Script List box. Use caution because a double click on a script entry will abort that script.
Point to any one or more of the scripts listed, clicking once on each one you want to abort.
- Finish the abort action by selecting:
OK to abort the selected scripts and exit the Abort Script option
Apply to abort the selected scripts and remain in the Abort Script option
Cancel to leave the Abort Script option without taking any action
Figure 6.15, “The Abort Dialog Box” shows a list of scripts in the Abort dialog box.
6.5. Monitor a Script or Volume
The Monitor menu allows you to select a script or volume for monitoring the defragmentation process. You can view how the space is allocated on the full volume or on a partial volume in a sliding window.
A process statistics window showing process information for the defragmentation process. Refer to Figure 6.18, “Defragmentation Process Statistics Window” and Table 6.6, “Defragmentation Process Statistics Window Description”.
A monitor map window showing free space and allocated space on the volume. Refer to Figure 6.19, “Defragmentation Full Volume Map Window” and Figure 6.20, “Defragmentation Partial Volume Map Window”.
Select the Monitor pull-down menu.
- Select the means by which you want to monitor allocated space. Select the Script, Volume, or Full Volume option of the Monitor pull-down menu. Refer to Figure 6.16, “Monitor Menu”.
IF you want to identify the volume by a script, select the Script option, then select the script name from the Script List. If you choose to monitor the volume by a script, a Defragmentation Process Statistic Window and a Defragmentation Full Volume Map Window will appear. Refer to Figure 6.18, “Defragmentation Process Statistics Window”, Figure 6.19, “Defragmentation Full Volume Map Window” and Table 6.6, “Defragmentation Process Statistics Window Description”.
IF you want to identify the volume by name,select the Volume or Full Volume option, then select the volume name from the Volume List.
The volume options allows you to view different parts of the entire volume map,use the arrows and scroll bars around the map on the defragmentation volume map window. If you choose to monitor the Volume, a Defragmentation Process Statistic Window and a Defragmentation Partial Volume Map Window will appear. Refer to Figure 6.18, “Defragmentation Process Statistics Window”, Figure 6.20, “Defragmentation Partial Volume Map Window” and Table 6.7, “Defragmentation Volume Map Window Description”.
To view the full volume, select the Full Volume option, then select the volume name from the Volume List. If you choose to monitor the Full Volume, a Defragmentation Process Statistic Window and a Defragmentation Full Volume Map Window will appear. Refer to Figure 6.18, “Defragmentation Process Statistics Window”, Figure 6.19, “Defragmentation Full Volume Map Window” and Table 6.6, “Defragmentation Process Statistics Window Description”.
To view more detailed information about the allocated space shown on the Defragmentation Volume Map, press mouse button 1 and drag the cursor over the area of the map you want to examine. A pop-up window identifies the files taking space on that area of the volume.
Figure 6.17, “Volume Map File Information” is an example of the volume map file information.
6.5.1. Defragmentation Process Statistics Window
The Defragmentation Process Statistics Window shows the process information and statistics on how files and space on the volume are allocated during defragmentation.
Figure 6.18, “Defragmentation Process Statistics Window” shows the Defragmentation Process Statistics window, and Table 6.6, “Defragmentation Process Statistics Window Description” describes the data field information.
Field |
Description |
---|---|
Process Id: | The defragmentation process ID number. |
Process: | The defragmentation process name. |
Date: | The current date and time. |
Script Name: | The name of the script being monitored. (The field applies to the Defrag PLUS variant only.) |
Operating On: | The node on which the defragmentation process is operating. |
Current Status: | The status of the defragmentation process. |
Phase: | The current defragmentation process phase. |
Elapsed Time: | The elapsed time since the start of the defragmentation process. |
Buffered I/O Count: and Rate: | The buffered I/O count and rate of the defragmentation process. |
Direct I/O Count: and Rate: | The direct I/O count and rate of the defragmentation process. |
CPU Utilization Time: and Usage | The CPU utilization (time and usage) of the defragmentation process. |
Page Fault Count: and Rate: | The page fault count and rate of the defragmentation process. |
Files Evaluated: | Number of files evaluated. |
Dormant Count: | Number of dormant files. |
Candidate Count: | Number of candidate files for defragmentation. |
Exclude Count: | Number of excluded files. |
Placed Files: | Number of placed files. |
Frequent Count: | Number of frequent files. |
Indexed Files: | Number of indexed files. |
Files Partly Defragmented: | Number of files partly defragmented. |
Dormant Files Placed: | Number of dormant files placed. |
Files Defragmented: | Number of files defragmented. |
Frequent Files Placed: | Number of frequent files placed. |
Files Processed: | Number of files processed. |
Free Space Extent Count: | Number of extents to be consolidated into free space. |
Free Space Extent Countdown: | Number of extents left to be consolidated into free space. |
Current File: | Current file being evaluated. |
6.5.2. Full Volume Window
The defragmentation full volume map window allows you to see how the storage space and free space on the full volume are allocated. Figure 6.19, “Defragmentation Full Volume Map Window” shows the full volume map window and Table 6.7, “Defragmentation Volume Map Window Description” describes the window contents and how it functions.
Field | Description |
---|---|
Start LBN of Window | The starting LBN at the upper left corner of the viewport. |
Phase | The current phase of the defragmentation process. |
Volume | The name of the volume that is being defragmented. |
Allocated | Space Shows the color of allocated space on the disk volume. |
Free Space | Shows the color of free space on the disk volume. |
Mix of Allocated and Free Space | Shows the color of space that is partially allocated and free space. This entry is only on the full volume map. |
End LBN of Window | The ending LBN at the lower right corner of the viewport. |
Free Blocks | The number of free blocks on the disk volume. |
Blocks/Grid | The number of blocks in each grid on the view port. |
Current File | The current file the defragmentation process is working on. This entry is only on the full volume map. |
6.5.3. Partial Volume Window
The partial volume map window provides a closeup detailed view of how the storage space is allocated on a smaller segment of the whole volume. Table 6.7, “Defragmentation Volume Map Window Description” describes the window contents and how it functions.
When a Defragmentation Full or Partial Volume Map Window is displayed on the screen, the File Type color bar at the bottom of the dialog helps you identify the different file types on the volume map.
Directories GREEN Dormant Files YELLOW Exclude Files ORANGE Frequent Files BLUE General Files BLACK
6.6. Report on the State of a Volume
The report menu allows you to review the current state of the volumes to determine if defragmentation is needed. Click on the Report menu for the two options it supports. See Figure 6.21, “Report Menu”. You can opt for a graphic or a text report of the state of the volumes.
6.6.1. Graphics Format
Click on the Graph... suboption of the Report-Volume Fragmentation menu. See Figure 6.21, “Report Menu”. The Report - Select Volume dialog appears. See Figure 5.17, “The Report Volume Selection Dialog Box” and Table 6.8, “Report Volume Option and Field Descriptions”.
Note that the first entry in the list is marked selected by default. You can select any other volume for the respective report. To select another volume, move mouse pointer to it and click.
Click on OK.
A graphical report of the state of the selected volume(s) appears in the dialog. See Figure 6.22, “Report Graphics Full Volume Map”. Click on Cancel to close this image dialog.
This dialog is nothing but a color coded window of how the volume is shared by its files and directories. The first line in this dialog shows the Start LBN and Volume id - both of which are self explanatory.
The multicolored grid below the first line is actually a map of the volume's contents.
Three gray levels mark different extents. Darkest gray - allocated space, Lightest gray - free space and medium gray - mix of allocated and free space.
Blocks/grid, End LBN of Window and Free Block, are again self explanatory.
The colored boxes that follow serve as the key to understanding the volume-map. The colors green, cyan, blue, magenta and red represent directories, indexed files, placed files, no move files and open files respectively.
Click on a directory (green) or an open file (red) for the Volume Map File Information dialog see - Figure 6.17, “Volume Map File Information”. It has details concerning the selected entity with respect to its volume.
Click on OK to close that dialog.
Note
Click on Apply in the Graphic - Full volume Map dialog to find out if the selected volume is being defragmented currently.
6.6.2. Text Format
Click on the Text... suboption of the Report-Volume Fragmentation menu. See Figure 6.21, “Report Menu” for the Report - Select Volume dialog.
Use the following procedure to show volume information:
Select the Report pull-down menu. See Figure 5.15, “Report Menu”.
Click on the Volume fragmentation option of the Report pull-down menu for the report type list - Graph/Text report. Click on ’Text’ to select it. You will see the ’Report - Select Volume’ dialog. See Figure 5.17, “The Report Volume Selection Dialog Box” and to Table 5.7, “Report Volume Option and Field Descriptions”.
Select a volume from the list in the Show Volume options dialog box.
Select any of the options for showing volume information. Table 5.7, “Report Volume Option and Field Descriptions” describes the options.
IF you keep the Statistics option(default), and double click on the volume or click on ’OK’ you will see a scrollable page of a Fragmentation Report showing fragmentation index, Freespace Summary, and File Fragmentation Summary, plus more information that you can scroll down. Refer to Figure 5.18, “Report Volume: Statistics”.
IF you select the Histogram option, you will see that portion of the Fragmentation Report that shows the File Fragmentation Histogram for the number of files with a given number of extents and the Volume Free Space Histogram which shows the free space size in LBNs. Refer to Figure 5.19, “Report Volume: File Fragmentation Histogram” and Figure 5.20, “Report Volume: Volume Space Histogram”.
Finish the Report Volume Defragmentation operation by selecting:
OK to show the volume report and optionally create the output file you named in the Output File field. The dialog box disappears.
Apply to show the volume report and optionally create the output file you named in the Output File field. The dialog box remains.
Cancel to leave the Report option.
Field | Description |
---|---|
Free List | The Free List option is used to show the fragmentation state of the volume. It lists the location and size of all the free space extents on the volume. |
Histogram | The Histogram option is used to show the fragmentation state of a volume. It generates two histograms. The first plots the number of files against the number of extents per file and provides information about how many files are fragmented and how badly they are fragmented. The second histogram plots the number of free space extents (holes) against the size of these free space extents. It provides information about how many free space extents are on the volume and their sizes. |
Statistics | The Statistics option is used to show the volume fragmentation state. It provides a summary of the file and free space fragmentation for the volume. |
File List |
The File List option is used to show the fragmentation state of a volume. It lists all files on the volume that have min_extents or more extents (fragments). By default, the number of file window mapping pointers set for the volume (INITIALIZE {volume} /WINDOW=n) plus one is used. This value lists all files that require at least one window turn to completely map. Use the field to specify the files for which you want to show the window mapping. |
Location | The Location option shows the extents (fragments) associated with all files specified in the field next to this option. If no files are specified, the Location option appends location information to all files listed with File List option. The supplied file-spec may contain wildcards in place of the directory, file name, extension, or version fields. |
Output File | The Output File option is used to show the volume fragmentation state or to show information from the scheduling database. It directs the output of the SHOW subcommand to a file. |
6.7. Options Menu
CPU usage
I/O limit
Process limit
Figure 6.27, “Options Menu” shows the Options pull-down menu.
6.7.1. Setting Process Limits
This option allows you to set the defragmentation process limits for the defragmentation processes on the nodes in your system and allows you to remove unwanted nodes from the database. These process limits define how much of your computing resources you want to dedicate to the defragmentation process. Figure 6.28, “Set Process Dialog Box” shows the dialog box for setting defragmentation process limits.
Field | Description |
---|---|
CPU: | Enter into this field the percentage of CPU usage for any one defragmentation process. The CPU percent is the percent of a single CPU resources. |
IO: | Enter into this field the maximum direct I/O rate (per second) of any one defragmentation process. |
MAX PROC: | Enter into this field the maximum number of defragmentation processes per node. |
Include in list: |
Use the All Nodes button to select all nodes on the VMScluster. Use the 'Only those in DB' button to select only nodes which have process parameter settings. |
Node list | This list presents all nodes in the VMScluster system from which you select nodes to change defragmentation process parameters. |
6.7.1.1. The Set Process Limits Procedure
Select the Options pull-down menu, then select Set Process Limits.
Select the node on which the defragmentation process to be changed runs.
IF you are setting process parameters for anode not previously addressed, use the All Nodes option to include nodes on the list.
IF you are setting process parameters for anode in the database, you can use either option to include nodes on the list.
- Enter the process parameters:
CPU
IO
MAX PROC
Exit the Set Process Limits option by selecting the Cancel button.
6.7.1.2. Procedure for Removing Nodes
Select the Options pull-down menu option, then select Set Process Limits.
Set the list to include only those nodes in the database by selecting the Only those in DB option.
Select the node which is to be removed from the database.
Select Remove button.
Exit the Set Process Limits option by selecting the Cancel button.
6.7.2. Showing Defragmentation Process Limits Procedure
Select the Options pull-down menu.
Select the Show Process Limits option and the Show Process Limits dialogue box appears. Refer to Figure 6.29, “The Show Process Limits Dialog Box”.
Select to produce an output file.
IF you do not want an output file, proceed with Step 4.
IF you want an output file, select the Output File option, and enter the file name.
- Finish the Show Process Limits option by selecting:
OK to leave the Show Process Limits dialog box, and optionally produce the output file.
Apply to produce and output file. The dialog box remains so you can produce additional output files.
Cancel to leave the Show Process Limits option.
Chapter 7. Callable Interface
7.1. Introduction
An introduction to using the callable interface
Details about the DFG$DEFRAGMENT and DFG$RELEASE_MEMORY routines and their arguments
Examples showing how to use the callable interface from various programming environments
7.2. Using the Callable Interface
The callable interface enables you to initiate defragmentation operations from within a program. It is also the interface Defrag PLUS uses to interact with the scheduling database. There is also a call that releases memory consumed as a result of showing the contents of defragmentation process scripts.
The callable interface is available only if you install it with Defrag PLUS software. The Defrag variant does not support the callable interface.
7.2.1. Including Files for DFG$DEFRAGMENT and DFG$RELEASE_MEMORY
To compile programs that call the DFG$DEFRAGMENT and DFG$RELEASE_MEMORY routines, you need to include the appropriate SYS$LIBRARY:DFG$DEF. xxx symbol library, where xxx stands for the default file extension of various programming languages. For example, if you were using the C programming language, you would include SYS$LIBRARY:DFG$DEF.H.
7.2.2. Linking Files with DFG$DEFRAGMENT and DFG$RELEASE_MEMORY
SYS$SHARE:DFG$DEFRAGMENTSHR/SHARESYS$MESSAGE:DFG$MESSAGE/SHARE
$ LINK MYPROG.OBJ[,OTHERS.OBJ...],LINK_OPTIONS_FILE.OPT/OPTIONS
7.3. DFG$DEFRAGMENT Routine
This section describes the DFG$DEFRAGMENT routine.
DFG$DEFRAGMENT routine
DFG$DEFRAGMENT routine — The DFG$DEFRAGMENT routine updates the scheduling database with information from the supplied arguments. After updating the database, DFG$DEFRAGMENT returns a completion status in R0. The actual defragmentation operation does not occur until initiated by a scheduler process running on the target nodes.
Format
DFG$DEFRAGMENT
[dfg_list] [sch_list]Description
DEFRAGMENT—Defragments a file, a group of files, or a volume
ABORT—Aborts a defragmentation process
CANCEL—Cancels the next scheduled defragmentation process
DISABLE—Disables a scheduled defragmentation operation
ENABLE—Enables a disabled defragmentation operation
REMOVE—Removes a defragmentation operation from the scheduling database
SET—Sets defragmentation process parameters
SHOW—Shows information about the defragmentation process
START—Starts a defragmentation process
Returns
Longword condition value returned in R0. The condition values that DFG$DEFRAGMENT returns are listed under CONDITION VALUES RETURNED.
Arguments
Table 7.1, “Arguments and Values for DFG$DEFRAGMENT” lists the arguments and values for the callable interface. Detailed information for each entry in the table follows.
Argument |
Item Descriptor Fields |
Item Codes |
---|---|---|
dfg_list |
buffer length item code buffer address return length address |
DFG$K_CLASSIFY_DORM DFG$K_CLASSIFY_FREQ DFG$K_DFG_FLAGS DFG$K_EXCLUDE DFG$K_FILE DFG$K_LOG DFG$K_OFFLINE DFG$K_OPTIONS DFG$K_POST_PROCESS DFG$K_PRE_PROCESS DFG$K_VOLUME |
sch_list |
buffer length item code buffer address return length address |
DFG$K_ABORT DFG$K_AFTER DFG$K_CANCEL DFG$K_DISABLE DFG$K_ENABLE DFG$K_INHERIT DFG$K_INTERVAL DFG$K_MODIFY DFG$K_NODE DFG$K_PREDECESSOR DFG$K_REMOVE DFG$K_SCH_FLAGS DFG$K_SCRIPT DFG$K_SET_CPU DFG$K_SET_IO DFG$K_SET_PROCESSES DFG$K_SHOW_CPU DFG$K_SHOW_IO DFG$K_SHOW_PROCESSES DFG$K_SHOW_SCRIPT DFG$K_START DFG$K_TIME_LIMIT |
The dfg_list argument is the address of a list of item descriptors, each of which describes one defragmentation-specific option for this command. The list of item descriptors is terminated by a longword of zero.
Note
An error occurs if both the dfg_list and sch_list arguments are zero or are pointers to NULL item lists.
The item descriptors that make up the dfg_list have a required order. The first descriptor in the list must have either the DFG$K_FILE or DFG$K_VOLUME item code. Subsequent item descriptors have no required order.
Figure 7.1, “ITEM_LIST_3 Descriptor” shows a single item_list_3 descriptor.
DFG$DEFRAGMENT Item Descriptor Fields
- buffer length
A word containing a user-supplied integer specifying the length (in bytes) of the buffer or data associated with the buffer address field. The length of the buffer needed depends upon the item code specified in the item code field of the item descriptor. If the value of buffer length is too small, DFG$DEFRAGMENT truncates any returned data.
- item code
- A word containing a user-supplied symbolic code specifying the item of information that the user is supplying to, or receiving from, DFG$DEFRAGMENT. These symbolic names are described in the DFG$DEF.XXX files located in SYS$LIBRARY.
Note
No item code may occur more than once in either the dfg_list or sch_list item list.
- buffer address
A longword containing the user-supplied address of the buffer which contains the information being passed to DFG$DEFRAGMENT or the address of a buffer into which DFG$DEFRAGMENT writes information. The use of this field depends upon the item code specified in the item descriptor.
- return length address
If used, the return length address is a longword containing the user-supplied address of a longword in which DFG$DEFRAGMENT writes the length, in bytes, of the information it returned. For most DFG$DEFRAGMENT item codes, this field is not used and must be zero.
dfg_list Item Codes
- DFG$K_CLASSIFY_DORM
Files associated with the DFG$K_CLASSIFY_DORM item descriptor are considered dormant when final file placement decisions are made. Dormant files are placed on the volume to allow placing other files in more optimum disk locations. In general, they are placed further away from the ODS–2 data structures than files associated with the DFG$K_CLASSIFY_FREQ item descriptor and files not classified in any manner.
If a file is indicated in both the dormant and frequent lists, it is considered dormant. If a file is indicated in both the exclude and dormant lists, it is excluded.Note
The amount of free space on the volume, the number of files currently being accessed, and other factors influence file placement. The Disk File Optimizer does not guarantee file placement, but makes every effort to place files as described.
The file-spec field allows wildcard characters. You can specify wildcard characters in place of the directory name, file name, file type, or file version number field. The default file-spec for all wildcard operations is DISK:[000000...]*.*;*. Specifying *.TMP;* selects all *.TMP;* files on the entire volume.
The uses of the buffer length, buffer address, and return length address fields for the DFG$K_CLASSIFY_DORM item code are as follows:buffer length—Contains the length in bytes of a list of string descriptors pointed to by the buffer address. This value must be a multiple of eight.
buffer address—Address of a list of string descriptors (Refer to Figure 7.2, “Creating a DFG$K_XXXX Item with Descriptor List”.)
return length address—Not used; must be zero.
Figure 7.2, “Creating a DFG$K_XXXX Item with Descriptor List” illustrates the data structures used with the DFG$K_CLASSIFY_DORM, DFG$K_CLASSIFY_FREQ, DFG$K_EXCLUDE, DFG$K_FILE, and DFG$K_NODE item codes.
- DFG$K_CLASSIFY_FREQ
The DFG$K_CLASSIFY_FREQ item descriptor lists files to be considered frequently accessed when final file placement decisions are made. Frequent files are placed to optimize access speed.
If a file is indicated in both the frequent and dormant lists, it is considered dormant. If a file is indicated in both the frequent and exclude lists, it is excluded.
Note
The amount of free space on the volume, the number of files currently being accessed, and other factors influence file placement. The Disk File Optimizer does not guarantee file placement, but makes every effort to place files as described.
The file-spec field allows wildcard characters. You can specify wildcard characters in place of the directory name, file name, file type, or file version number field. The default file-spec for all wildcard operations is DISK:[000000...]*.*;*. Specifying *.TMP;* selects all *.TMP;* files on the entire volume.
The uses of the buffer length, buffer address, and return length address fields for the DFG$K_CLASSIFY_FREQ item code are as follows:buffer length—The length in bytes of a list of string descriptors pointed to by the buffer address. This value must be a multiple of eight.
buffer address—Address of a list of string descriptors. (Refer to Figure 7.2, “Creating a DFG$K_XXXX Item with Descriptor List”.)
return length address—Not used; must be zero.
- DFG$K_DFG_FLAGS
The defragment flags provide general information to the defragmentation process about this defragmentation operation. When the DFG$K_DFG_FLAGS item descriptor is created, the buffer associated with it must be (DFG$S_DFG_FLAGS * 2) bytes in size. The first half of the buffer specifies the flag values desired (if any). The second half is nonzero only if the script is inheriting characteristics from another script (that is, the DFG$K_INHERIT item descriptor is part of this list).
If a DFG$K_INHERIT item descriptor is part of this item list, the second half of the flags buffer becomes an inherit-enable mask, where each set bit corresponds to a flag with a value that should be inherited from the DFG$K_INHERIT script. To inherit a flag value from the specified DFG$K_INHERIT script, set the mask (in the second half of the DFG_FLAGS buffer) corresponding to the field you want to inherit. For example, to inherit the defragmentation level from the DFG$K_INHERIT script, set the bits associated with DFG$M_LEVEL mask in the second longword.
Figure 7.3, “Flags and Inherit Enable” illustrates this concept.
The following bit masks are defined for DFG_FLAGS:DFG$M_CONSOLIDATE_FREESPACE—(1) runs free space consolidation algorithm. (0) does not run free space consolidation algorithm.
DFG$M_DEFAULT_PRIORITY—Specifies the default priority for the defragmentation process.
DFG$M_FULL—Provides full (1) or brief (0) error logging.
DFG$M_HONOR—Honors the placement of files with placement control information. These files become part of the exclude file list.
DFG$M_INDEXED—(1) defragments and places RMS indexed files. (0) excludes RMS indexed files.
DFG$M_ISSUE_OPCOM—(1) turns on OPCOM notification. (0) turns off OPCOM notification.
- DFG$M_LEVEL—This three-bit field can have any one of the following values:
DFG$K_LEVEL_1—Any file that is not 100 percent contiguous, or that can be selected using levels DFG$K_LEVEL_2 through DFG$K_LEVEL_4, is a candidate for defragmentation.
- DFG$K_LEVEL_2—Any file with extents that cannot be completely mapped by the mapping window, or that can be selected using levels DFG$K_LEVEL_3 or DFG$K_LEVEL_4 is a candidate for defragmentation. The default window value is 7 and can be set for a given volume using:
$ SET VOLUME {device-spec}/WINDOWS=[n]
DFG$K_LEVEL_3—Any file with retrieval pointers in more than one file header, or that can be selected using DFG$K_LEVEL_4 is a candidate for defragmentation.
DFG$K_LEVEL_4—This level is reserved for future use. It is functionally equivalent to DFG$K_LEVEL_3.
DFG$K_LEVEL_5—This level requests a volume analysis only; no defragmentation occurs. The statistical results are available in the log file, which is required when DFG$K_LEVEL_5 is specified.
DFG$M_LOG—Generates a log file. (See the DFG$K_LOG item descriptor to specify a log file.)
DFG$M_LOW_PRIORITY—Specifies the minimum priority for the defragmentation process.
DFG$M_NOTIFY—Notifies users listed in the DFG$MAIL_ADDRESS mail distribution list of defragmentation process completion.
DFG$M_RVN_TO_DEFRAG—Identifies a specific RVN of a bound volume set to defragment.
DFG$M_USE_VPA—(1) Use the hotfiles database. (0) Do not use the hotfiles database.
DFG$M_WRITE_CHECK—Performs a read-after-write check of all files moved.
Note
Every DFG$M_XXXX bit mask value, has a corresponding DFG$V_XXXX bit field definition.
The uses of the buffer length, buffer address, and return length address fields for the DFG$K_DFG_FLAGS item code are as follows:buffer length—The length of the DFG_FLAGS buffer. This value must be (DFG$S_DFG_FLAGS * 2).
buffer address—Address of the DFG_FLAGS buffer.
return length address—Not used; must be zero.
- DFG$K_EXCLUDE
Files associated with the DFG$K_EXCLUDE item descriptor are excluded from processing.
Any file associated with DFG$K_EXCLUDE and with either the DFG$K_CLASSIFY_DORM or DFG$K_CLASSIFY_FREQ item descriptor is excluded from processing.
The file-spec field allows wildcard characters. You can specify wildcard characters in place of the directory name, file name, file type, or file version number field. The default file-spec for all wildcard operations is DISK:[000000...]*.*;*. Specifying *.TMP;* selects all *.TMP;* files on the entire volume.Note
The file defragmentation utility automatically excludes system (*.SYS) files, open files, files excluded in an options file (DFG$K_OPTIONS item code), and files excluded using the DFG$V_HONOR and DFG$V_INDEXED bits of the DFG$K_DFG_FLAGS item code.
The uses of the buffer length, buffer address, and return length address fields for the DFG$K_EXCLUDE item code are as follows:buffer length—The length in bytes of a list of string descriptors pointed to by the buffer address. This value must be a multiple of eight.
buffer address—Address of a list of string descriptors. (Refer to Figure 7.2, “Creating a DFG$K_XXXX Item with Descriptor List”.)
return length address—Not used; must be zero.
- DFG$K_FILE
- The DEFRAGMENT FILE command, identifies the files to defragment on a specific volume. You must supply either this item code or the DFG$K_VOLUME item code. The uses of the buffer length, buffer address, and return length address fields for the DFG$K_FILE item code are as follows:
buffer length—Contains the length in bytes of a list of string descriptors pointed to by the buffer address. This value must be a multiple of eight.
buffer address—Address of a list of string descriptors (Refer to Figure 7.2, “Creating a DFG$K_XXXX Item with Descriptor List”.)
return length address—Not used; must be zero.
- DFG$K_LOG
The defragment process uses the specified file for logging purposes. All pertinent data (determined by the DFG$M_FULL flag) is written to this file, which is opened for exclusive write.
The uses of the buffer length, buffer address, and return length address fields for the DFG$K_LOG item code are as follows:buffer length—Length of the LOG file specification string, which has a maximum size of 255 bytes.
buffer address—Address of the buffer containing the file specification string for the LOG option. The file specification string may not contain wildcard characters.
return length address—Not used; must be zero.
- DFG$K_OFFLINE
- The uses of the buffer length, buffer address, and return length address fields for the DFG$K_OFFLINE item code are as follows:
buffer length—Length of the volume-name string, which has a maximum size of 255 bytes.
buffer address—Address of the buffer containing the volume-name string.
return length address—Not used; must be zero.
- DFG$K_OPTIONS
The options file contains information about files that are classified as frequent, dormant, or excluded.
The uses of the buffer length, buffer address, and return length address fields for the DFG$K_OPTIONS item code are as follows:buffer length—Length of the OPTIONS file specification string, which has a maximum size of 255 bytes.
buffer address—Address of the buffer containing the file specification string for the OPTIONS file. The file specification string may not contain wildcard characters.
return length address—Not used; must be zero.
- DFG$K_POST_PROCESS
- The post processing file contains DCL commands that are processed after the defragmentation process completes. The uses of the buffer length, buffer address,and return length address fields for the DFG$K_POST_PROCESS item code are as follows:
buffer length—Length of the POST_PROCESS file specification string, which has a maximum size of 255 bytes.
buffer address—Address of the buffer containing the file specification string for the POST_PROCESS file. The file specification string may not contain wildcard characters.
return length address—Not used; must be zero.
- DFG$K_PRE_PROCESS
- The preprocessing file contains DCL commands that are processed before the defragmentation process begins. The uses of the buffer length, buffer address, and return length address fields for the DFG$K_PRE_PROCESS item code are as follows:
buffer length—Length of the PRE_PROCESS file specification string, which has a maximum size of 255 bytes.
buffer address—Address of the buffer containing the file specification string for the PRE_PROCESS file. The file specification string may not contain wildcard characters.
return length address—Not used; must be zero.
- DFG$K_VOLUME
- If you would use the DEFRAGMENT VOLUME command, rather than the DEFRAGMENT FILE command for this defragmentation process, use this item code to identify the volume to be defragmented. You must supply either this item code or the DFG$K_FILE item code. The uses of the buffer length, buffer address, and return length address fields for the DFG$K_VOLUME item code are as follows:
buffer length—Length of the volume-name string, which has a maximum size of 255 bytes.
buffer address—Address of the buffer containing the volume-name string.
return length address—Not used; must be zero.
sch_list
VMS Usage: item_list_3 type: longword (unsigned) access: read_only mechanism: by reference The sch_list argument is the address of a list of item descriptors, each of which describes one scheduler-specific option for this command. The list of item descriptors is terminated by a longword of zero.
The sch_list argument is not required; however, you must provide an argument placeholder if it is not used. Specify a longword of zero or the address of a longword containing zero as an argument placeholder.Note
An error occurs if both the dfg_list and sch_list arguments are zero or are pointers to NULL item lists.
Figure 7.1, “ITEM_LIST_3 Descriptor” shows a single item_list_3 descriptor.
If the dfg_list argument is not supplied, the item descriptors that make up the sch_list have a required order. Otherwise, there is no required order for the item descriptors in the sch_list. If the dfg_list argument is not supplied, the first descriptor in the sch_list must have one of the following item codes:DFG$K_ABORT
DFG$K_CANCEL
DFG$K_DISABLE
DFG$K_ENABLE
DFG$K_REMOVE
DFG$K_SET_XXX
DFG$K_SHOW_XXX
DFG$K_START
Most of these item codes are incompatible with each other. For example, it is invalid to have an item list containing a DFG$K_DISABLE item descriptor and a DFG$K_ENABLE item descriptor. The exceptions are the DFG$K_SET_XXX and DFG$K_SHOW_XXX item codes. It is valid to have an item list containing any combination of SET item descriptors, or an item list containing any combination of SHOW item descriptors. A combination of SET and SHOW item descriptors is not allowed.
Each item code is related directly to an associated DCL command. For example, DFG$K_ABORT has the same effect as the DCL command, DEFRAGMENT ABORT {script-name}.
sch_list Item Codes
- DFG$K_ABORT
DFG$DEFRAGMENT queues an abort request for the specified script. The script is aborted when the scheduler processes the abort request.
The uses of the buffer length, buffer address, and return length address fields for the DFG$K_ABORT item code are as follows:buffer length—Length of the script-name in bytes. The maximum size of a script-name is 64 bytes.
buffer address—Address of the script-name buffer.
return length address—Not used; must be zero.
The script-name can be as follows:A valid ASCII script-name. In this case, the specified script is aborted.
An unsigned longword that has been assigned the value DFG$K_ALL_SCRIPTS. The buffer length field of the item descriptor must be four. In this case, DFG$DEFRAGMENT queues abort requests for all currently executing scripts.
- DFG$K_AFTER
DFG$K_AFTER indicates the time after which the scheduler is to start the requested operation.
The uses of the buffer length, buffer address, and return length address fields for the DFG$K_AFTER item code are as follows:buffer length—Length of the time specification string in bytes. The buffer must be long enough to hold an absolute date/time specification as described in the VMS Concepts Manual.
buffer address—Address of a character string buffer containing the absolute date/time specification.
return length address—Not used; must be zero.
- DFG$K_CANCEL
DFG$DEFRAGMENT queues a cancel request for the specified script. DFG$K_CANCEL skips the next execution of the script.
The uses of the buffer length, buffer address, and return length address fields for the DFG$K_CANCEL item code are as follows:buffer length—Length of the script-name in bytes. The maximum size of a script-name is 64 bytes.
buffer address—Address of the script-name buffer.
return length address—Not used; must be zero.
The script-name can be as follows:A valid ASCII script-name. In this case, the specified script is canceled.
An unsigned longword that has been assigned the value DFG$K_ALL_SCRIPTS. The buffer length field of the item descriptor must be four. In this case, DFG$DEFRAGMENT queues cancel requests for all scripts.
- DFG$K_DISABLE
DFG$DEFRAGMENT disables the specified script. Once disabled, the script cannot execute until enabled using the DFG$K_ENABLE item code.
The uses of the buffer length, buffer address, and return length address fields for the DFG$K_DISABLE item code are as follows:buffer length—Length of the script-name in bytes. The maximum size of a script-name is 64 bytes.
buffer address—Address of the script-name buffer.
return length address—Not used; must be zero.
The script-name can be:A valid ASCII script-name. In this case, the specified script is disabled.
An unsigned longword that has been assigned the value DFG$K_ALL_SCRIPTS. The buffer length field of the item descriptor must be four. In this case, DFG$DEFRAGMENT queues disable requests for all scripts.
- DFG$K_ENABLE
DFG$DEFRAGMENT enables the specified script. Once enabled, the script operates normally.
The uses of the buffer length, buffer address, and return length address fields for the DFG$K_ENABLE item code are as follows:buffer length—Length of the script-name in bytes. The maximum size of a script-name is 64 bytes.
buffer address—Address of the script-name buffer.
return length address—Not used; must be zero.
The script-name can be:A valid ASCII script-name. In this case, the specified script is enabled.
An unsigned longword that has been assigned the value DFG$K_ALL_SCRIPTS. The buffer length field of the item descriptor must be four. In this case, DFG$DEFRAGMENT queues enable requests for all scripts.
- DFG$K_INHERIT
- The DFG$K_INHERIT item descriptor specifies the name of a script that is to be inherited as well as a longword bit mask (INHERIT_MASK) that indicates which fields in the script may be inherited. The INHERIT_MASK structure has the following bit definitions:
DFG$V_INHERIT_AFTER – When set to (1), the start time of an inherit script can be copied to the new script. When reset to (0), the start time cannot be copied.
DFG$V_INHERIT_DORMANT – When set to (1), the dormant file list of an inherit script can be copied to the new script. When reset to (0), the dormant file list cannot be copied.
DFG$V_INHERIT_EXCLUDE – When set to (1), the exclude file list of an inherit script can be copied to the new script. When reset to (0), the exclude file list cannot be copied.
DFG$V_INHERIT_FILE – When set to (1), the file or list of files to be defragmented can be copied from an inherit script to the new script. When reset to (0), the file list cannot be copied.
DFG$V_INHERIT_FREQUENT – When set to (1), the frequent file list of an inherit script can be copied to the new script. When reset to (0), the frequent file list cannot be copied.
DFG$V_INHERIT_INTERVAL – When set to (1), the interval of an inherit script can be copied to the new script. When reset to (0), the interval cannot be copied.
DFG$V_INHERIT_LOG – When set to (1), the log file specification of an inherit script can be copied to the new script. When reset to (0), the log file specification cannot be copied.
DFG$V_INHERIT_NODE – When set to (1), the node list associated with the inherit script can be copied to the new script. When reset to (0), the node list cannot be copied.
DFG$V_INHERIT_OPTIONS – When set to (1), the options file specification of the inherit script can be copied to the new script. When reset to (0), the options file specification cannot be copied.
DFG$V_INHERIT_POST_PROC – When set to (1), the postprocessing file specification of the inherit script can be copied to the new script. When reset to (0), the postprocessing file specification cannot be copied.
DFG$V_INHERIT_PRE_PROC – When set to (1), the preprocessing file specification of the inherit script can be copied to the new script. When reset to (0), the preprocessing file specification cannot be copied.
- DFG$V_INHERIT_PREDECESSOR – When set to (1), the predecessor associated with the inherit script can be copied to the new script. When reset to (0), the predecessor cannot be copied.
Note
Inheriting the predecessor of one script to another changes the linked set of scripts. For example, if a set of linked script A,B,C exists and a new script, D is created by inheriting script C, the link changes to A, B, D, C.
DFG$V_INHERIT_TIME_LIMIT – When set to (1), the time limit associated with the inherit script can be copied to the new script. When reset to (0), the time limit cannot be copied.
DFG$DEFRAGMENT creates or modifies a database entry for this script using the following method:Copies all enabled fields from the script specified by the DFG$K_INHERIT item code to the new script. Fields are enabled by setting the corresponding bit in the INHERIT_MASK bit mask.
Overwrites any fields in this copy with those specified by other item descriptors in the item list. (Refer also to the DFG$K_DFG_FLAGS and DFG$K_SCH_FLAGS item codes.)
Names the new script as appropriate. The script name can be specified using the DFG$K_SCRIPT item descriptor or can be assigned by DFG$DEFRAGMENT.
The uses of the buffer length, buffer address, and return length address fields for the DFG$K_INHERIT item code are as follows:buffer length—Must be 12.
buffer address—Address of a three longword structure containing a string descriptor for the inherit script name string and the longword INHERIT_MASK. The script name provided indicates the script from which DFG$DEFRAGMENT inherits all characteristics except those supplied with other item descriptors in this item list.
return length address—Not used; must be zero.
- DFG$K_INTERVAL
Specifies the interval the scheduler is to use for repetitive executions of this script. The interval is specified using a delta-time specification as described in the VMS Concepts Manual.
The uses of the buffer length, buffer address, and return length address fields for the DFG$K_INTERVAL item code are as follows:buffer length—Length of the delta-time specification in bytes.
buffer address—Address of a buffer containing the delta-time specification.
return length address—Not used; must be zero.
- DFG$K_MODIFY
The DFG$K_MODIFY item descriptor specifies a script that is to be modified and a longword bit mask (INHERIT_ENABLE_MASK) that indicates which fields in the script can be modified. Other DFG$DEFRAGMENT item codes must be used to identify the specific modifications. For example, to change the time a script is scheduled to execute, the DFG$V_INHERIT_AFTER bit must be set to 1 and the DFG$K_AFTER item code supplies to value to change to.
The INHERIT_ENABLE_MASK structure has the following bit definitions:DFG$V_INHERIT_AFTER – When set to (1), the start time of the script can be modified. When reset to (0), the existing start time is removed from the script.
DFG$V_INHERIT_DORMANT – When set to (1), the dormant file list of the script can be modified. When reset to (0), the dormant file list is removed from the script.
DFG$V_INHERIT_EXCLUDE – When set to (1), the exclude file list of the script can be modified. When reset to (0), the exclude file list is removed from the script.
DFG$V_INHERIT_FILE – When set to (1), the file or list of files to be defragmented can be modified. When reset to (0), the file list is removed.
DFG$V_INHERIT_FREQUENT – When set to (1), the frequent file list of the script can be modified. When reset to (0), the frequent file list is removed from the script.
DFG$V_INHERIT_INTERVAL – When set to (1), the interval of the script can be modified. When reset to (0), the interval is removed from the script.
DFG$V_INHERIT_LOG – When set to (1), the log file specification of the script can be modified. When reset to (0), the log file specification is removed from the script.
DFG$V_INHERIT_NODE – When set to (1), the node list associated with the script can be modified. When reset to (0), the node list is removed from the script.
DFG$V_INHERIT_OPTIONS – When set to (1), the options file specification of the script can be modified. When reset to (0), the options file specification is removed from the script.
DFG$V_INHERIT_POST_PROC – When set to (1), the postprocessing file specification can be modified. When reset to (0), the postprocessing file specification is removed.
DFG$V_INHERIT_PRE_PROC – When set to (1), the preprocessing file specification can be modified. When reset to (0), the preprocessing file specification is removed.
- DFG$V_INHERIT_PREDECESSOR – When set to (1), the predecessor associated with the script can be modified. When reset to (0), the predecessor is removed from the script.
Note
Modifying the predecessor of a script changes the linked set of scripts. For example, if a set of linked scripts A, B, C exists and B is modified to have no predecessor, then the link changes to B, C.
DFG$V_INHERIT_SCRIPT – When set to (1), the script name associated with the script can be modified. When reset to (0), the script name is removed.
DFG$V_INHERIT_TIME_LIMIT – When set to (1), the time limit associated with the script can be modified. When reset to (0), the time limit is removed from the script.
The uses of the buffer length, buffer address, and return length address fields for the DFG$K_MODIFY item code are as follows:buffer length—Must be 12.
buffer address—Address of a three longword structure containing a string descriptor for the inherit script name string and the longword INHERIT_MASK. The script name provided indicates the script from which DFG$DEFRAGMENT inherits all characteristics except those supplied with other item descriptors in this item list.
return length address—Not used; must be zero.
- DFG$K_NODE
When an item list contains the DFG$K_NODE item descriptor, the command is limited to those nodes associated with DFG$K_NODE. If the DFG$K_NODE item descriptor is not present, the command applies to all nodes accessible from the local system. Figure 7.2, “Creating a DFG$K_XXXX Item with Descriptor List” illustrates how to construct a DFG$K_NODE item descriptor.
If DFG$K_SET_XXX or DFG$K_SHOW_XXX are present, DFG$K_NODE can not be the first item descriptor in the item list.
The uses of the buffer length, buffer address, and return length address fields for the DFG$K_NODE item code are as follows:buffer length—Length in bytes of a list of string descriptors pointed to by the buffer address.
buffer address—Address of a list of string descriptors that describe the node name strings. The script (or set-show data) is limited to these nodes.
return length address—Not used; must be zero.
- DFG$K_PREDECESSOR
The DFG$K_PREDECESSOR item code specifies the script to precede this one in a linked execution. Using the DFG$K_PREDECESSOR item code, scripts can be chained together to execute sequentially.
The predecessor script name must exist in the defragment database or DFG$DEFRAGMENT returns an appropriate error status. Further, any attempt to name a continuously executing script as a predecessor results in an error. Linked scripts execute sequentially.
The uses of the buffer length, buffer address, and return length address fields for the DFG$K_PREDECESSOR item code are as follows:buffer length—Length of the predecessor script-name string in bytes. The maximum size of a script-name string is 64 bytes.
buffer address—Address of a buffer containing the script-name string.
return length address—Not used; must be zero.
- DFG$K_REMOVE
DFG$REMOVE deletes the specified script from the database. If the script is currently executing, it is allowed to complete before it is deleted.
If the specified script is not in the scheduling database, DFG$DEFRAGMENT returns an error status indicating the script could not be found.
If DFG$K_REMOVE is present, it must be the first item descriptor in the item list.
The uses of the buffer length, buffer address, and return length address fields for the DFG$K_REMOVE item code are as follows:buffer length—Length of the script-name string in bytes. The maximum size of a script-name string is 64 bytes.
buffer address—Address of a buffer containing the script-name string.
return length address—Not used; must be zero.
The script-name can be:A valid ASCII script-name. In this case, the specified script is removed.
An unsigned longword that has been assigned the value DFG$K_ALL_SCRIPTS. The buffer length field of the item descriptor must be four. In this case, DFG$DEFRAGMENT queues remove requests for all scripts.
- DFG$K_SCH_FLAGS
The scheduler flags control the scheduler mode (continuous or scheduled) and command type (DEFRAGMENT FILE or DEFRAGMENTVOLUME) of this script. When the DFG$K_SCH_FLAGS item descriptor is created, the buffer associated with it must be(DFG$S_SCH_FLAGS * 2) bytes in size. The first half of the buffer specifies the flag values desired (if any). The second half is zero, unless the script is inheriting characteristics from another script (that is, the DFG$K_INHERIT item descriptor is part of this list).
If a DFG$K_INHERIT item descriptor is part of this item list, then the second half of the flags buffer becomes an inherit-enable mask, where each set bit corresponds to a flag whose value should be inherited from the DFG$K_INHERIT script. To inherit a flag value from the specified DFG$K_INHERIT script, set the mask (in the second half of the SCH_FLAGS buffer) corresponding to the field you want to inherit. To inherit the continuous flag from the DFG$K_INHERIT script, assign the second longword of the SCH_FLAGS the value of DFG$M_CONTINUOUS. Figure 7.3, “Flags and Inherit Enable” illustrates this concept.
The following mask bits are defined:DFG$M_CONTINUOUS—When set (1), the script runs in continuous mode: After completing one defragment job, the scheduler begins a new one immediately with the same script. When reset (0), the script does not run in continuous mode.
DFG$M_FILE_COMMAND—When set (1),identifies the command as a DEFRAGMENT FILE command. When reset(0), identifies the command as a DEFRAGMENT VOLUME command.
DFG$M_SPARE_SCH—Reserved for future use by VSI. Should be zero.
The uses of the buffer length, buffer address, and return length address fields for the DFG$K_SCH_FLAGS item code are as follows:buffer length—Must be (DFG$S_SCH_FLAGS * 2).
buffer address—Address of the SCH_FLAGS buffer.
return length address—Not used; must be zero.
- DFG$K_SCRIPT
The DFG$K_SCRIPT item code allows you to name the created script. If the script-name is in the database, DFG$DEFRAGMENT issues a duplicate script name error message and does not enter the new script into the database.
The uses of the buffer length, buffer address, and return length address fields for the DFG$K_SCRIPT item code are as follows:buffer length—Length of the script-name string in bytes. The maximum size of a script-name string is 64 bytes.
buffer address—Address of a buffer containing the script-name string.
return length address—Not used; must be zero.
- DFG$K_SET_CPU
- The DFG$K_SET_CPU item code sets the maximum percentage of a single CPU that is available to a defragmentation process. This percentage must be a number from 0 to 100, inclusive. If a defragmentation process exceeds this limit, the scheduler decrements the process priority of the defragmentation process once every minute until:
This limit is no longer exceeded.
The defragmentation process priority is at the SYSGEN parameter, DEFPRI, minus 1.
Momentary violations of this limit are ignored.
Depending on whether the DFG$K_NODE item descriptor is part of this item list, the CPU limit can affect all nodes or only those listed as part of the DFG$K_NODE item descriptor. Further, if DFG$K_NODE is not present, the value provided with DFG$K_SET_CPU is assigned to every node in the scheduling database and becomes the default value for subsequent nodes not already in the database.
DFG$K_SET_CPU can be the first item descriptor in an item list that optionally contains other DFG$K_SET_XXXX item descriptors and an optional DFG$K_NODE descriptor.
The uses of the buffer length, buffer address, and return length address fields for the DFG$K_SET_CPU item code are as follows:buffer length—Must be four.
buffer address—Address of a longword buffer containing the unsigned maximum, integral, CPU percentage for defragment operations. A value of zero imposes no limit.
return length address—Not used; must be zero.
- DFG$K_SET_IO
- The DFG$K_SET_IO item code sets the maximum direct I/O rate (per second) available to a defragmentation process. If a defragmentation process exceeds this limit, the scheduler decrements the process priority of the defragmentation process once every minute until:
This limit is no longer exceeded.
The defragmentation process priority is at the SYSGEN parameter, DEFPRI, minus 1.
Momentary violations of this limit are ignored.
Depending on whether the DFG$K_NODE item descriptor is part of this item list, the I/O limit may affect all nodes, or only those listed as part of the DFG$K_NODE item descriptor. Further, if DFG$K_NODE is not present, the value provided with DFG$K_SET_IO is assigned to every node in the scheduling database and becomes the default value for subsequent nodes not already in the database.
DFG$K_SET_IO may be the first item descriptor in an item list that optionally contains other DFG$K_SET_XXXX item descriptors and an optional DFG$K_NODE descriptor.
The uses of the buffer length, buffer address, and return length address fields for the DFG$K_SET_IO item code are as follows:buffer length—Must be four.
buffer address—Address of a longword buffer containing the unsigned maximum I/O rate for defragment operations. If zero is specified, no limit is imposed.
return length address—Not used; must be zero.
- DFG$K_SET_PROCESSES
The DFG$K_SET_PROCESSES item code limits the number of defragmentation processes that the scheduler starts on a given node. If the number of defragmentation processes is greater than or equal to the process limit, the scheduler does not start additional defragmentation processes.
The scheduler does not abort scripts to reduce the number of defragmentation processes. Instead, it stops creating new processes and allows normal process completion to reduce the number of concurrent defragmentation processes.
Depending on whether the DFG$K_NODE item descriptor is part of this item list, the process limit may affect all nodes or only those listed as part of the DFG$K_NODE item descriptor. Further, if DFG$K_NODE is not present, the value provided with DFG$K_SET_PROCESSES is assigned to every node in the scheduling database and becomes the default value for subsequent nodes not already in the database.
The uses of the buffer length, buffer address, and return length address fields for the DFG$K_SET_PROCESSES item code are as follows:buffer length—Must be four.
buffer address—Address of an unsigned longword buffer containing the maximum number of defragmentation processes allowed on each node of the VAXcluster (DFG$K_NODE not present) or on the given nodes (DFG$K_NODE present). Specifying a limit of zero imposes no limit.
return length address—Not used; must be zero.
- DFG$K_SHOW_CPU
- When the DFG$K_SHOW_CPU item descriptor is encountered, DFG$DEFRAGMENT returns the following data in the user-supplied buffer:
If DFG$K_NODE is present:
The CPU limit for each node supplied in the DFG$K_NODE item descriptor.
If DFG$K_NODE is not present:
The default CPU limit applied to all nodes that do not have an explicit CPU limit.
A DFG$K_NODE item descriptor may be associated with the DFG$K_SHOW_CPU item list. DFG$K_NODE can indicate any positive number (n > 0) of node names. If multiple node names are requested, DFG$DEFRAGMENT returns the CPU percentage in the same order as the node names provided.
If the user buffer is too small for all data, the data is truncated and DFG$DEFRAGMENT returns an appropriate status.
DFG$K_SHOW_CPU may be the first item descriptor in an item list that optionally contains other DFG$K_SHOW_XXXX item descriptors and a DFG$K_NODE descriptor.
The uses of the buffer length, buffer address, and return length address fields for the DFG$K_SHOW_CPU item code are as follows:buffer length—Size of the user-supplied buffer in bytes. The length of the buffer must be at least (number_of_nodes * 4) bytes and must be an integral multiple of four.
buffer address—Address of the user-supplied buffer into which DFG$DEFRAGMENT writes the current maximum CPU percentage.
return length address—Address of a longword buffer into which DFG$DEFRAGMENT writes the number of bytes returned in the buffer pointed to by the buffer address.
- DFG$K_SHOW_IO
- When the DFG$K_SHOW_IO item descriptor is encountered, DFG$DEFRAGMENT returns the following data in the user-supplied buffer:
If DFG$K_NODE is present:
The direct I/O limit for each node supplied in the DFG$K_NODE item descriptor.
If DFG$K_NODE is not present:
The default I/O limit applied to all nodes that do not have an explicit I/O limit.
A DFG$K_NODE item descriptor may be associated with the DFG$K_SHOW_IO item descriptor. DFG$K_NODE can indicate any positive number of node names. If multiple node names are requested, DFG$DEFRAGMENT returns the I/O rate for each node in the same order as the node names provided.
If the user buffer is too small for all data, the data is truncated and DFG$DEFRAGMENT returns an appropriate status.
DFG$K_SHOW_IO may be the first item descriptor in an item list that optionally contains other DFG$K_SHOW_XXXX item descriptors and a DFG$K_NODE descriptor.
The uses of the buffer length, buffer address, and return length address fields for the DFG$K_SHOW_IO item code are as follows:buffer length—Size of the user-supplied buffer in bytes. This buffer must be at least (number_of_nodes * 4) bytes and an integral multiple of four.
buffer address—Address of the user-supplied buffer into which DFG$DEFRAGMENT writes the current maximum I/O data.
return length address—Address of a longword buffer into which DFG$DEFRAGMENT writes the number of bytes returned in the buffer pointed to by the buffer address.
- DFG$K_SHOW_PROCESSES
- When the DFG$K_SHOW_PROCESSES item descriptor is encountered, DFG$DEFRAGMENT returns the following data in the user-supplied buffer:
If DFG$K_NODE is present:
The process limit for each node supplied in the DFG$K_NODE item descriptor.
If DFG$K_NODE is not present:
The default process limit applied to all nodes that do not have an explicit process limit.
A DFG$K_NODE item descriptor may be associated with the DFG$K_SHOW_PROCESSES item descriptor. DFG$K_NODE can indicate any positive number of node names. If multiple node names are requested, DFG$DEFRAGMENT returns the process limit for each node in the same order as the node names provided.
If the user buffer is too small for all data, the data is truncated and DFG$DEFRAGMENT returns an appropriate status.
DFG$K_SHOW_PROCESSES may be the first item descriptor in an item list that optionally contains other DFG$K_SHOW_XXXX item descriptors and a DFG$K_NODE descriptor.
The uses of the buffer length, buffer address, and return length address fields for the DFG$K_SHOW_PROCESSES item code are as follows:buffer length—Size of the user-supplied buffer in bytes. This buffer must be at least (number_of_nodes * 4) bytes and an integral multiple of four.
buffer address—Address of the user-supplied buffer into which DFG$DEFRAGMENT writes the maximum processes information.
return length address—Address of a longword buffer into which DFG$DEFRAGMENT writes the number of bytes returned in the buffer pointed to by the buffer address.
- DFG$K_SHOW_SCRIPT
The DFG$K_SHOW_SCRIPT item code requests that DFG$DEFRAGMENT return information about the script associated with the DFG$K_SCRIPT item descriptor (which must be part of the item list containing the DFG$K_SHOW_SCRIPT item code). The information is returned in a buffer allocated by DFG$DEFRAGMENT. The address and length of the buffer allocated are returned in longword buffers provided by the caller.
DFG$K_SHOW_SCRIPT may be the first item descriptor in an item list that optionally contains other DFG$K_SHOW_XXXX item descriptors and a DFG$K_NODE descriptor.
The uses of the buffer length, buffer address, and return length address fields for the DFG$K_SHOW_SCRIPT item code are as follows:buffer length—Must be four, which is the length of the buffer that holds the address of the data block allocated by DFG$DEFRAGMENT.
buffer address—Address of a longword buffer that DFG$DEFRAGMENT fills with the address of the buffer it allocates to hold the script data.
return length address—Address of a longword that DFG$DEFRAGMENT fills with the number of bytes it allocated for the script data.
The buffer created by DFG$DEFRAGMENT consists of two parts. The first part is a contiguous list of VMS ITEM_LIST_2 descriptors, terminated by a longword of zero. These descriptors are identical to the ITEM_LIST_3 descriptors as shown in Figure 7.1, “ITEM_LIST_3 Descriptor”, except they do not have a return length addressfield. The second part of the script data buffer consists of all the data indicated by the descriptors in the first part.
Figure 7.4, “Show Script Data Buffer” illustrates the format of the buffer allocated and written by DFG$DEFRAGMENT.
The possible item codes associated with the ITEM_LIST_2 descriptors returned by DFG$DEFRAGMENT are:
- DFG$K_SHOW_SCRIPT_AFTER
DFG$DEFRAGMENT returns the time that was specified with the DFG$K_AFTER item descriptor when the script was originally created. The time is a VMS absolute time string. If no DFG$K_AFTER item descriptor was originally supplied, DFG$DEFRAGMENT does not return this descriptor.
The uses of the buffer length and buffer address fields of the ITEM_LIST_2 descriptor are as follows:buffer length—Length of the time string supplied in the buffer pointed to by the buffer address field.
buffer address—Address of the time string buffer.
There is only one DFG$K_SHOW_SCRIPT_AFTER item descriptor per script.
- DFG$K_SHOW_SCRIPT_DFG_FLAGS
DFG$DEFRAGMENT returns the defragmentation process flags stored in the database for this script. The flag fields are described under the DFG$K_DFG_FLAGS item descriptor.
The uses of the buffer length and buffer address fields of the ITEM_LIST_2 descriptor are as follows:buffer length—DFG$S_DFG_FLAGS.
buffer address—Address of the buffer holding the DFG_FLAGS.
There is only one DFG$K_SHOW_SCRIPT_DFG_FLAGS descriptor per script.
- DFG$K_SHOW_SCRIPT_DORMANT
DFG$DEFRAGMENT returns a file specification. The file specification indicates a file (or files, if wildcard characters are present) that will be classified dormant by the defragmentation process. This file specification was originally part of the DFG$K_CLASSIFY_DORM item descriptor. Wildcard characters and logicals are not resolved for this file specification.
Since the DFG$K_SHOW_SCRIPT_DORMANT item descriptor describes only one file specification, DFG$DEFRAGMENT returns multiple DFG$K_SHOW_SCRIPT_DORMANT item descriptors if there are multiple dormant file specifications. If there are no dormant files associated with this script, DFG$DEFRAGMENT does not return a DFG$K_SHOW_SCRIPT_DORMANT item descriptor.
The uses of the buffer length and buffer address fields of the ITEM_LIST_2 descriptor are as follows:buffer length—Length of the file specification in bytes.
buffer address—Address of the file specification.
- DFG$K_SHOW_SCRIPT_ENABLE
- DFG$DEFRAGMENT returns a word indicating whether the script is currently enabled or disabled as follows:
DFG$K_ENABLE—Script is enabled.
DFG$K_DISABLE—Script is disabled.
The uses of the buffer length and buffer address fields of the ITEM_LIST_2 descriptor are as follows:buffer length—Must be two.
buffer address—Address of a two-byte buffer containing a value of DFG$K_ENABLE or DFG$K_DISABLE.
There is only one DFG$K_SHOW_SCRIPT_ENABLE item descriptor per script.
- DFG$K_SHOW_SCRIPT_EXCLUDE
DFG$DEFRAGMENT returns a file specification. The file specification indicates a file that will be excluded by the defragmentation process. This file specification was originally part of the DFG$K_EXCLUDE item descriptor. Wildcard characters and logicals are not resolved for this file specification.
Since the DFG$K_SHOW_SCRIPT_EXCLUDE item descriptor describes only one file specification, DFG$DEFRAGMENT returns multiple DFG$K_SHOW_SCRIPT_EXCLUDE item descriptors if there are multiple exclude file specifications. If no excluded files are associated with this script, DFG$DEFRAGMENT does not return a DFG$K_SHOW_SCRIPT_EXCLUDE item descriptor.
The uses of the buffer length and buffer address fields of the ITEM_LIST_2 descriptor are as follows:buffer length—Length of the file specification in bytes.
buffer address—Address of the file specification.
- DFG$K_SHOW_SCRIPT_FILE
DFG$DEFRAGMENT returns the name of the target file or files for this script.
The uses of the buffer length and buffer address fields of the ITEM_LIST_2 descriptor are as follows:buffer length—Length of the target file-name in bytes.
buffer address—Address of the target filename.
- DFG$K_SHOW_SCRIPT_FREQUENT
DFG$DEFRAGMENT returns a file specification. The file specification indicates a file that will be classified frequent by the defragmentation process. This file specification was originally part of the DFG$K_CLASSIFY_FREQ item descriptor. Wildcard characters and logicals are not resolved for this file specification.
Since the DFG$K_SHOW_SCRIPT_FREQUENT item descriptor describes only one file specification, DFG$DEFRAGMENT returns multiple DFG$K_SHOW_SCRIPT_FREQUENT item descriptors if there are multiple frequent file specifications. If there are no frequent files associated with this script, DFG$DEFRAGMENT does not return a DFG$K_SHOW_SCRIPT_FREQUENT item descriptor.
The uses of the buffer length and buffer address fields of the ITEM_LIST_2 descriptor are as follows:buffer length—Length of the file specification in bytes.
buffer address—Address of the file specification.
- DFG$K_SHOW_SCRIPT_INTERVAL
DFG$DEFRAGMENT returns a VMS delta-time specification indicating the repeat interval for scripts that operate on a repeating schedule. If no interval was specified, DFG$DEFRAGMENT does not return this descriptor.
The uses of the buffer length and buffer address fields of the ITEM_LIST_2 descriptor are as follows:buffer length—Length of the delta-time string.
buffer address—Address of the delta-time string.
The DFG$K_SHOW_SCRIPT_INTERVAL item descriptor can occur only once per script.
- DFG$K_SHOW_SCRIPT_LOG
DFG$DEFRAGMENT returns the file specification of the log file used for this script. If the file specification contains logical names, they are not resolved. If no log file was specified with the script, DFG$DEFRAGMENT does not return this item descriptor.
The uses of the buffer length and buffer address fields of the ITEM_LIST_2 descriptor are as follows:buffer length—Length of the log file string.
buffer address—Address of the log file string.
The DFG$K_SHOW_SCRIPT_LOG item descriptor can occur only once per script.
- DFG$K_SHOW_SCRIPT_NODE
DFG$DEFRAGMENT returns a node name on which a defragmentation process associated with this script can execute. If DFG$DEFRAGMENT does not return a DFG$K_SHOW_SCRIPT_NODE item descriptor, the script may execute on any local node.
Since the DFG$K_SHOW_SCRIPT_NODE descriptor describes only one node, DFG$DEFRAGMENT returns multiple DFG$K_SHOW_SCRIPT_NODE descriptors if execution of the script can occur on more than one node.
The uses of the buffer length and buffer address fields of the ITEM_LIST_2 descriptor are as follows:buffer length—Length of the node name string in bytes.
buffer address—Address of the node name string.
- DFG$K_SHOW_SCRIPT_OPTIONS
DFG$DEFRAGMENT returns the file specification of the options file, if any, associated with this script. If no options file is associated with this script, DFG$DEFRAGMENT does not return a DFG$K_SHOW_SCRIPT_OPTIONS item descriptor.
The uses of the buffer length and buffer address fields of the ITEM_LIST_2 descriptor are as follows:buffer length—Length of the options file name string in bytes.
buffer address—Address of the options file name string.
- DFG$K_SHOW_SCRIPT_POST_PROC
DFG$DEFRAGMENT returns the file specification of the postprocessing file, if any, associated with this script. If no postprocessing file is associated with this script, DFG$DEFRAGMENT does not return a DFG$K_SHOW_SCRIPT_POST_PROC item descriptor.
The uses of the buffer length and buffer address fields of the ITEM_LIST_2 descriptor are as follows:buffer length—Length of the postprocessing file name string in bytes.
buffer address—Address of the postprocessing file name string.
- DFG$K_SHOW_SCRIPT_PRE_PROC
DFG$DEFRAGMENT returns the file specification of the preprocessing file, if any, associated with this script. If no preprocessing file is associated with this script, DFG$DEFRAGMENT does not return a DFG$K_SHOW_SCRIPT_PRE_PROC item descriptor.
The uses of the buffer length and buffer address fields of the ITEM_LIST_2 descriptor are as follows:buffer length—Length of the preprocessing file name string in bytes.
buffer address—Address of the preprocessing file name string.
- DFG$K_SHOW_SCRIPT_PREDECESSOR
DFG$DEFRAGMENT returns the name of the predecessor to this script. If no predecessor exists, DFG$DEFRAGMENT does not return a DFG$K_SHOW_SCRIPT_PREDECESSOR item descriptor.
The uses of the buffer length and buffer address fields of the ITEM_LIST_2 descriptor are as follows:buffer length—Length of the predecessor's script name.
buffer address—Address of the predecessor's script name.
The DFG$K_SHOW_SCRIPT_PREDECESSOR item descriptor may occur only once per script shown.
- DFG$K_SHOW_SCRIPT_Q_ACTION
- DFG$DEFRAGMENT returns a word indicating what action is pending for this script. The following symbolic constants are defined:
DFG$K_ABORT—An abort operation is scheduled for this script.
DFG$K_CANCEL—A cancel operation is scheduled for this script.
DFG$K_REMOVE—A remove operation is scheduled for this script.
DFG$K_SCRIPT—This script is scheduled to execute.
DFG$K_SHOW_SCRIPT_Q_CANCEL— The script is currently canceled.
The uses of the buffer length and buffer address fields of the ITEM_LIST_2 descriptor are as follows:buffer length—Must be two.
buffer address—Address of the two-byte buffer containing the Q_ACTION code.
The DFG$K_SHOW_SCRIPT_Q_ACTION item descriptor occurs once for every pending action. Thus, it may appear several times for a single script. The pending actions are returned in the order in which they will be executed.
- DFG$K_SHOW_SCRIPT_Q_REMAINING
DFG$DEFRAGMENT returns a VMS delta-time string indicating how much time is left for the current execution of a script that was given a time limit (with the DFG$K_TIME_LIMIT descriptor). If DFG$DEFRAGMENT does not return a DFG$K_SHOW_SCRIPT_Q_REMAINING item descriptor, no time limit is imposed on the script.
The uses of the buffer length and buffer address fields of the ITEM_LIST_2 descriptor are as follows:buffer length—Length of the delta-time specification in bytes.
buffer address—Address of the delta-time specification.
- DFG$K_SHOW_SCRIPT_Q_START_TIME
DFG$DEFRAGMENT returns a VMS absolute time indicating when the script will begin (1-minute intervals) if the script is scheduled to begin in the future, or it may indicate when the script started.
The uses of the buffer length and buffer address fields of the ITEM_LIST_2 descriptor are as follows:buffer length—Length of the time specification in bytes.
buffer address—Address of the time specification.
The DFG$K_SHOW_SCRIPT_Q_START_TIME item descriptor can occur only once per script.
- DFG$K_SHOW_SCRIPT_Q_STATUS
- DFG$DEFRAGMENT returns a word indicating the current abort status of the defragmentation process associated with the script. The following values may be returned:
DFG$K_ABORT_NOT_ISSUED—An abort operation is pending, but has not yet been issued.
DFG$K_ABORT_ISSUED—An abort command has been issued but the defragmentation process has not yet terminated.
DFG$K_ENGINE_ABORTED—The defragmentation process has aborted.
DFG$K_ENGINE_TERMINATED—The defragmentation process terminated on its own.
The uses of the buffer length and buffer address fields of the ITEM_LIST_2 descriptor are as follows:buffer length—Must be two.
buffer address—Address of the word containing the value of the abort status.
The DFG$K_SHOW_SCRIPT_Q_STATUS item descriptor may occur once per queue entry.
- DFG$K_SHOW_SCRIPT_SCRIPT
DFG$DEFRAGMENT returns the script name associated with this data. This item descriptor is the first one in the item list returned by DFG$DEFRAGMENT. There is one DFG$K_SHOW_SCRIPT_SCRIPT item descriptor for each script shown.
The uses of the buffer length and buffer address fields of the ITEM_LIST_2 descriptor are as follows:buffer length—Length of the script name string in bytes.
buffer address—Address of the script name string.
The DFG$K_SHOW_SCRIPT_SCRIPT item code descriptor may occur only once per script shown.
- DFG$K_SHOW_SCRIPT_SUCCESSOR
DFG$DEFRAGMENT returns the name of the script that is the successor to this script. If no successor exists, DFG$DEFRAGMENT does not return the DFG$K_SHOW_SCRIPT_SUCCESSOR item code.
The uses of the buffer length and buffer address fields of the ITEM_LIST_2 descriptor are as follows:buffer length—Length of the successor script name in bytes.
buffer address—Address of the successor script name.
- DFG$K_SHOW_SCRIPT_TIME_LIMIT
DFG$DEFRAGMENT returns a VMS delta-time specification indicating the time limit imposed on this script, if any. If the DFG$K_SHOW_SCRIPT_TIME_LIMIT item descriptor is absent, no time limit is established for this script.
The uses of the buffer length and buffer address fields of the ITEM_LIST_2 descriptor are as follows:buffer length—Length of the delta-time specification in bytes.
buffer address—Address of the delta-time specification.
- DFG$K_SHOW_SCRIPT_VOLUME
DFG$DEFRAGMENT returns the name of the target volume for this script.
The uses of the buffer length and buffer address fields of the ITEM_LIST_2 descriptor are as follows:buffer length—Length of the target volume name in bytes.
buffer address—Address of the target volume name.
- DFG$K_START
The DFG$K_START item descriptor starts the specified script.
The uses of the buffer length, buffer address, and return length address fields for the DFG$K_START item code are as follows:buffer length—Length of the script name in bytes.
buffer address—Address of the script name string.
return length address—Not used; must be zero.
- DFG$K_TIME_LIMIT
Indicates the duration of a given defragment operation. Specifying unreasonably small values (15-20 minutes or less) results in no useful defragmentation work.
The uses of the buffer length, buffer address, and return length address fields for the DFG$K_TIME_LIMIT item code are as follows:buffer length—Length of the delta-time specification string in bytes.
buffer address—Address of a character string buffer containing a delta-time specification. This buffer must be large enough to contain a VMS delta-time string as described in the VMS Concepts Manual.
return length address—Not used; must be zero.
Return Values
- DFG$_ABOSEEN
An ABORT command issued for this script had not yet completed when another ABORT command for the same script was issued.
- DFG$_DBUPDATERR
The command did not complete successfully.
- DFG$_EMPDFGSCH
Both the sch_list and the dfg_list parameters to DFG$DEFRAGMENT were not present or referenced NULL item lists.
- DFG$_INTERR
DFG$DEFRAGMENT internal error.
- DFG$_INVDFGLST
- The dfg_list passed to DFG$DEFRAGMENT was invalid, because of one of the following:
A call to DFG$DEFRAGMENT using an sch_list argument containing items that indicate the dfg_list should be empty; for example, a sch_list argument containing the DFG$K_SHOW_SCRIPT item code may not be used in a call that has a dfg_list argument.
Something was wrong with the semantics of the dfg_list, or a particular item descriptor was formatted improperly.
- DFG$_INVDSLST
Both the sch_list and the dfg_list parameters are invalid.
- DFG$_INVITEMCOMB
The DFG$K_INTERVAL item descriptor is not allowed with the DFG$K_PREDECESSOR item descriptor in a call to DFG$DEFRAGMENT.
- DFG$_INVSCHLST
The scheduler list passed to DFG$DEFRAGMENT is invalid.
- DFG$_MISSING_LOGICAL
A required logical name is not defined.
- DFG$_NOPRIV
The user had insufficient privileges to run the file defragmentation utility.
- DFG$_REMOVSEEN
A REMOVE subcommand issued for this script had not yet completed when another REMOVE subcommand for the same script was issued.
- DFG$_SCRDIS
Attempt to disable a script that was already disabled.
- DFG$_SCRENA
Attempt to enable a script that was already enabled.
- DFG$_STARTSEEN
A START command issued for this script had not yet completed when another START command for the same script was issued.
7.4. DFG$RELEASE_MEMORY Routine
This section describes the DFG$RELEASE_MEMORY routine.
DFG$RELEASE_MEMORY routine
DFG$RELEASE_MEMORY routine — The DFG$RELEASE_MEMORY routine allows you to free memory allocated to you in response to a DFG$DEFRAGMENT call to show a script (refer to the DFG$K_SHOW_SCRIPT argument to the DFG$DEFRAGMENT call). This call returns the address and length of the buffer created.
Format
DFG$RELEASE_MEMORY item_list
Description
DFG$RELEASE_MEMORY frees memory allocated to satisfy the call to show a script. This function has an item list interface with the structure shown in Figure 7.5, “Function Item List Interface”
Returns
OpenVMS usage: | cond_value |
type: | item_list_3_t |
access: | read only |
mechanism: | by reference |
Arguments
- Buffer Length
Must be zero.
- Item Code
Indicates the code that was used when DFG$$UPDATE_DATABASE allocated memory. Disk File Optimizer software allocates memory only on DFG$K_SHOW_SCRIPT item codes.
- Buffer Length Address
Address of the longword that was written by DFG$DEFRAGMENT when the memory was allocated. It contains the size of the buffer in bytes.
Appendix A. Answers to Frequently Asked Questions
This appendix contains frequently asked questions about the Disk File Optimizer( DFO).
If the system crashes, will DFO corrupt files?
No. DFO uses only published OpenVMS interfaces to the file system to accomplish its tasks. Data integrity is guaranteed by these interfaces. Further, the file optimizer never modifies nor accesses user data. If anon-going defragmentation operation is interrupted by a system crash, the volume may be left in a non-optimal state; that is,files may not be as defragmented as they could be and they may not be placed where they would have been placed had the file optimizer completed. However, when the system is brought back up,files on that volume are accessible and will not have suffered any integrity problems.
Does DFO change the modification date on the file?
No. No dates in the file header are changed.
How do I create a scheduling script?
Refer to Section 2.6.2, “Creating Scheduling Scripts for Defrag PLUS” for information on how to create scheduling scripts.
Will DFO run on my database disk (Rdb for example)?
Yes. If the database is open, DFO does not defragment the database file. If the database is closed, DFO treats the database file as any other file.
How do I check if the scheduler is running?
$ SHOW SYSTEM/OUTPUT=X.X $ SEARCH X.X DFG
218002A8 DFG$LUNTIC LEF 6 4091 0 00:01:03.21 1263 1781
How can I tell if a defragmentation process is running?
$ DEFRAGMENT SHOW */NAME/RUNNING Disk File Optimizer for OpenVMS DFG V2.9 2005, VSI OpenVMS Volume script DEFRAG_$1$DKB0 is ENABLED, LEVEL=2, device: $1$DKB0 Defragmentation process PID 2260153D is executing on NODE LUNTIC Scheduler queue contains the following operations: DEFRAGMENT VOLUME $1$DKB0 on 28-MAY-2003 17:00:00.00 Consolidate freespace Script repeat interval: 1 00:00:00.00 Minimum Priority: 3 Default Priority: 4 Script may operate on the following nodes: LUNTIC Log file: DISK$USER1:[DFG$DATABASE]DEFRAG_$1$DKB0.LOG;/FULL No prologue file specified No epilogue file specified Mail notification is ONOPCOM notification is OFF Special file handling: Exclude all specifically placed files
$ SHOW SYSTEM/OUTPUT=X.X $ SEARCH X.X DFG 226000AA DFG$LUNTIC LEF 4 3550 0 00:00:12.75 924 271 2260153E DFG$ALPHA071 LEF 5 142 0 00:00:00.22 137 148
How do I monitor the progress of a defragmentation process?
$ DEFRAGMENT MONITOR script_name or volume_name:
Refer to the MONITOR command in Chapter 3, Using Defrag or Chapter 4, Using Defrag PLUS for more information.
Can I defragment a RAID array?
Yes. A controller-created RAID array appears as a normal, but possible very large, logical volume and is defragmented as such. The logical volumes presented by the StorageWorks RAID Software for OpenVMS or POLYCENTER Disk Striping from RAID 5 arrays or stripesets may also be defragmented. When you create a script,specify the RAID array. Do not defragment individual members of the RAID array as they consist of one large file that is not fragmented and should not be moved.
Can I defragment a shadow set?
Yes. When you create a script, specify the DSAx: volume. Do not defragment individual members of the shadow set.
How do I know when it is time to defragment INDEXF.SYS.
If you receive a "file header full" error, you should defragment INDEXF.SYS. This error means that INDEXF.SYS cannot extend any more without the file header extending into another header. The file header cannot have more than one header.
If INDEXF.SYS has more than five extents, it is a candidate for defragmentation. By OpenVMS file system design, INDEXF.SYS has a minimum of four extents. By DFO product design, DFO will only defragment INDEXF.SYS if it has more than five extents.
Use the following command to check the number of extents in INDEXF.SYS:$ DEFRAGMENT SHOW volume_name:/VOLUME/LOCATION=[000000]INDEXF.SYS
How do I do an offline defragmentation of INDEXF.SYS?
Refer to OFFLINE_VOLUME command in Chapter 3, Using Defrag or Chapter 4, Using Defrag PLUS for information on how to defragment INDEXF.SYS.
Can you defragment INDEXF.SYS on a system boot volume?
No. You have to dismount the disk before you can defragment INDEXF.SYS.
How long should I expect a defragmentation operation to take?
How fragmented the volume is
How much free space is available
How busy the volume is with file creation and deletion
Many volumes can be defragmented in less than an hour. Some volumes can take more than 24 hours. The more the volume is fragmented, the more work Disk File Optimizer has to do. If this the first time the volume is defragmented, the defragmentation operation could take a long time. If the defragment processes are scheduled regularly, they will take less time.
How can I automatically cancel a script from happening on Sunday night when I do backups?
$ DEFRAGMENT MODIFY script_name/PROLOGUE=DFG$DATABASE:CANCEL_SUNDAY.COM
$! command procedure to cancel the execution of a script on Sunday $! this script must be run on Saturday so it can be cancelled on Sunday $! The command procedure must be executed as a /PROLOGUE file from a $! script $! $! get today $! $ today = f$cvtime("TODAY",,"WEEKDAY") $! $! if today is not Saturday, then get out $! $! to change the day, change Saturday to day of week before the $! day that you want to cancel execution of the defragmentor $! $ if today .nes. "Saturday" then exit $! $! we want to cancel the next execution of DFG$SCRIPT $! get script name $! $ script_name = f$trnln("DFG$SCRIPT") $! $! CANCEL the script so it will not execute tomorrow $! $ defragment cancel 'script_name' $ exit
How can I automatically keep a script from executing on Sunday and Monday?
$ DEFRAGMENT MODIFY script_name/PROLOGUE=DFG$DATABASE:ABORT_SUN_MON.COM
$! command procedure to abort the execution of a script on Sunday $! and Monday. $! $! The command procedure must be executed as a /PROLOGUE file from a $! script $! $! get today $! $ today = f$cvtime("TODAY",,"WEEKDAY") $! $! if today is Sunday or Monday then abort the script $! $ if (today .eqs. "Sunday") .or. (today .eqs. "Monday") $ then $ script_name = f$trnln("DFG$SCRIPT") $ defragment abort 'script_name' $ endif
How can I truncate directories
Some users have directories with large allocated unused blocks after files have been deleted. This results in the need to truncate these directories. DFO does not provide this feature because it is already available using the OpenVMS DCL command SET FILE/TRUNCATE file_name.DIR.
$ DIRECTORY/SIZE=ALL DIR/SIZE=ALL [SLICK]MAIL.DIR Directory DSA422:[SLICK] MAIL.DIR;1 115/140 $ SET FILE/TRUNCATE [SLICK]MAIL.DIR $ DIR/SIZE=ALL [SLICK]MAIL.DIR Directory DSA422:[SLICK] MAIL.DIR;1 115/116 Total of 1 file, 115/116 blocks.
Notice in the above example that the directory is 140 blocks in size but the end of file is at block 115. The directory is then truncated to 116 blocks with the SET FILE/TRUNCATE command.
Appendix B. Disk File Optimizer Logicals and Files
B.1. Files Added to System by the Disk File Optimizer
DFG$DATABASE (directory, typically SYS$COMMON:[000000]DFG$DATABASE.DIR) *
DFG$DATABASE:DFG$DB.DAT *
DFG$DATABASE:DFG$FILE.DAT *
DFG$DATABASE:DFG$GENERAL.DAT *
DFG$DATABASE:DFG$MAIL.DIS *
DFG$DATABASE:DFG$NODE.DAT *
DFG$DATABASE:DFG$QUEUE.DAT *
DFG$DATABASE:DFG$SCRIPT.DAT *
DFG$DATABASE:DFG$VOLUME.DAT *
SYS$COMMON:[SYS$STARTUP]DFG$STARTUP.COM
SYS$COMMON:[SYS$STARTUP]DFG$START_SCHEDULER.COM *
SYS$COMMON:[SYSEXE]DFG$CREATE_DATABASE.EXE *
SYS$COMMON:[SYSEXE]DFG$DCL.EXE
SYS$COMMON:[SYSEXE]DFG$ENGINE_MAIN.EXE
SYS$COMMON:[SYSEXE]DFG$INIT_DATABASE.EXE *
SYS$COMMON:[SYSEXE]DFG$SCHEDULER.EXE *
SYS$COMMON:[SYSEXE]DFG$STOP_SCHEDULER.EXE *
SYS$COMMON:[SYSEXE]DFG$REFORMAT_DB_RMS.EXE *
SYS$COMMON:[SYSEXE]DFG$REFORMAT_DB.EXE *
SYS$COMMON:[SYSHLP]DEFRAGMENT.HLB
SYS$COMMON:[SYSHLP]DFGxxx.RELEASE_NOTES
SYS$COMMON:[SYSHLP]DFGxxx_OPR_GUIDE
SYS$COMMON:[SYSHLP]DFGxxx_INSTALL_GUIDE
SYS$COMMON:[SYSHLP]DFGxxx_SPD
SYS$COMMON:[SYSHLP]DFGxxx_COVER_LETTER
SYS$COMMON:[SYSLIB]DFG$DEFRAGMENTSHR.EXE *
SYS$COMMON:[SYSLIB]DFG$RMSSHR.EXE *
SYS$COMMON:[SYSLIB]DFG$UTILITYSHR.EXE
SYS$COMMON:[SYSMGR]DFG$DEINSTAL.COM
SYS$COMMON:[SYSMGR]DFG$SHUTDOWN.COM
SYS$COMMON:[SYSMGR]DFG$STOP_SCHEDULER.COM *
SYS$COMMON:[SYSMSG]DFG$MESSAGE.EXE
SYS$COMMON:[SYSTEST]DFG$IVP.COM
SYS$COMMON:[DECW$DEFAULTS.USER]DFG$DW.DAT
SYS$COMMON:[DECW$DEFAULTS.USER]DFG$DW.UID
SYS$COMMON:[SYSEXE]DFG$DW.EXE
SYS$COMMON:[SYSHLP]DFG$DW.HLB
SYS$COMMON:[SYSLIB]DFG$DEF.FOR
SYS$COMMON:[SYSLIB]DFG$DEF.H
SYS$COMMON:[SYSLIB]DFG$DEF.MAR
SYS$COMMON:[SYSLIB]DFG$DEF.PAS
B.2. Logical Names
Logical names for the Disk File Optimizer begin with the prefix DFG$. Table B.1, “Logical Names” describes each logical name.
Logical Name | Installation Variant | Purpose |
---|---|---|
DFG$DATABASE | Defrag PLUS |
Equates to the device:[dir] specification where the database resides. Also located in this directory are the scheduler log files, which have a name of DFG$_xxxx.LOG, where xxxx is the name of the node on which the scheduler is running. |
DFG$DISK | All |
Provided to the EPILOGUE and PROLOGUE command files. It translates to the name of the disk on which DFO currently operates. |
DFG$MAIL_ADDRESS | Defrag PLUS |
Equates to a file name containing a mail distribution list of those who should receive notification when defragmentation processes complete. |
DFG$MESSAGE | All |
Equates to SYS$MESSAGE:DFG$MESSAGE.EXE, which is the shareable image containing all the defragmentation-specific messages. This logical is used only if you install the callable interface. |
DFG$SCRIPT | All |
Provided to the EPILOGUE and PROLOGUE command files. It translates to the name of the script associated with the DFO process. |
DFG$STATE | All |
Provided to the EPILOGUE and PROLOGUE command files. As appropriate to indicate the state of DFO to the command procedure, it translates to either of these strings PROLOGUE EPILOGUE |
DFG$STATUS | All |
Provided to the EPILOGUE and PROLOGUE command files. It translates to the current status of the DFO process. For the EPILOGUE command file, this status is the final status of the DFO process. |
DFG$ASTLM DFG$BIOLM DFG$BYTLM DFG$DIOLM DFG$ENQLM DFG$FILLM DFG$JTQUOTA DFG$PGFLQUOTA DFG$PRCLM DFG$TQELM DFG$WSDEFAULT DFG$WSEXTENT DFG$WSQUOTA | All |
These logicals affect the associated process quota of any DFO process running on the associated node. Refer to Section 4.3.5, “Defining Quotas for the Defragmentation Process” for more information. |
DFG$TRANSFERSIZE | All |
The logical, DFG$TRANSFERSIZE, helps you tune the Disk File Optimizer. The definition of this logical allows you to change the amount of data that is transferred at one time. On a volume that has files with large extents, you could wait up to 20 minutes while the system transfers these large extents before you could access the file. By defining this logical, you could access this file in less than a minute. This logical changes the impact that the Disk File Optimizer has on applications that are simultaneously accessing the same files. This logical is set to 10,000 blocks by default. You can change it by editing SYS$STARTUP:DFG$STARTUP.COM and then executing the command procedure. |
Appendix C. DEFRAGMENT SHOW Command Report
C.1. Introduction
This appendix describes the report you receive from a SHOW command of a volume for the Disk File Optimizer (DFO). This appendix describes the meaning of each line in the report.
C.2. Output from the SHOW Command
$ DEFRAGMENT SHOW DISK$ALPHA070:/VOLUME Disk File Optimizer for OpenVMS DFG V2.9 2005, VSI OpenVMS F r a g m e n t a t i o n R e p o r t DISK$ALPHA070 05-JAN-2005 16:14:10.93 The fragmentation index is 17.2 1 - 20.9 is excellent 21 - 40.9 is good 41 - 60.9 is fair 61 - 80.9 is poor 81 - 100 indicates a badly fragmented disk Approximately 12.6 (out of 80.0 possible) is due to file fragmentation Approximately 4.6 (out of 20.0 possible) is due to freespace fragmentation Freespace Summary: Total free space: 211072 blocks Percentage free: 10 (rounded) Total free extents: 23 Maximum free extent: 53316 blocks, LBN: 671852 Minimum free extent: 4 blocks, LBN: 730360 Average free extent: 9177 blocks Median free extent: 584 blocks File Fragmentation Summary: Number of files (with some allocation): 5880 Total file extents on the disk: 6366 Average number of file extents per file: 1.082653 Median number of file extents per file: 1 Most Fragmented File: [VMS$COMMON.SYSEXE]SYS$QUEUE_MANAGER.QMAN$JOURNAL;1 (171 extents)
The fragmentation index is the relative index of the fragmentation state of the volume. The index is made up of file fragmentation, 80%, and free space fragmentation, 20%. The value of 17.2 is an excellent fragmentation index. The file fragmentation portion is a number based on how fragmented the files are. If all files were contiguous, this number would be 0.0. The free space fragmentation is a number based on how fragmented the free space is. If all free space could be consolidated into one area, this number would be 0.0. As files are deleted or moved, the free space becomes fragmented. Refer to Section C.4, “Calculation of Fragmentation Index” for an explanation of how the fragmentation index is calculated. | |
The total free space value in 512 byte blocks on the volume. This is the amount of free space that you see in response to the DCL command SHOW DEVICE. | |
The percentage of free space compared to the total size of the volume. The 10% free space on this volume means it needs to be cleaned up or some files moved off. With only 10% free space, the volume will tend to fragment faster and defragmentation will take longer. | |
The total free extents is the number of areas the free space is fragmented into. The ideal number would be one. However, this number usually cannot be achieved because of files that cannot be moved. These files create areas on the volume. If no files are small enough to fit, the volume is left with some free space. | |
The maximum free extent is the number of blocks in the biggest free space area. The ideal situation would be for this number to be the same as total free space. | |
The minimum free extent is the number of blocks in the smallest free space area. | |
The average free extent is the average number of blocks of free space extents. | |
The median free extent is the median number of blocks of the free space extent. DFO calculates the median by taking the size of all free extents,sorting them, and then selecting the size of free extent in the middle. | |
The number of files on the volume with some allocation. Files with zero allocation are not counted in this number. | |
The total file extents on the volume. | |
The average number of files extents per file is the total file extents on the disk divided by the number of files (with some allocation). The lower this number, the less fragmented the volume. | |
The median number of file extents per file is the median number of file extents on the volume. DFO calculates the median by taking the number of extents for each file, sorting them, and then selecting the number in the middle. | |
The most fragmented file name and the number of extents it contains. |
C.3. Examples of the Output from the SHOW Command
- System volume
- User volume with system log files on it
- User volume
C.3.1. System Volume
Fragmentation index – the 13.6 is an excellent number considering all of the non-movable files on a system disk. Non-movable files are those installed files, those files marked NOMOVE, and those files that are open. | |
File fragmentation – the 9.2 number is caused by files like the most fragmented file with 110 extents. You cannot tell by this report, but this file is open and DFO cannot defragment it. | |
Freespace fragmentation – the 4.4 number is not bad for the system volume. Notice that the total free extents are 22. These 22 extents are caused by all of the non-movable files on the system volume. | |
Percentage free – the 7% free space is low. With only 7% free space, the volume will tend to fragment faster and defragmentation will take longer. It is time to clean up files or add another volume. | |
Total free extents – the 22 free extents is a fairly good number. This small number makes the free space fragmentation number small also. | |
Average free and median free extents – the 6730 average and 1556 median shows the free space extents are not clustered around 6730. They are spread out and tend to be more extents around the low end. This is shown in Example C.3, “System Volume: Volume Free Space Histogram”. | |
Average number of file extents per file – the 1.065 number is excellent. |
In conclusion, this volume is in great shape except it is very full.
C.3.2. User Volume With System Log Files
Fragmentation index – the 83.4 indicates this volume is badly fragmented. But this is to be expected with this volume with large open fragmented log files and very little free space. | |
File fragmentation – the 63.4 number appears to be bad, but for this volume, it cannot be improved. Not shown by this report,the volume has large open fragmented files. These log files were moved to this volume to get them off the system disk. For instance,the most fragmented file has 8179 extends. This file is also open and very large (not shown by this report). These factors make it impossible to get the fragmentation index down. | |
Freespace fragmentation – the 20.0 number cannot be larger. Notice the 303 total free extents. These numbers are caused by these log files as explained for file fragmentation. | |
Percentage free – the 4% free space is very low. With only 4% free space, the volume will tend to fragment faster and defragmentation will take longer. | |
Total free extents – the 303 free extents is a large number. This large number makes the free space fragmentation large also. | |
Average free and median free extents – the 345 average and 27 median shows the free space extents are not clustered around 345. They are spread out and tend to be more extents around the low end. This is shown in the Example C.6, “User Volume With System Log Files: Volume Free Space Histogram”. | |
Average number of file extents per file – the 1.942 number reflects what you see in the file fragmentation index. |
In conclusion, this volume is defragmented as well as it can be given the type of files on this volume. The fragmentation index of this volume could be improved if the open files could be closed and defragmented. Also, the free space could be improved by removing some files.
C.3.3. User Volume
Fragmentation index – the 1.5 indicates this volume is in excellent condition. Notice that the fragmentation is not a 0.0. However, 1.5 is excellent. Example C.8, “User Volume: File Fragmentation Histogram” shows that all of the files except one has one extent. INDEXF.SYS has four extents. This is the minimum that INDEXF.SYS can have. | |
File fragmentation – the 0.8 is an excellent number. | |
Freespace fragmentation – the 0.7 is an excellent number. Not shown in this report, the free space could not be completely defragmented because of cached directories that appear to DFO as open. | |
Percentage free – the 56% free space is an excellent number. With this much free space, newly created files will be less apt to be fragmented and the defragmentation process will take less time. | |
Total free extents – the 10 free extents is a good number. Notice how the freespace fragmentation of 0.7 is reflective of this number. | |
Average free and median free extents – the 474480 average and 18 median shows the free space extents are not clustered around 474480. They are spread out and tend to be more extents around the low end. This is shown in Example C.9, “User Volume: Volume Free Space Histogram”. The histogram also shows there are three large free space extents. | |
Average number of file extents per file – the 1.00 number reflects what you see in the file fragmentation index. |
In conclusion, this volume is in great shape.
C.4. Calculation of Fragmentation Index
80% of the index is file fragmentation
20% of the index is free space fragmentation
+-----///-----+ +-------////------+ maxblock + ^ ^ +-------+ ^ ^ +-------+ ^ | | | | ^ | | | | | | extent 1 |<–> | | | | | extent 2 |<----------------->| | | extent 3 |<----------->| where: the upper line is allocated space the lower line is free space /// indicates a file that cannot be moved The following types of files cannot be moved: 1. Reserved system file 2. File is set NOMOVE 3. File is a directory 4. Indexed file and indexed files cannot be moved 5. Placed file and placed files cannot be moved 6. Files excluded by the user
files_larger_than_a_cluster = 0 weighted_fragged_files = 0 do for each file that is larger than a cluster begin files_larger_than_a_cluster = files_larger_than_a_cluster + 1 weighted_fragged_files = weighted_fragged_files + extents_for_this_file + MAX(0,(extents_for_this_file - window_size)) end file_portion = (100 - (100 * (files_larger_than_a_cluster / weighted_fragged_files))) * .8 calculate each move_area_extent temp = total_freespace i = 0 do for each move_area_extent entry or temp goes to zero i = i + 1 temp = temp - minimum(move_area_extent[i], temp) ! i represents the best we can do given the files ! we can not move freespace_portion = (freespace_extents / i) * .2 defragment_index = file_portion + freespace_portion
Appendix D. Brief Log File Example
Appendix F. Defragmentation Messages
F.1. General Message Information
%FACILITY-L-IDENT, text
- FACILITY indicates which VMS facility or layered product is reporting the message.
- L indicates how severe an error is being reported. Table F.1, “Severity Indicators” describes the severity indicators that may appear in this field.
- IDENT is a mnemonic code that uniquely identifies the error within the reported facility.
- text is the text of the message.
Code | Meaning |
---|---|
S | Success—These messages indicate that the command is successful. In some cases, the command processing continues after issuing a success message. In other cases, the message indicates that the command processing is complete. |
I | Information—These messages provide information about unique events that occur during processing. They do not indicate errors in processing. |
W | Warning—These messages indicate that some, but not all, of your request is error free. You should verify the command or program output. |
E | Error—Error messages indicate that the output or program result is incorrect, but the system may attempt to continue execution. |
F | Fatal—Fatal messages indicate that the system cannot continue execution. |
F.1.1. Linked Messages
Frequently, more than one message occurs at a time. A series of messages can help you determine the location of an error. Linked messages usually display the return status of the different facilities called and provide a detailed explanation of the error.
F.1.2. Recovery Procedures
A command is entered incorrectly or contains a spelling or syntax error or an incorrect file specification.
A required resource is currently unavailable.
A programming error is detected during the execution of an image.
A system software or hardware problem exists.
F.1.3. Recovering from Command Entry Errors
When an error occurs following interactive command entry, you must reenter the command. Messages from the command interpreter are usually followed by a display of the portion of the command line that is rejected. Correct this portion of the line before you reenter the command.
Errors that occur while a command is executing may indicate that you have entered an invalid value for a parameter or qualifier. In these cases, you can use the DCL command HELP DEFRAGMENTATION or consult Chapter 3: Using Defrag or Chapter 4: Using Defrag PLUS to determine legal values before you reenter the command.
F.1.4. Reporting System Software or Hardware Errors
When a message notifies you that a system software or hardware error has occurred, action is required by the system operator or system manager.
The Introduction to VMS System Management Manual provides information on how to submit an SPR to VSI when you encounter a software error.
F.2. Disk File Optimizer Messages
This section lists and describes all messages generated by the Disk File Optimizer software. They are listed in alphabetical order using the IDENT field of the message.
failed to disable !AS
According to the error description, the failure is related to a specific script supplied in the message. Thus, the !AS control sequence is replaced by the name of the script that could not be disabled.
ABOFAIL1, failed to abort !AD
Explanation: DFG$DEFRAGMENT returned a failure status when it attempted to abort the specified script. This message is a summary message. Associated messages provide more detail.
User Action: Refer to associated messages to determine a course of action.
ABOFAIL2, no script was aborted
Explanation: DFG$DEFRAGMENT returned a failure status when it attempted to abort all scripts in the scheduling database. This message is a summary message. Associated messages provide more detail.
User Action: Refer to associated messages to determine a course of action.
ABORTNOTDONE, abort unsuccessful
Explanation: An ABORT subcommand was unsuccessful. This is a summary message. This message may or may not indicate an error. Associated messages provide more detail.
User Action: Refer to associated messages to determine a course of action.
ABOSEEN, abort command already issued for !AD
Explanation: An ABORT subcommand had been issued for this script but it had not yet completed when another ABORT subcommand for the same script was issued.
User Action: Wait for the command to complete.
ACCESSERR, access error on file !AD
Explanation: A QIO IO$_ACCESS function could not be performed on the given file for reasons detailed in associated messages. This message occurs only in the log file or the /MAIL_NOTIFICATION messages.
User Action: Refer to associated messages to determine a course of action.
ACLERR, BUGCHECK - Map pointer copy would run into ACLs
Explanation: The copy made of INDEXF.SYS would run into ACLs.
User Action: Clean up disk and restart program.
ASSIGNERR, channel-assign error for device !AD
Explanation: A channel could not be assigned for the indicated device.
Associated messages provide more detail.
User Action: Refer to associated messages to determine a course of action.
BITMAPCONERR, $CONNECT error on file !AD:[000000]BITMAP.SYS
Explanation: A $CONNECT RMS service was unsuccessful for the BITMAP.SYS file of the target device. The RMS error is provided in a subsequent message.
User Action: Determine a course of action based on the RMS error reported.
BITMAPOPENERR, $OPEN error on file !AD:[000000]BITMAP.SYS
Explanation: A $OPEN RMS system service could not be performed on the BITMAP.SYS file of the target device. The RMS error is provided in a subsequent message.
User Action: Determine a course of action based on the RMS error reported.
BITMAPREADERR, $READ error on file !AD:[000000]BITMAP.SYS
Explanation: A $READ RMS system service failed for the BITMAP.SYS file of the target device. The RMS error is provided in a subsequent message.
User Action: Determine a course of action based on the RMS error reported.
CACHEFLUSHERR, unable to flush extent cache for device !AD
Explanation: An IO$_ACPCONTROL extent cache flush QIO returned a failure status to the defragmentation process. The root cause is included in associated messages.
User Action: Refer to associated messages to determine a course of action.
CANCELNOTDONE, cancel unsuccessful
Explanation: A CANCEL subcommand was unsuccessful. This is a summary message. This message may or may not indicate an error.
Associated messages provide more detail.
User Action: Refer to associated messages to determine a course of action.
CANFAIL1, failed to cancel !AD
Explanation: DFG$DEFRAGMENT returned a failure status when it attempted to cancel the specified script. This message is a summary message.
Associated messages provide more detail.
User Action: Refer to associated messages to determine a course of action.
CANFAIL2, no script was canceled
Explanation: DFG$DEFRAGMENT returned a failure status when it attempted to cancel all scripts in the scheduling database. This message is a summary message. Associated messages provide more detail.
User Action: Refer to associated messages to determine a course of action.
CHECKSUMERR, Error when copying map pointers for INDEXF.SYS
Explanation: An error occurred when mapping the new INDEXF.SYS header pointers.
User Action: Submit an SPR.
CLOSEIN, error closing !AD as input
Explanation: An RMS error was encountered when trying to close an input file, such as the options file. Associated messages provide more detail.
User Action: Refer to associated messages to determine a course of action.
CLOSEOUT, error closing !AD as output
Explanation: An RMS error was encountered when trying to close an output file. Associated messages provide more detail.
User Action: Refer to associated messages to determine a course of action.
CMDUNKNOWN, unknown command; parsing error, please submit an SPR
Explanation: This is an internal error.
User Action: Submit an SPR.
CONNECTERR, $CONNECT error on log file !AD
Explanation: The RMS $CONNECT service failed for the log file (occurs in the defragmentation process). Associated messages provide the root cause.
User Action: Refer to associated messages to determine a course of action.
CONSFAIL, free-space consolidation failed for !AD
Explanation: Free-space consolidation failed for the given disk
User Action: None, unless indicated by other messages.
COPYRIGHT, © Copyright 2020 VMS Software, Inc., (VSI), L.P. CPUOUTRNG, !SL is an invalid CPU percentage; use 0-100
Explanation: User specified a CPU percent utilization limit that was not within the 0-100 range.
User Action: Specify valid CPU percentages from 0 to 100, inclusive.
CREATEERR, error creating !AD
Explanation: The $CREATE RMS service failed for the specified file.
Associated messages provide the root cause.
User Action: Refer to associated messages to determine a course of action.
CREPRCFAIL, error creating detached defragmentation process
Explanation: The scheduler could not create the detached defragmentation process. Associated messages provide more detail.
User Action: Refer to associated messages to determine a course of action.
CRESECFAIL, error creating global section
Explanation: The global section used for communications could not be created by the scheduler for reasons given in associated error messages. This error is caused by a failure status from the $CRMPSC system service, which could indicate insufficient system wide global section resources.
User Action: Refer to associated messages to determine a course of action.
DBACCCONSTR, constraint violation in relation !AD (operation !AD)
Explanation: A constraint in the database was violated. The most common reason is an attempt to enter a duplicate record. Associated messages provide more detail.
User Action: Refer to associated messages to determine a course of action.
DBACCDUP, duplicate record in relation !AD (operation !AD)
Explanation: An attempt was made to enter a duplicate record in the database. Associated messages provide more detail.
User Action: Refer to associated messages to determine a course of action.
DBACCERR2, database-access error: !AD transaction
Explanation: The database could not be accessed. The cause of this problem may be an undefined logical, corrupt database, DFG software error, or RMS software error. Associated messages provide more detail.
User Action: Verify that all DFG logicals are defined. Refer to associated messages to determine if additional action is necessary.
DBACCERR, database-access error; relation !AD, operation !AD, status !SL
Explanation: The database could not be accessed. The cause of this problem may be an undefined logical, corrupt database, DFG software error, or RMS software error.
User Action: Verify that all DFG logicals are defined. Refer to associated messages to determine if additional action is necessary.
DBACCW2, database-access warning: !AD transaction, sqlcode !SL
Explanation: The Rdb software returned a warning status to the scheduler.
The problem may be that the database is corrupt, that the disk file optimizer software has is in error, or that the Rdb software is in error.
User Action: Try the operation again. If the error persists, re-create the database. If the error persists after re-creating the database, submit an SPR.
DBACCW, database-access warning: relation !AD, operation !AD, sqlcode !SL
Explanation: The Rdb software returned a warning status to the scheduler.
The problem may be that the database is corrupt, that the disk file optimizer software is in error, or that the Rdb software is in error.
User Action: Try the operation again. If the error persists, re-create the database. If the error persists after re-creating the database, submit an SPR.
DBBUSY, accessing the defragmentation database; please wait
Explanation: Informational message that indicates the DCL interface is waiting for the database access/update to complete.
User Action: None.
DBCANTREAD, cannot read a needed record from relation !AD
Explanation: The database could not be read. The cause of this problem may be an undefined logical, corrupt database, DFG software error, or Rdb software error. This problem can also be caused if the RMU Monitor process (RDMS_MONITOR) is not executing. Associated messages provide more detail.
User Action: Verify that all DFG logicals are defined and ensure that RDMS_MONITOR is running. If RDMS_MONITOR is not running, it can be started by invoking @SYS$STARTUP:RMONSTART.COM. Refer to associated messages to determine if additional action is necessary.
DBCANTWRITE, cannot write or update a record in relation !AD
Explanation: The database could not be updated. The cause of this problem may be an undefined logical, corrupt database, DFG software error, or Rdb software error. This problem can also be caused if the RMU Monitor process (RDMS_MONITOR) is not executing. Associated messages provide more detail.
User Action: Try the command again. If the error persists, re-create the database. If the error persists after re-creating the database, submit an SPR.
DBCLEARED, database cleared
Explanation: A database has been cleared.
User Action: None.
DBCLEAR, clearing database
Explanation: A database is being cleared.
User Action: None.
DBCREATED, database created
Explanation: A database has been created.
User Action: None.
DBCREATE, creating database
Explanation: A database is being created.
User Action: None.
DBINVXLNAM, invalid translated name
Explanation: This is an internal error.
User Action: Submit an SPR.
DBNOREC, no record found in relation !AD (operation !AD)
Explanation: A database record could not be found. This error can occur if the database is corrupt, the disk file optimizer software is in error, or the Rdb software is in error.
User Action: Submit an SPR.
DBROLLBACK, database updates rolled back
Explanation: All updates to the database have been rolled back.
User Action: None
DBUPDATERR, database update failed
Explanation: This is a summary message indicating that database updates were unsuccessful. Associated messages provide more detail.
User Action: Refer to associated messages to determine a course of action.
DEACCESSERR, deaccess error on file !AD
Explanation: The specified file could not be deaccessed by the defragmentation process (using the IO$_DEACCESS QIO). Associated messages provide more detail.
User Action: Refer to associated messages to determine a course of action.
DELERR, cannot delete !AD, notification message
Explanation: An attempt to spawn a subprocess to delete the mail message sent as a result of the /MAIL_NOTIFICATION qualifier failed. This error occurs in the scheduler code.
User Action: Refer to associated messages to determine a course of action.
DFGNOSTART, defragmentation process failed to start
Explanation: This message occurs when a defragmentation process cannot be started. Associated messages indicate why. This message does not occur with Defrag PLUS.
User Action: Refer to associated messages to determine a course of action.
DFGSTART, started defragmentation process PID: !XL
Explanation: This message indicates that a defragmentation process has been started. This message does not occur with Defrag PLUS.
User Action: None.
DFGTMO, defragmentation process timed out on startup
Explanation: The defragmentation process did not map the global section created by the scheduler within a timeout period.
User Action: Ensure a copy of DFG$ENGINE_MAIN exists in SYS$SYSTEM and try the command again. If the error persists, submit an SPR.
DIOOUTRNG, !SL is an invalid direct I/O limit, use positive values
Explanation: The user specified a negative number for a direct I/O limit.
User Action: Specify positive values for the IO_LIMIT keyword parameter.
DIRVERERR, directory file !AD is not .DIR;1
Explanation: A file with the directory flag set in its file header is not version 1 or does not have the extension .DIR
User Action: Rename or delete the file.
DISFAIL1, failed to disable !AD
Explanation: This is a summary message indicating DFG$DEFRAGMENT returned a failure status for a DISABLE command. This failure is related to a specific script supplied in the message. Associated messages provide the cause of the failure.
User Action: Refer to associated messages to determine a course of action.
DISFAIL2, no script was disabled
Explanation: This is a summary message indicating the specified script was not disabled. Associated messages indicate the reason the disable operation failed.
User Action: Refer to associated messages to determine a course of action.
DISKFULL, disk !AD too full for defragmentation
Explanation: This error occurs when the defragmentation process finds that a disk is too full for defragmentation. The process experiencing the error will terminate (if a single volume or a stripe set was defragmented) or continue with the next volume in the volume set.
User Action: None.
DUPDEFRAGER, duplicate concurrent defragmentation processes for device !AD
Explanation: The defragmentation process detected a currently running defragmentation process on the target device. Concurrent defragmentation processes on the same target device are not allowed; thus, this process exits. This ensures that two defragmentation processes do not attempt to defragment the same disk at the same time.
User Action: Ensure that no two defragmentation processes attempt to defragment the same device at the same time.
DUPSCHED, duplicate concurrent scheduler on node !AD
Explanation: The scheduler detected another currently running scheduler on the current node. Concurrent schedulers on the same node are not allowed.
User Action: Ensure that no two schedulers execute on the same node at the same time.
DUPSCRPT, duplicate script name: !AD
Explanation: An attempt was made to define two scripts with the same name.
User Action: Reissue the command using a unique script name for the /SCRIPT qualifier.
EMPDFGSCH, empty defragmentation and scheduling item lists
Explanation: Both the scheduler list and the defragmentation list were empty.
User Action: If the call to DFG$DEFRAGMENT was from VSI supplied software, submit an SPR. Otherwise, correct the calling program.
EMPDFG, empty defragmentation item list
User Action: If the call to DFG$DEFRAGMENT was from VSI supplied software, submit an SPR. Otherwise, correct the calling program.
ENAFAIL1, failed to enable !AD
Explanation: This is a summary message indicating the specified script was not enabled. Associated messages indicate the reason the enable operation failed.
User Action: Refer to associated messages to determine a course of action.
ENAFAIL2, no script was enabled
Explanation: This is a summary message indicating that no script could be enabled (the user specified /ALL on the command line). Associated messages indicate the reason the enable operation(s) failed.
User Action: Refer to associated messages to determine a course of action.
ENGLIMEXC, process limit exceeded; increase process limit to run
Explanation: Starting another defragmentation process on this node would exceed the user-defined maximum number of defragmentation processes for this node.
User Action: If the limit is acceptable, no action is required. Otherwise, change the limit using the SET subcommand.
ENGMAXTIM, time limit exceeded; defragmentation process stopped
Explanation: A defragmentation process was terminated because its time limit was exceeded. This is a limit imposed by the user with the /TIME_LIMIT qualifier.
User Action: None or change the time limit.
ENQLOCKERR, error while attempting to queue a process lock for device !AD
Explanation: The defragmentation process received an unexpected failure status from the $ENQ system service while trying to get an exclusive lock on the target device. Associated messages provide more detail. This error does not occur for concurrent defragmentation processes.
User Action: Refer to associated messages to determine a course of action.
EXTHDRERR, unable to access extent header(s) for file !AD
Explanation: The defragmentation process could not access the given file’s extent header(s) through the IO$_ACCESS QIO.
User Action: Refer to associated messages to determine a course of action.
FREEVMERR, unable to free dynamic memory
Explanation: The defragmentation process called the LIB$FREE_VM service incorrectly.
User Action: Submit an SPR.
GETDVIERR, error in getting device information from !AD
Explanation: The defragmentation process received failure status from the GETDVI system service. Associated messages provide more detail.
User Action: Refer to associated messages to determine a course of action.
GETVMERR, unable to allocate dynamic memory
Explanation: The defragmentation process received failure status from the LIB$GET_VM system service. Associated messages provide more detail.
User Action: If the error is due to insufficient system dynamic memory, system resources are insufficient to defragment the volume. If this is not the case, submit an SPR.
GLBSECMAPERR, unable to map global section
Explanation: The defragmentation process could not map the system wide global section created by the scheduler. This error is very unlikely, but could be caused if the scheduler exits after creating the global section and the defragmentation process, but before the defragmentation process has a chance to map the global section. It will also occur if the user tries to run the DFG$ENGINE_MAIN program directly.
User Action: None.
IDXFILEFULL, INDEXF.SYS is completely full. You must delete some files
Explanation: The index file or header is full. The program needs at least one free file header.
User Action: Delete unneeded file(s).
IDXOPT, Your index file is already optimal, no further work needed.
Explanation: The index file is already optimal. No further work is needed.
User Action: None. The program has completed.
IEDBDATA, logically inconsistent data in relation !AD
Explanation: The database contains inconsistent data. The root of the problem may be that the RMS database is corrupt, that the DFG software has an error.
User Action: Submit an SPR. Include a dump of the scheduling database contents, if possible.
IELOGNAM1, internal error; invalid supersede flag
Explanation: This is an internal error.
User Action: Submit an SPR.
IESCHFILNODTYP, relation !AD: illegal file or node type (!SL)
Explanation: This is an internal scheduler error.
User Action: Submit an SPR.
IESCHFUNC, illegal function code (!SL) in !AD
Explanation: This is an internal scheduler error.
User Action: Submit an SPR.
IESCHIMPOSS, internal logic error in !AD
Explanation: This is an internal scheduler error.
User Action: Submit an SPR.
IESE1, internal memory allocation calculation error; submit an SPR
Explanation: A consistency check found the global section allocated was not large enough to hold the necessary data. This is an internal error.
User Action: Submit an SPR.
IESRCINCONSIS, internal error; inconsistent source !AD
Explanation: This error occurs when the source for one module is not compatible with the source for another module.
User Action: Submit an SPR.
IEVERNOD1, internal error while verifying node
Explanation: This is an internal error
User Action: Submit an SPR.
IMEDALL, all scripts have been !AD
Explanation: Success message for any immediate command (ENABLE, DISABLE) where /ALL was specified.
User Action: None.
IMEDSUCC, script !AD has been !AD
Explanation: Success message for any immediate command (ENABLE, DISABLE) where specific scripts were specified.
User Action: None.
INTERNALERR, internal software error number !UL
Explanation: This is an internal error encountered in the defragmentation process code.
User Action: Submit an SPR. Include the software error number.
INTERR2, internal error: !AD !XL
Explanation: This is an internal error.
User Action: Submit an SPR. Include the error number and the associated string supplied in the error message.
INTERR, internal error: !AD
Explanation: This is an internal error.
User Action: Submit an SPR. Include the internal error string.
INVDEVCONT, device not suitable for defragmentation, do you wish to continue (Y, [N])?
Explanation: The user specified a device for a defragment operation that is currently unavailable or unsuitable for defragmentation. However, since the device may become available by the time the defragmentation operation begins, the user is allowed the option of continuing or aborting the command.
User Action: If the device specified is correct, but is currently off line or, for some other reason, is unsuitable for defragmentation, enter Y in response to the prompt. Otherwise, enter N or press Return to abort the command.
INVDEVNAM, !AD is an invalid device name
Explanation: The supplied device name was invalid.
User Action: Specify a valid device name.
INVDEV, device unsuitable for defragmentation
Explanation: Target device not suitable for defragmentation.
User Action: Ensure that the target device for defragmentation is an ODS–2 volume (or stripe set or volume set). Further, it must be a local device available from the issuing node.
INVDFGLST, invalid defragmentation item list
Explanation: The defragmentation list passed to DFG$DEFRAGMENT was invalid, because of one of the following:
A call to DFG$DEFRAGMENT using a scheduler list that indicates the defragmentation list should be empty. For example, DFG$K_SHOW_SCRIPT must not have a defragmentation item list.
Something was wrong with the semantics of the defragmentation item list, or a particular item descriptor was formatted improperly.
User Action: If the call to DFG$DEFRAGMENT was from VSI supplied software, submit an SPR. Otherwise, correct the calling program.
INVDSLST, invalid defragmentation and scheduler item lists
Explanation: Both the scheduler list and the defragmentation list passed to DFG$DEFRAGMENT were invalid.
User Action: If the call to DFG$DEFRAGMENT was from VSI supplied software, submit an SPR. Otherwise, correct the calling program.
INVFILNAM, !AD is an invalid file specification
Explanation: An invalid file name was given for either the log file or the options file. Associated messages describe why the file name is invalid.
User Action: Based on the associated messages, specify a valid file name.
INVITEMCOMB, invalid combination of DFG$K_INTERVAL and DFG$K_PREDECESSOR
Explanation: The DFG$K_INTERVAL item descriptor is not allowed with the DFG$K_PREDECESSOR item descriptor in a call to DFG$DEFRAGMENT.
User Action: If the call to DFG$DEFRAGMENT was from VSI supplied software, submit an SPR. Otherwise, correct the calling program.
INVITMLST, invalid combination of items in item list
Explanation: This message indicates the dfg_list or sch_list parameter to DFG$DEFRAGMENT was logically invalid. One of the lists contained item codes that were not compatible.
User Action: If the call to DFG$DEFRAGMENT was from VSI supplied software, submit an SPR. Otherwise, correct the calling program.
INVITMUKN, an item list contained an unknown item code
Explanation: This message indicates the dfg_list or sch_list parameter to DFG$DEFRAGMENT contained an item descriptor with an unknown item code. It may also indicate a faulty item_list_2 returned from DFG$DEFRAGMENT as part of the SHOW subcommand.
User Action: If the call to DFG$DEFRAGMENT was from VSI supplied software, submit an SPR. Otherwise, correct the calling program.
INVITM, invalid item list; item !SL is in error
Explanation: This message indicates the dfg_list or sch_list parameter to DFG$DEFRAGMENT was incorrectly formatted or logically invalid. It provides the item number that was incorrect. Associated messages indicate further errors.
User Action: If the call to DFG$DEFRAGMENT was from VSI supplied software, submit an SPR. Otherwise, correct the calling program.
INVLMFLIC, insufficient license units to run DEFRAGMENT
Explanation: The DFG software is not licensed to run on this node.
User Action: Install the DFG license.
INVLOGNAM, !AD is an invalid logical name
Explanation: A logical name translation failed because the logical name was invalid. Associated messages provide more detail.
User Action: Refer to associated messages to determine a course of action.
INVSCHLST, invalid scheduler item list
Explanation: The scheduler list passed to DFG$DEFRAGMENT was invalid.
User Action: If the call to DFG$DEFRAGMENT was from VSI supplied software, submit an SPR. Otherwise, correct the calling program.
INVSCRNAM, !AD is an invalid script name
Explanation: The user tried to name a script using characters that are not supported for script names.
User Action: Reenter the script name using valid characters.
INVSTARTCMD, script !AD already has a queue entry
Explanation: The user entered a START subcommand for a script that was already started.
User Action: None.
INVSTRDSCNBR, invalid string descriptor in item !SL of item list
Explanation: An invalid string descriptor was pointed to from an item list passed to DFG$DEFRAGMENT. The item number of the item descriptor containing the offending string descriptor is supplied by this message.
User Action: If the call to DFG$DEFRAGMENT was from VSI supplied software, submit an SPR. Otherwise, correct the calling program.
INVSTRDSC, invalid string descriptor
Explanation: An invalid string descriptor was pointed to from an item list passed to DFG$DEFRAGMENT.
User Action: If the call to DFG$DEFRAGMENT was from VSI supplied software, submit an SPR. Otherwise, correct the calling program.
L5NOLOG, log file not specified, but defragmentation level is 5
Explanation: Occurs if /LEVEL=5 is specified without the /LOG qualifier.
Defragmentation statistics are unavailable without the /LOG qualifier; thus, it is required when /LEVEL=5 is specified.
User Action: Specify /LOG={logfile} when using the /LEVEL=5 qualifier.
LIMEXC, !AD limit exceeded
Explanation: A user-specified CPU_LIMIT, IO_LIMIT, or PROCESS_LIMIT has been exceeded.
User Action: If the limit is correctly set, no action is required. If the limit is incorrect, set a new limit using the SET subcommand.
LSTBADVOL, incorrect device name !AD specified on file list
Explanation: A device name was specified with a file on the frequent, dormant, or exclude lists that does not match the target device name.
User Action: Correct the device name or remove it altogether.
LVLOUTRNG, !SL is an invalid defragmentation level; use 1-5
Explanation: The defragmentation level specified by the user on the command line was not a number from 1 to 5, inclusive.
User Action: Specify a valid defragmentation level.
MISSING_LOGICAL, the logical name !AD is not defined
Explanation: A required logical name is not defined.
User Action: Define the indicated logical name and try the command again.
MISSNGVAL, !AD qualifier requires a value in this context
Explanation: A qualifier needed a value, such as a script name, but the user did not provide one.
User Action: Provide the value requested.
MONBRKNDB, monitor unable to access database for script information
Explanation: This error occurs if the monitor cannot access the scheduling database. The most likely causes of this error are: the logical name DFG$DEFRAGMENT is not defined; the database does not exist.
User Action: If this message persists and the other defragmentation software is working (scheduler, DCL interface, defragmentation processes), submit an SPR.
MONINVCOL, too few columns in display, please resize
Explanation: The display has too few columns to display meaningful information.
User Action: If your terminal is a DECwindows DECterm, resize the window as appropriate. If your terminal is a VT100-style device, submit an SPR.
MONINVROW, too few rows in display, please resize
Explanation: The display has too few rows to display meaningful information.
User Action: If your terminal is a DECwindows DECterm, resize the window as appropriate. If your terminal is a VT100-style device, submit an SPR.
MONNOVOL, !AD is not currently being defragmented
Explanation: An attempt was made to monitor a script that is not executing.
User Action: Monitor only executing defragmentation processes.
MONRDERR, error !SL while reading the monitor interface
Explanation: This error occurs if a process cannot read data using the interface that exists between the monitor process, the scheduling process, and the defragmentation process. The process experiencing the error will continue, though not all data may be available for the monitor display.
User Action: None.
MONUNEXP, unexpected error from !AD
Explanation: An error occurred in a call to the Screen Management facility (SMG). The SMG routine that returned the error is displayed. A subsequent error message contains the SMG error code.
User Action: Refer to the subsequent error message to determine a course of action.
MONWRERR, error !SL while writing the monitor interface
Explanation: This error occurs if a process cannot write data using the interface that exists between the monitor process, the scheduling process, and the defragmentation process. The process experiencing the error will continue, though not all data may be available for the monitor display.
User Action: None.
MOVFILINFO1, Relative volume number !UL
Explanation: This is issued to give more information to the maintainer about a movefile error (either MOVFILQIOERR or MOVFILSTSERR).
User Action: Submit an SPR.
MOVFILQIOERR, QIO error on movefile for volume !AD
Explanation: This is an internal error; the movefile QIO was formatted incorrectly by the defragmentation process.
User Action: Submit an SPR.
MOVFILSTSERR, status error on movefile for volume !AD
Explanation: The movefile QIO returned an error status to the defragmentation process. Subsequent messages provide the specific error encountered.
User Action: Refer to subsequent messages to determine a course of action.
MULTSUCC, multiple successors not allowed
Explanation: The script named as predecessor already has a successor defined.
User Action: Specify a different predecessor or none.
NODEIGNOR, the /NODE qualifier was ignored
Explanation: The /NODE qualifier was specified with show script, but no CPU, I/O, or process parameter was selected. Any node name is meaningless when applied to show script only. This message is informational.
User Action: None.
NOINHER, inherit script !AD not found
Explanation: The script specified in the /INHERIT qualifier could not be found in the SCRIPTS relation.
User Action: Reissue the command using a defined script name for the /INHERIT qualifier.
NOKILL, failed attempt to stop a defragmentation process
Explanation: An attempt (by the scheduler) to abort the defragmentation process failed. Associated messages provide more detail. It could simply be that the defragmentation process has completed or is suspended.
User Action: Refer to associated messages to determine a course of action.
NOMEINTERFACE, monitor interface not established
Explanation: This error occurs if the defragmentation process cannot establish the monitor interface. In this case, the error appears in the defragmentation process log file. The error can also occur when executing the monitor function if the monitor interface is not yet established. The error can also appear in the scheduler log file if the interface is not established.
User Action: If you are trying to run the monitor, try the command again as the defragmentation process may not yet have created the interface. If the error occurs in the defragmentation process or scheduler log files, determine a course of action based on any associated messages. If the error is due to insufficient ENQUE limit, increase the ENQUE limit of the user process running monitor or the scheduler process, whichever is appropriate.
NONODE, !AD not found in configuration
Explanation: A node name that was associated with a script was not present in the configuration. This error can also occur during scheduler initialization if both the SYSGEN parameter, SCSNODE, and the logical, SYS$NODE are undefined on the node where the scheduler is running. In the case of the scheduler, the node name reported in the message will be blank.
User Action: If the error occurs in the scheduler log file, define either the logical name SYS$NODE or the SYSGEN parameter SCSNODE and restart the scheduler. If the error occurs when entering a command, ensure you have spelled the node name correctly and that the node exists on the local system.
NONOTIFY, mail notification of defragmentation process completion failed
Explanation: An attempt to send mail to the mail distribution list specified in DFG$MAIL_ADDRESS has failed.
User Action: Verify that the logical DFG$MAIL_ADDRESS is defined. Refer to associated messages to determine if additional action is necessary.
NOPRED, predecessor script !AD not found
Explanation: The script specified in the /PREDECESSOR qualifier could not be found in the SCRIPTS relation.
User Action: Check spelling of the script name used with the /PREDECESSOR qualifier. Use the name of a script that has already been defined (with the VOLUME subcommand) for the /PREDECESSOR qualifier.
NOPRIV, insufficient privileges; you need BYPASS, CMKRNL, DETACH, EXQUOTA, NETMBX, SHARE, SYSGBL, SYSLCK, SYSPRV, TMPMBX, and WORLD
Explanation: The user has insufficient privileges to run DEFRAGMENT.
User Action: Set the BYPASS, CMKRNL, DETACH, EXQUOTA, NETMBX, SHARE, SYSGBL, SYSLCK, SYSPRV, TMPMBX, and WORLD privileges and try the command again.
NOQENTRY, no queue entry for script !AD
Explanation: A queue entry was not found for a script that was to be canceled, disabled, or enabled. (The database did not have a record that matched the user-supplied script name for one of these commands.)
User Action: Check the spelling of the script name. Use only names that have previously been defined with the VOLUME subcommand.
NOSCHED, scheduling operations may not have completed
Explanation: One or more scheduling operations may not have completed.
This is a summary message. Associated messages provide more detail.
User Action: Refer to associated messages to determine a course of action.
NOSCRIPT, script name !AD is not defined in the database
Explanation: The named script is not defined in the database.
User Action: Check the spelling of the script name and try the command again.
NOSCRNAM, script name !AD not found
Explanation: A script name specified by the user was not in the scheduling database.
User Action: Check the spelling of the script name and try the command again.
NOSHODAT, error retrieving show data from the scheduling database
Explanation: There was an error retrieving show data from the scheduling database.
User Action: Refer to associated messages to determine a course of action.
NOTACCVIO, cannot access notification data in !AD
Explanation: This is an internal error. It occurs if one of the internal user notification routines is called with an inaccessible parameter.
User Action: Submit an SPR.
NOTBADDATA, invalid data found in !AD
Explanation: This is an internal error. It occurs if one of the internal user notification routines is called with invalid data.
User Action: Submit an SPR.
NOTCLOSERR, error closing temporary notification file
Explanation: An error occurred while closing the temporary notification file.
User Action: Refer to associated messages to determine a course of action.
NOTDISK, this device is not a disk, recheck the device name
Explanation: The device for which you requested defragmenting is not a disk.
User Action: Check the device name and try the command again.
NOTEXEC, script !AD not executing
Explanation: An attempt was made to abort a script that was not executing.
User Action: None.
NOTEXTEND, error extending the scratch file needed for defragmenting INDEXF.SYS
Explanation: The temporary scratch file needed to defragment INDEXF.SYS could not be created. Its creation would have caused a multi-header entry or there was not enough space on the volume.
User Action: Before defragmenting INDEXF.SYS, be sure to defragment the volume and consolidate free space. Also, make sure that the largest free space on the volume is larger than INDEXF.SYS. To check the largest free space and extents of INDEXF.SYS, execute the following command:
$ DEFRAGMENT SHOW disk:/VOLUME/LOCATION=[000000]INDEXF.SYS
NOTFILWRERR, error writing to temporary notification file
Explanation: The notification message could not be written.
User Action: Refer to associated messages to determine a course of action.
NOTLOCDEV, !AD is not local to !AD
Explanation: The user has specified a target device that is not local to the node that is trying to run the defragmentation process.
User Action: Nonlocal devices (such as DFS mounted devices) cannot be defragmented.
NOTODSDEV, !AD is not an ODS-2 mounted device
Explanation: The user has specified a device for defragmentation that is not a mounted ODS–2 format volume.
User Action: Specify an ODS–2 format volume.
NOTRAN, error translating !AD
Explanation: There was an error translating the supplied logical name.
User Action: Define the indicated logical using the /EXECUTIVE_MODE and /SYSTEM qualifiers.
NOTSTOPPED, defragmentation process, ID=!XL, was not stopped
Explanation: An attempt to stop a defragmentation process failed.
Associated messages provide more detail. The most likely cause of this message is that the defragmentation process is no longer running.
User Action: None.
NOVOLUME, no volume name specified for VOLUME subcommand
Explanation: DFG$DATABASE received a dfg_list item list that did not contain a volume name item descriptor.
User Action: If this error occurs with VSI supplied software, submit an SPR.
Otherwise, correct the calling program.
NULLENGINE, a defragmentation process cannot be started for script !AD
Explanation: An attempt to start a defragmentation process failed.
Associated messages provide more detail.
User Action: Refer to associated messages to determine a course of action.
OPENIN, error opening !AD as input
Explanation: The specified file could not be opened for input. Associated messages indicate the reason.
User Action: Refer to associated messages to determine a course of action.
OPENMAILERR, cannot open mail file for /MAIL_NOTIFICATION
Explanation: The mail file cannot be opened by the scheduler when attempting to notify users by way of the /MAIL_NOTIFICATION qualifier.
Associated messages indicate the reason.
User Action: Refer to associated messages to determine a course of action.
OPENOUT, error opening !AD as output
Explanation: The specified file could not be opened for output. Associated messages indicate the reason.
User Action: Refer to associated messages to determine a course of action.
OPTBADVOL, invalid device specified on line !SL, options file !AD
Explanation: A volume was specified with a file name in the options file and the volume was not the target defragmentation volume.
User Action: Correct the invalid line in the options file. Specify no device name, or specify the target device name.
OPTFILERR, options file error
Explanation: The options file contained errors. This is a summary message.
Associated messages provide more detail.
User Action: Refer to associated messages to determine a course of action.
OPTHASFNF, file not found on line !SL, options file !AD
Explanation: A file specified as /EXCLUDE, /FREQUENT, or /DORMANT in the options file was not found.
User Action: No action is necessary. To eliminate this message, however, you should remove the line in the options file that is reported in this message.
Since the file given on this line is no longer on the target device, this line has no effect.
OPTINVQUAL, invalid qualifier on line !SL, options file !AD
Explanation: A classification for a file was given that was not one of:
/FREQUENT, /DORMANT, /EXCLUDE.
User Action: Check spelling and ensure that only classifications of /FREQUENT, /DORMANT, or /EXCLUDE are used for files listed in the options file.
OPTMULCLA, multiple classifications on line !SL, options file !AD
Explanation: A file was classified with multiple classifications (that is, file.ext/FREQ/DORM). This error prevents the defragmentation process from being started.
User Action: Specify only one file classification per line in the options file.
OPTNOTCLA, file not classified on line !SL, options file !AD
Explanation: A file was in the options file, but was not classified as /FREQUENT, /DORMANT, or /EXCLUDE.
User Action: Make sure the file on the line specified in the options file has one of the above-listed classifications.
OPTRMSERR, RMS error on line !SL, options file !AD
Explanation: An unanticipated error was returned from the $PARSE or $SEARCH RMS routines.
User Action: Refer to the specified line in the options file. Also check associated messages for more information.
PARSEFAIL, error parsing !AD
Explanation: The RMS $PARSE service failed for the specified file.
User Action: Refer to associated messages to determine a course of action.
PRCOUTRNG, !SL is an invalid process limit; specify positive values
Explanation: The process limit was negative.
User Action: Specify only positive values for the PROCESS_LIMIT keyword parameter to the SET subcommand.
PREDNOTUSRNAME, the predecessor for script !AD is not a user-provided name
Explanation: The predecessor for a script was not a user-provided name. This message can occur during the SHOW subcommand when the /COMMAND_LINE qualifier is present. Because script names beginning with DFG$ are reserved for the DEFRAGMENT software, they are never listed when the /COMMAND_LINE qualifier is used. This warning message indicates the script whose predecessor was not listed.
User Action: If the output of the SHOW subcommand was directed to a file, edit the file and name the script to be used as a predecessor using the /SCRIPT qualifier. Then, modify the script listed in this message so the /PREDECESSOR qualifier indicates the script name used.
PROCABORTED, defragmentation process aborted
Explanation: The defragmentation process has aborted. It could be that the total defragmentation time has been exceeded and the scheduler has stopped the defragmentation software. Thus, this message does not necessarily indicate failure.
User Action: Refer to associated messages to determine a course of action.
PROCESS_START, defragmentation process start
Explanation: This message is generated by the defragmentation process after it has completed initialization.
User Action: None.
PROCESS_STOP, defragmentation process normal completion
Explanation: This message is generated by the defragmentation process after the process has successfully completed.
User Action: None
QUEDALL, !AD request for all scripts has been successfully queued
Explanation: Any of the queued commands where /ALL was specified were successful.
User Action: None
QUEDNONAM, !AD request for unnamed script has been successfully queued
Explanation: A defragmentation request was successfully processed; the user did not supply a script name.
User Action: None
QUEDSUCC, !AD request for script !AD has been successfully queued
Explanation: A defragmentation process was successfully queued and had a user-specified script name.
User Action: None
REMFAIL1, failed to remove !AD from the database
Explanation: This is a summary message indicating the specified script was not removed. Associated messages indicate the reason the remove operation failed.
User Action: Refer to associated messages to determine a course of action.
REMFAIL2, no script was removed from the database
Explanation: This is a summary message indicating that no script was removed from the scheduling database when the user had specified the /ALL qualifier.
User Action: Refer to associated messages to determine a course of action.
REMOVENOTDONE, remove unsuccessful
Explanation: A REMOVE subcommand was unsuccessful. This is a summary message. This message may or may not indicate an error.
Associated messages provide more detail.
User Action: Refer to associated messages to determine a course of action.
REMOVSEEN, remove command for !AD already issued
Explanation: A REMOVE subcommand had been issued for this script, but it had not yet completed when another REMOVE subcommand for the same script was issued.
User Action: None.
RESAREA, Map pointer copy would extend into a reserved area
Explanation: The copy of INDEXF.SYS map pointers would run into a reserved area.
User Action: Submit an SPR.
RMSERR, RMS operation !AD failed (file !AD)
Explanation: The specified RMS operation failed.
User Action: Refer to associated messages to determine a course of action.
SCHEDERR, scheduler cannot complete scheduling tasks
Explanation: This is a summary message indicating that the scheduler did not complete all its scheduling tasks.
User Action: Refer to associated messages to determine a course of action.
SCHEXIT, scheduler exited at user request
Explanation: The scheduler exited normally. This occurs if the user executes the DFG$STOP_SCHEDULER.COM procedure, runs the SYS$SYSTEM:DFG$STOP_SCHEDULER.EXE image, or executes the DFG$SHUTDOWN.COM procedure.
User Action: None.
SCHSTART, !AD started on !AD !%D
Explanation: A scheduler started. This message appears at the beginning of every scheduler log.
User Action: None.
SCRDIS, script !AD is already disabled
Explanation: An attempt was made to disable a script that was already disabled.
User Action: None.
SCRENA, script !AD is already enabled
Explanation: An attempt was made to enable a script that was already enabled.
User Action: None.
SEARCHLOOP, loop in $SEARCH: same file returned twice
Explanation: RMS’s $SEARCH function did not return files in alphabetical order. This may be caused by a corrupt directory file or by an alias that points to a deleted file.
User Action: Investigate the directory structure of the disk.
SENDMAILERR, mail notification failed
Explanation: This is a summary message that occurs when the scheduler does not send the mail notification message requested by the user with /MAIL_NOTIFICATION. Associated messages provide more detail.
User Action: Refer to associated messages to determine a course of action.
SETFAIL, failed to set any specified parameters
Explanation: DFG$DEFRAGMENT returned a failure status for a SET command.
User Action: Refer to associated messages to determine a course of action.
SETNODFAIL, a SET subcommand failed for node !AD
Explanation: A DEFRAGMENT SET CPU, I/O, or PROCESS command failed for the indicated node.
User Action: Refer to associated messages to determine a course of action.
SETSUCC, specified parameters successfully set
Explanation: The database was successfully updated with the new CPU_LIMIT, IO_LIMIT, and PROCESS_LIMIT values.
User Action: None.
SHDWSETERR, device is a member of a shadow set; specify the shadow set name
Explanation: The user attempted to defragment a member of a shadow set.
Attempting to defragment members of a shadow set is not supported.
User Action: Defragment the entire shadow set by specifying the shadow set name (DUSXXX) on the DEFRAGMENT command line.
SHODATMIS, !AD missing from show data
Explanation: This is an internal error.
User Action: Submit an SPR.
SHOSCRFAIL, a show script command failed
Explanation: A SHOW SCRIPT command did not complete successfully.
Associated messages provide more detail.
User Action: Refer to associated messages to determine a course of action.
STAFAIL, failed to start !AD
Explanation: DFG$DEFRAGMENT returned a failure status for a START subcommand. This is a summary message and probably does not indicate any real error. Most likely, the script was already started. Associated messages provide more detail.
User Action: Refer to associated messages to determine a course of action.
STARTNOTDONE, start command unsuccessful
Explanation: A START subcommand was unsuccessful. This is a summary message. This message may or may not indicate an error. Associated messages provide more detail.
User Action: Refer to associated messages to determine a course of action.
STARTSEEN, start command for !AD already issued
Explanation: A START subcommand had been issued for this script but it had not yet completed when another START subcommand for the same script was issued.
User Action: None.
SYSSRVERR, call to system service !AD failed
Explanation: A system service call failed.
User Action: Refer to associated messages to determine a course of action.
TIMEINV, invalid time string !AD from !AD
Explanation: The syntax of the time string supplied in the message was invalid or out of range. The offending routine is also listed in the message.
User Action: Submit an SPR containing the information in this message.
UNRECOVERR, unrecoverable error
Explanation: The defragmentation process encountered an unrecoverable error; no further processing occurred.
User Action: Refer to associated messages to determine a course of action.
USERABORT, command aborted by user
Explanation: The user decided not to continue after encountering the INVDEVCONT message. This is a summary message.
User Action: None.
USER_ERR, user error
Explanation: The user made an error. Associated messages provide more detail.
User Action: Refer to associated messages to determine a course of action.
USRKILLENG, an ABORT command terminated the defragmentation process
Explanation: Because of a user-issued ABORT command, a defragmentation process terminated.
User Action: None.
VIRMEMERR, device is a member of a constituent set; specify the set name
Explanation: The user attempted to defragment a virtual member of a disk set, such as a stripeset member.
User Action: Defragment the entire set by specifying the set name on the DEFRAGMENT command line.
VOLFAIL1, volume command failed; script !AD was not entered into the database
Explanation: The specified script was not entered into the database. Some portion of command validation failed. The exact nature of the error is provided in associated messages.
User Action: Refer to associated messages to determine a course of action.
VOLFAIL2, volume command failed; unnamed script was not entered into the database
Explanation: The command was not entered into the database. Some portion of command validation failed. The exact nature of the error is provided in associated messages.
User Action: Refer to associated messages to determine a course of action.
VOLSETERR, device is a member of a volume set;specify the volume set name
Explanation: The user attempted to defragment a member of a volume set.
Attempting to defragment members of a volume set is not supported.
User Action: Defragment the entire volume set by specifying the volume set name on the DEFRAGMENT command line.
VOLUMELOCKERR, volume lock error for device !AD
Explanation: Error trying to allocation-lock the volume. This error may only occur in the defragmentation process code. This prevents file structure changes for a short time while the defragmentation process reads a fresh copy of BITMAP.SYS.
User Action: Refer to associated messages to determine a course of action.
VOLUMENOTDONE, volume command unsuccessful
Explanation: A VOLUME subcommand was unsuccessful. This is a summary message. This message may or may not indicate an error.
Associated messages provide more detail.
User Action: Refer to associated messages to determine a course of action.
VOLUNLOCKERR, volume unlock error for device !AD
Explanation: The target device could not be allocation-unlocked by the defragmentation process.
User Action: Refer to associated messages to determine a course of action.
VPAEND, !SL hotfile records added to the /FREQUENT list.
Explanation: This message indicates the VPA database query has completed. It also indicates the total number of hotfile records found that were related to the target device.
User Action: None.
The database and database interface are actually shared among the nodes in a cluster.
Scripts that are not named(/SCRIPT) and that are not part of a linked set of scripts are removed from the database when they complete.
The default number of blocks in a cluster is three for volumes of 50,000 blocks or more, or one for volumes having less than 50,000 blocks.