| [16] | 1 | Disclaimers | 
|---|
|  | 2 | ----------- | 
|---|
|  | 3 |  | 
|---|
|  | 4 | The files in this directory are provided by IBM on an "AS IS" basis | 
|---|
|  | 5 | without warranty of any kind. | 
|---|
|  | 6 |  | 
|---|
|  | 7 |  | 
|---|
|  | 8 | Introduction | 
|---|
|  | 9 | ------------ | 
|---|
|  | 10 |  | 
|---|
|  | 11 | The files in this directory contain generally useful utilities that use | 
|---|
|  | 12 | GPFS specific APIs to scan filesystem metadata.  The source code is provided | 
|---|
|  | 13 | to give examples of how to use some of the APIs.  Execution of these commands | 
|---|
|  | 14 | requires root authority. | 
|---|
|  | 15 |  | 
|---|
|  | 16 |  | 
|---|
|  | 17 | Utilities | 
|---|
|  | 18 | --------- | 
|---|
|  | 19 | tsgetusage   - Fast scan of all files in a filesystem and calculate how | 
|---|
|  | 20 | much disk space is used by each unique user and/or group. | 
|---|
|  | 21 |  | 
|---|
|  | 22 | tsinode      - Fast scan of all files in a filesystem and display one line | 
|---|
|  | 23 | of ls information about each one. | 
|---|
|  | 24 |  | 
|---|
|  | 25 | tslistall    - Fast scan of all files in a filesystem and display one line | 
|---|
|  | 26 | of inodenumber pathname type ctime mtime | 
|---|
|  | 27 |  | 
|---|
|  | 28 | tsfindinode  - Fast parallel scan of all directories in a filesystem | 
|---|
|  | 29 | listing inodenumber type pathname for each inode specified | 
|---|
|  | 30 |  | 
|---|
|  | 31 | tsreaddir    - Fast parallel scan of all directories in a filesystem | 
|---|
|  | 32 | listing inodenumber type pathname for each file | 
|---|
|  | 33 | (used by tslistall) | 
|---|
|  | 34 |  | 
|---|
|  | 35 | tstimes      - Fast scan of all files in a filesystem and display one line | 
|---|
|  | 36 | of inode mtime ctime for each file | 
|---|
|  | 37 | (used by tslistall) | 
|---|
|  | 38 |  | 
|---|
|  | 39 | tsbackup     - Fast parallel backup utility using multiple TSM clients | 
|---|
|  | 40 | and a single TSM server.  Parallelism is achieved via | 
|---|
|  | 41 | the use of multi-threading and the use of multiple TSM | 
|---|
|  | 42 | client processes.  This utility makes use of the GPFS | 
|---|
|  | 43 | inode scan APIs. | 
|---|
|  | 44 |  | 
|---|
|  | 45 |  | 
|---|
|  | 46 | ------------------------------------------------------------------------------ | 
|---|
|  | 47 |  | 
|---|
|  | 48 | tsgetusage   - Fast scan of all files in a filesystem and calculate how | 
|---|
|  | 49 | much disk space is used by each unique user and/or group. | 
|---|
|  | 50 |  | 
|---|
|  | 51 | Usage:  tsgetusage [-g][-h][-q][-v][-u][-H hashTableSize] fsPath | 
|---|
|  | 52 |  | 
|---|
|  | 53 | where:  fsPath  path to file system | 
|---|
|  | 54 | -u      outputs data in diskusg format for acctdisk | 
|---|
|  | 55 | -g      collect stats for groups | 
|---|
|  | 56 | -H      sets the hash table size (default 1027) | 
|---|
|  | 57 | -h      prints this message | 
|---|
|  | 58 | -q      outputs only the resulting stats | 
|---|
|  | 59 | -v      print information about each file | 
|---|
|  | 60 |  | 
|---|
|  | 61 | Using the -u option will produce a file with a format like | 
|---|
|  | 62 | /usr/sbin/acct/diskusg that is used for other types of filesystems. | 
|---|
|  | 63 | This can be used as input to the /usr/sbin/acct/acctdisk program, and then | 
|---|
|  | 64 | merged with the other disk accounting data using /usr/sbin/acct/acctmerg. | 
|---|
|  | 65 |  | 
|---|
|  | 66 | For more information about the AIX Accounting System, the preparation | 
|---|
|  | 67 | of daily and monthly reports, and the accounting files, see the AIX | 
|---|
|  | 68 | Accounting Overview. | 
|---|
|  | 69 |  | 
|---|
|  | 70 |  | 
|---|
|  | 71 | ------------------------------------------------------------------------------ | 
|---|
|  | 72 |  | 
|---|
|  | 73 | tsinode      - Fast scan of all files in a filesystem and display one line | 
|---|
|  | 74 | of information about each one. | 
|---|
|  | 75 |  | 
|---|
|  | 76 | Usage:  tsinode fsPath [startinode [endinode]] | 
|---|
|  | 77 |  | 
|---|
|  | 78 | where:  fsPath      path to file system | 
|---|
|  | 79 | startinode  first inode number to be listed | 
|---|
|  | 80 | endinode    last inode number to be listed | 
|---|
|  | 81 |  | 
|---|
|  | 82 | Hint: | 
|---|
|  | 83 | For the best performance on a filesystem with millions of inodes, | 
|---|
|  | 84 | run several copies of tsinode with different inode ranges and | 
|---|
|  | 85 | concatenate the output files. | 
|---|
|  | 86 |  | 
|---|
|  | 87 |  | 
|---|
|  | 88 | ------------------------------------------------------------------------------ | 
|---|
|  | 89 |  | 
|---|
|  | 90 | tsfindinode  - Fast parallel scan of all directories in a filesystem | 
|---|
|  | 91 | listing: inodenumber pathname | 
|---|
|  | 92 |  | 
|---|
|  | 93 | Usage:  tsfindinode {-i {inum | inumfile}} [-t nThreads] [--] fsPath | 
|---|
|  | 94 |  | 
|---|
|  | 95 | where:  fsPath       path to file system | 
|---|
|  | 96 | -i inum      adds one inode number to the list | 
|---|
|  | 97 | (this can be used multiple times) | 
|---|
|  | 98 | -i inumfile  names a file containing inode numbers | 
|---|
|  | 99 | to be added to the list | 
|---|
|  | 100 | (this can be used multiple times) | 
|---|
|  | 101 | -t           set the number of threads (default = 16) | 
|---|
|  | 102 | --           marker so that names starting with "-" | 
|---|
|  | 103 | are not treated like options. | 
|---|
|  | 104 |  | 
|---|
|  | 105 | This program recursively traverses the directory structure to list all | 
|---|
|  | 106 | accessible files and directories in the file system whose inode numbers | 
|---|
|  | 107 | match those specified in the list of inodes.  Each file prints one line | 
|---|
|  | 108 | on stdout containing the file's inode number, and the pathname to the | 
|---|
|  | 109 | file.  The number and names are separated by a tab character. | 
|---|
|  | 110 | The starting directory is listed with the pathname given as the argument. | 
|---|
|  | 111 | All other lines have pathnames relative to the starting directory. | 
|---|
|  | 112 |  | 
|---|
|  | 113 | The program uses the GPFS directory scan interface to quickly read the | 
|---|
|  | 114 | directory entries without calling "stat" on each file.  The directories | 
|---|
|  | 115 | are scanned in parallel by multiple threads which results in an unsorted | 
|---|
|  | 116 | output file.  Inode numbers that are not found in the tree are printed to | 
|---|
|  | 117 | stderr with the name "(notfound)". | 
|---|
|  | 118 |  | 
|---|
|  | 119 | Example: | 
|---|
|  | 120 |  | 
|---|
|  | 121 | >tsfindinode -i 23612 -i 1452 -i 47666 /gpfs | 
|---|
|  | 122 | 23612  include/stdio.h | 
|---|
|  | 123 | 1452  include/curses.h | 
|---|
|  | 124 | 47666  (notfound) | 
|---|
|  | 125 | > | 
|---|
|  | 126 |  | 
|---|
|  | 127 |  | 
|---|
|  | 128 | ------------------------------------------------------------------------------ | 
|---|
|  | 129 |  | 
|---|
|  | 130 | tslistall    - Fast scan of all files in a filesystem and display one line | 
|---|
|  | 131 | per file with the following information: | 
|---|
|  | 132 | inodenumber/generation mtime ctime type pathname | 
|---|
|  | 133 |  | 
|---|
|  | 134 | Usage:  tslistall fsPath  [tmpdirname] | 
|---|
|  | 135 |  | 
|---|
|  | 136 | where:  fsPath      path to file system | 
|---|
|  | 137 | tmpdirname  is a directory where intermediate files for sort | 
|---|
|  | 138 | can be generated. The default directory id /tmp. | 
|---|
|  | 139 | This is necessary for GPFS filesystem that have | 
|---|
|  | 140 | large numbers of files. | 
|---|
|  | 141 |  | 
|---|
|  | 142 | This is a shell script that invokes tsreaddir and tstimes | 
|---|
|  | 143 | then merges the resulting files.  The output is printed to stdout | 
|---|
|  | 144 | with 1 line per file and is sorted by inode number. | 
|---|
|  | 145 |  | 
|---|
|  | 146 | By saving the output of this command, you can compare it with a later list | 
|---|
|  | 147 | to find out what has changed in the filesystem since the old list was made. | 
|---|
|  | 148 |  | 
|---|
|  | 149 | Example: | 
|---|
|  | 150 |  | 
|---|
|  | 151 | >tslistall /gpfs | 
|---|
|  | 152 | 0000000003/0000000001 1012390401.913049600  1012390401.913049600  DIR /gpfs | 
|---|
|  | 153 | 0000001452/0000000003 1024702059.694025000  1024702059.694025000  LNK include/curses.h | 
|---|
|  | 154 | 0000001812/0000000000 1024702015.294047000  1024702015.294047000  DIR include | 
|---|
|  | 155 | 0000019578/0000000000 1026797433.109149000  1026794560.584238000  REG mail.rc | 
|---|
|  | 156 | 0000023612/0000000017 1024702090.705801000  1024702090.705801000  REG include/stdio.h | 
|---|
|  | 157 | 0000023874/0000000000 1024702024.982645000  1024702024.982645000  REG include/string.h | 
|---|
|  | 158 | > | 
|---|
|  | 159 |  | 
|---|
|  | 160 |  | 
|---|
|  | 161 | ------------------------------------------------------------------------------ | 
|---|
|  | 162 |  | 
|---|
|  | 163 | tsreaddir    - Fast parallel scan of all directories in a filesystem | 
|---|
|  | 164 | listing inodenumber type pathname | 
|---|
|  | 165 |  | 
|---|
|  | 166 | Usage:  tsreaddir [-d] [-n] [-t nThreads] [--] fsPath | 
|---|
|  | 167 |  | 
|---|
|  | 168 | where:  fsPath  path to file system | 
|---|
|  | 169 | -d      list only directories. | 
|---|
|  | 170 | -n      do not list directories. | 
|---|
|  | 171 | -t      set the number of threads (default = 16) | 
|---|
|  | 172 | --      marker so that names starting with "-" | 
|---|
|  | 173 | are not treated like options. | 
|---|
|  | 174 |  | 
|---|
|  | 175 | This program recursively traverses the directory structure | 
|---|
|  | 176 | to list all accessible files and directories in the file system. | 
|---|
|  | 177 | Each file prints one line on stdout containing the file's inode number, | 
|---|
|  | 178 | the generation number, the file's type and the pathname | 
|---|
|  | 179 | to the file.  The fields are separated by tab characters. | 
|---|
|  | 180 | If directories are listed, the starting directory is listed with | 
|---|
|  | 181 | the pathname given as the argument.  All other lines have pathnames | 
|---|
|  | 182 | relative to the starting directory. | 
|---|
|  | 183 |  | 
|---|
|  | 184 | The file types are "DIR" for directories, "REG" for regular | 
|---|
|  | 185 | files, "LNK" for symbolic links and "UNK" for all others. | 
|---|
|  | 186 | If the -d option is specified only directories are listed, | 
|---|
|  | 187 | and if the -n option is specified directories are not included in | 
|---|
|  | 188 | the output list. | 
|---|
|  | 189 |  | 
|---|
|  | 190 | The program uses the GPFS directory scan interface to quickly read the | 
|---|
|  | 191 | directory entries without calling "stat" on each file.  The directories | 
|---|
|  | 192 | are scanned in parallel by multiple threads which results in an unsorted | 
|---|
|  | 193 | output file. | 
|---|
|  | 194 |  | 
|---|
|  | 195 | Example: | 
|---|
|  | 196 |  | 
|---|
|  | 197 | >tsreaddir /gpfs | 
|---|
|  | 198 | 0000000003/0000000001 DIR /gpfs | 
|---|
|  | 199 | 0000001812/0000000000 DIR include | 
|---|
|  | 200 | 0000023612/0000000017 REG include/stdio.h | 
|---|
|  | 201 | 0000023874/0000000000 REG include/string.h | 
|---|
|  | 202 | 0000001452/0000000003 LNK include/curses.h | 
|---|
|  | 203 | 0000019578/0000000000 REG mail.rc | 
|---|
|  | 204 | > | 
|---|
|  | 205 |  | 
|---|
|  | 206 |  | 
|---|
|  | 207 | ------------------------------------------------------------------------------ | 
|---|
|  | 208 |  | 
|---|
|  | 209 | tstimes      - Fast scan of all files in a filesystem and display one line | 
|---|
|  | 210 | of inode mtime ctime for each file | 
|---|
|  | 211 |  | 
|---|
|  | 212 | Usage:  tstimes fsPath | 
|---|
|  | 213 |  | 
|---|
|  | 214 | where:  fsPath  path to file system | 
|---|
|  | 215 |  | 
|---|
|  | 216 | This program performs a gpfs inode scan on the specified file system | 
|---|
|  | 217 | to obtain the mtime and ctime for each file.  The results are output | 
|---|
|  | 218 | on stdout, with one line per file containg the inode number, the | 
|---|
|  | 219 | generation number, the mtime seconds and nanoseconds GMT, and the ctime seconds | 
|---|
|  | 220 | and nanoseconds GMT.  The output file is sorted by the inode numbers. | 
|---|
|  | 221 | The fields are separated by tab characters. | 
|---|
|  | 222 |  | 
|---|
|  | 223 | Example: | 
|---|
|  | 224 |  | 
|---|
|  | 225 | >tstimes /gpfs | 
|---|
|  | 226 | 0000000003/0000000001   1012390401.913049600    1012390401.913049600 | 
|---|
|  | 227 | 0000001452/0000000003 1024702059.694025000  1024702059.694025000 | 
|---|
|  | 228 | 0000001812/0000000000 1024702015.294047000  1024702015.294047000 | 
|---|
|  | 229 | 0000019578/0000000000 1026797433.109149000  1026794560.584238000 | 
|---|
|  | 230 | 0000023612/0000000017 1024702090.705801000  1024702090.705801000 | 
|---|
|  | 231 | 0000023874/0000000000 1024702024.982645000  1024702024.982645000 | 
|---|
|  | 232 | > | 
|---|
|  | 233 |  | 
|---|
|  | 234 |  | 
|---|
|  | 235 | ------------------------------------------------------------------------------ | 
|---|
|  | 236 |  | 
|---|
|  | 237 | mmbackup/tsbackup (see documentation for mmbackup in the GPFS Admin Guide) | 
|---|
|  | 238 |  | 
|---|
|  | 239 | tsbackup     - Fast parallel backup utility using multiple TSM clients | 
|---|
|  | 240 | and a single TSM server.  Parallelism is achieved via | 
|---|
|  | 241 | the use of multi-threading and the use of multiple TSM | 
|---|
|  | 242 | client processes.  This utility makes use of the GPFS | 
|---|
|  | 243 | inode scan APIs. | 
|---|
|  | 244 |  | 
|---|
|  | 245 | Usage: | 
|---|
|  | 246 | mmbackup Device -n ControlFile [-t {full | incremental}] [-r IOrate] | 
|---|
|  | 247 | or | 
|---|
|  | 248 | mmbackup Device -R [-r IOrate] | 
|---|
|  | 249 |  | 
|---|
|  | 250 | Parts: | 
|---|
|  | 251 |  | 
|---|
|  | 252 | tsbackup.C       (sample code in this directory) | 
|---|
|  | 253 | tsbackup.h       (sample code in this directory) | 
|---|
|  | 254 | mmbackup.sh      (script in /usr/lpp/mmfs/bin) | 
|---|
|  | 255 | mmexectsmcmd.sh  (script in /usr/lpp/mmfs/bin) | 
|---|
|  | 256 |  | 
|---|