Creating database containers as Quick I/O files using qiomkfile

You can create Database Managed Space (DMS) containers with the type 'DEVICE' using Quick I/O. The best way to preallocate space for tablespace containers and to make them accessible using the Quick I/O interface is to use the qiomkfile. You can use the qiomkfile to create the Quick I/O files for either temporary or permanent tablespaces.

Prerequisites

  • You can create Quick I/O files only on VxFS file systems.

  • If you are creating containers on an existing file system, run fsadm (or similar utility) to report and eliminate fragmentation.

  • You must have read/write permissions on the directory in which you intend to create DB2 Quick I/Ofiles.

Usage notes

  • The qiomkfile command creates two files: a regular file with preallocated, contiguous space, and a file that is a symbolic link pointing to the Quick I/O name extension.

  • See the qiomkfile(1M) manual page for more information.

-a

Creates a symbolic link with an absolute path name for a specified file. Use the -a option when absolute path names are required. However, the default is to create a symbolic link with a relative path name.

-e

Extends a file by a specified amount to allow DB2 tablespace resizing.

See Extending a Quick I/O file.

-r

Increases the file to a specified size to allow DB2 tablespace resizing.

See Extending a Quick I/O file.

-s

Specifies the space to preallocate for a file in bytes, kilobytes, megabytes, gigabytes, or sectors (512 bytes) by adding a k, K, m, M, g, G, s, or S suffix. The default is bytes - you do not need to attach a suffix to specify the value in bytes. The size of the file that is preallocated is the total size of the file (including the header) rounded to the nearest multiple of the file system block size.

Warning:

Exercise caution when using absolute path names. Extra steps may be required during database backup and restore procedures to preserve symbolic links. If you restore files to directories different from the original paths, you must change the symbolic links that use absolute path names to point to the new path names before the database is restarted.

To create a container as a Quick I/O file using qiomkfile

  1. Create a Quick I/O-capable file using the qiomkfile command:

    $ /opt/VRTS/bin/qiomkfile  -s file_size /mount_point/filename
  2. Create tablespace containers using this file with the following SQL statements:

    $ db2 connect to database
    $ db2 create tablespace tbsname managed by database using \
    ( DEVICE /mount_point/filename size )
    $ db2 terminate

An example to show how to create a 100MB Quick I/O-capable file named dbfile on the VxFS file system /db01 using a relative path name:

$ /opt/VRTS/bin/qiomkfile -s 100m /db01/dbfile
$ ls -al
-rw-r--r--          1 db2inst1      db2iadm1 104857600      Oct 2 13:42     .dbfile
lrwxrwxrwx          1 db2inst1      db2iadm1                    19      Oct 2 13:42         dbfile -> \
.dbfile::cdev:vxfs:

In the example, qiomkfile creates a regular file named /db01/.dbfile, which has the real space allocated. Then, qiomkfile creates a symbolic link named /db01/dbfile. This symbolic link is a relative link to the Quick I/O interface for /db01/.dbfile, that is, to the .dbfile::cdev:vxfs: file. The symbolic link allows .dbfile to be accessed by any database or application using its Quick I/O interface.

We can then add the file to the DB2 database PROD:

$ db2 connect to PROD
$ db2 create tablespace NEWTBS managed by database using \
( DEVICE '/db01/dbfile' 100m )
$ db2 terminate