zFS Version 1.5 Aggregate and Extended (v5) Directory

zFS Version 1.5 Aggregate and Extended
(v5) Directory
Beginning in z/OS V2R1, zFS supports a new version aggregate, the version 1.5
aggregate. Version 1.5 aggregates support extended (v5) directories. Extended (v5)
directories provide the following benefits:
•
•
•
They can support larger directories with performance.
They store names more efficiently than v4 directories.
When names are removed from extended (v5) directories, the space is reclaimed,
when possible, unlike v4 directories where space is not reclaimed until the
directory is removed.
Version 1.5 aggregates have a larger architected maximum size than version 1.4
aggregates (approximately 16 TB versus approximately 4 TB). Extended (v5) directories
can support more subdirectories than v4 directories (4G-1 versus 64K-1). Because
version 1.5 aggregates will benefit all z/OS V2R1 or later environments, you are
encouraged to use this function only after all of your systems have been migrated to z/OS
V2R1 or a later z/OS version. Version 1.5 aggregates can contain both extended (v5)
directories and v4 directories and either can be a subdirectory of the other. zFS version
1.4 aggregates cannot contain extended (v5) directories. Version 1.5 aggregates can be
mounted on directories contained in version 1.4 aggregates, and the reverse is also
allowed.
Only zFS version 1.5 aggregates can have extended (v5) directories. An existing zFS
version 1.4 aggregate can be converted on z/OS V2R1 to a version 1.5 zFS aggregate,
which allows it to contain both v4 (if existed before the conversion) and extended (v5)
directories. Any new directories created will be an extended (v5) directory. Individual
directories in a zFS version 1.4 aggregate can be converted from v4 to extended (v5)
directories. This will cause an automatic conversion of the aggregate from version 1.4 to
version 1.5, if not at the version 1.5 format, and can only be performed on z/OS V2R1 or
later releases. New directories created in the version 1.5 aggregate will be extended (v5)
directories.
Here are some ways existing v4 directories can be converted to extended (v5) directories:
•
•
•
Explicitly, one at a time, for a mounted aggregate using the zfsadm convert path command, or
Automatically, as they are accessed, for a mounted aggregate when the aggregate
has the converttov5 attribute, or
Offline, converting all directories using the IOEFSUTL converttov5 batch
utility.
Existing directories in a version 1.5 aggregate are not automatically converted if the
NOCONVERTTOV5 MOUNT PARM is specified. Explicit and offline directory
conversion will change the aggregate from version 1.4 to version 1.5, if necessary.
Note: Converting a directory from version v4 to an extended (v5) directory requires both
versions of the directory to exist on disk at the same time, temporarily. If the aggregate
becomes full during the allocation of the new directory a dynamic grow will be
attempted.
Some suggested guidelines for v4 to v5 conversions are:
•
Extended (v5) directories have better performance than v4 directories of the same
size. For optimal performance after all systems at your site have been migrated to
z/OS V2R1, all of the directories should be converted from v4 to v5 even though
support will continue to be provided for v4 directories. To convert selected file
systems or directories, you can use automatic methods (such as specifying the
MOUNT parameters or by using the offline conversion utility). You can also
convert them explicitly with the zfsadm convert command.
•
If your installation exports zFS file systems to NFS or SMB, it is recommended
that the zfsadm convert command not be used for conversions for directories that
are exported by these servers. In rare cases, remote applications can get
unexpected errors if a directory being manually converted is simultaneously being
accessed by NFS or SMB users. Use one of the other methods for the conversion,
such as offline conversion or the CONVERTTOV5 MOUNT parameter, for
these file systems. These methods will ensure that each individual directory is
completely converted before it can be exported.
•
If you are not planning to convert all file systems to v5, then it is best to at least
do the most active file systems or the file systems with large directories. A
directory will get a nontrivial benefit by conversion to v5 if it has 10000 entries or
more (a length of approximately 800 K or more). You can determine the most
active file systems by issuing MODIFY ZFS,QUERY,FILESETS or by using
the wjsfsmon tool. The number of entries in a directory or its size can be
determined by issuing the commands df –t, ls –ld, ls –l, find, or the largedir
utility. The approximate rate of conversion for the directories is between 3500
(for a z9® machine) and 10000 (for a zEC12 machine) directory entries per
second, depending on your processor.
•
After you decide that a file system (aggregate) is going to be converted to version
1.5, you need to decide what conversion method to use. If the file system can be
unmounted, the IOEFSUTL converttov5 batch utility or MOUNT parameters can
be used. If it cannot be unmounted and it is not exported by NFS or SMB servers,
use the zfsadm convert command. If it is exported by NFS or SMB servers, add
the converttov5 attribute to the mounted aggregate.
Care should be taken to make an informed decision before implementing a zFS version
1.5 aggregate in your environment. The main purpose of the version 1.5 aggregate is to
support a new directory format (extended (v5) directory) that will scale better when the
directory contains many objects. Since the format of a new directory is different in a
version 1.5 aggregate, zFS provides toleration APAR OA39466 to be installed on earlier
than z/OS V2R1 supported releases. This will cause a mount of a version 1.5 aggregate
on an earlier than z/OS V2R1 release to fail and resort to z/OS UNIX function shipping.
Earlier than z/OS V2R1 releases cannot locally access an extended (v5) directory or
version 1.5 aggregate. Consider not converting your root file system in the sysplex until
your entire environment is at z/OS V2R1 or later.
In z/OS V2R1 zFS has a new zfsadm command called fileinfo (zfsadm fileinfo). It can
be used to display information about a file or directory. Fileinfo can be used to determine
if the directories in a file system are extended (v5) directories or version v4 directories.
Also note that the default for the zFS IOEPRMxx option CONVERT_AUDITFID is
being changed from OFF to ON. This means that any existing zFS aggregates that have
the non-unique auditfid will be converted to have a unique auditfid on the next read-write
mount.
The following was performed in our parallel sysplex z/OS V2R1 environment.
Determining Directory Candidates for Conversion
If you have long response times, you may have a first indication that you might have a
directory size problem. An examination of the output of the MODIFY ZFS,QUERY,KN
operator command or the z/OS UNIX zfsadm query –knpfs command can be performed.
Look at the Avg Time field on the lines for operations that require zFS to search through
names of a directory (for example, zfs_lookup, zfs_create, or zfs_remove). Typically, the
average times should be on the order of a few milliseconds. If they are relatively large
(perhaps ten to a hundred times larger than that), it is possible that you have a directory
that is too large and is causing performance problems.
Extended (v5) directories will scale better when there are many objects in the directory.
Below are some ways we determined the directory size. These are only examples and
may take some time to complete. You should determine the best approach to take in your
environment.
We have a large version 1.4 aggregate mounted as RWSHARE in our environment.
Using the zfsadm aggrinfo and df commands we see that the file system is large.
$ zfsadm aggrinfo -aggregate OMVSSPN.VER15.ZFS -long
OMVSSPN.VER15.ZFS (R/W COMP): 26600551 K free out of total 59261760
version 1.4
auditfid E2E2F0F0 F0F6AB7C 0020
sysplex-aware
3325068 free 8k blocks;
32800 K log file;
8192 K bitmap file
7 free 1K fragments
80 K filesystem table
$ df -vkP /zfspetmounts/zfsver15A/
Filesystem
1024-blocks
Used
on
OMVSSPN.VER15.ZFS
59261760
32661209
/zfspetmounts/zfsver15A
ZFS, Read/Write, Device:7776, ACLS=Y
File System Owner : TPN
Automove=Y
Filetag : T=off
codeset=0
Aggregate Name : OMVSSPN.VER15.ZFS
Available
Capacity Mounted
26600551
56%
Client=N
Using the ‘df –t’ command, we see that there are many allocated file slots in this file
system.
$ df -t
/zfspetmounts/zfsver15A
Mounted on
Filesystem
Avail/Total
Files
Status
/zfspetmounts/zfsver15A (OMVSSPN.VER15.ZFS)
53201102/118523520
4291102111/4294967295 Available
One way to see if there are large directories in the file system that may be candidates for
conversion to extended (v5) directories is to use the largedir utility. You can use the
largedir.pl utility, which currently requires perl, to help determine which zFS directories
are large (1MB or greater and 3MB or greater). The largedir.pl utility is available on the
z/OS UNIX System Services Tools and Toys Web page as zFS Large Directory Utility
(http://www.ibm.com/systems/z/os/zos/features/unix/bpxa1ty2.html).
You can also issue a ‘find’ command to search for file system directories that are greater
than 1MB.
An example would be:
$ find /zfspetmounts/zfsver15A -type d -xdev -size +1048575c
We issued the largedir utility (located in our environment at /local/largedir/largedir)
against the mountpoint that the file system was mounted on. It resulted in the following.
The Minor Exceptions are over 1MB and the Major Exceptions are over 3MB.
$ /local/largedir/largedir /zfspetmounts/zfsver15A
Minor Exception: Large Directory: /zfspetmounts/zfsver15A/JA0/D3
Minor Exception: Large Directory: /zfspetmounts/zfsver15A/JE0/D3
Minor Exception: Large Directory: /zfspetmounts/zfsver15A/JJ0/D2
Major Exception: Really Large Directory: /zfspetmounts/zfsver15A/JJ0/D3
Major Exception: Really Large Directory: /zfspetmounts/zfsver15A/JH0/D0
Major Exception: Really Large Directory: /zfspetmounts/zfsver15A/JH0/D1
Major Exception: Really Large Directory: /zfspetmounts/zfsver15A/JD0/D0
Major Exception: Really Large Directory: /zfspetmounts/zfsver15A/JD0/D1
Major Exception: Really Large Directory: /zfspetmounts/zfsver15A/JD0/D2
Major Exception: Really Large Directory: /zfspetmounts/zfsver15A/JD0/D3
Major Exception: Really Large Directory: /zfspetmounts/zfsver15A/JG0/D2
Major
Major
Major
Major
Major
Major
Major
Major
Major
Major
Major
Major
Major
Major
Major
Major
Major
Exception:
Exception:
Exception:
Exception:
Exception:
Exception:
Exception:
Exception:
Exception:
Exception:
Exception:
Exception:
Exception:
Exception:
Exception:
Exception:
Exception:
Really
Really
Really
Really
Really
Really
Really
Really
Really
Really
Really
Really
Really
Really
Really
Really
Really
Large
Large
Large
Large
Large
Large
Large
Large
Large
Large
Large
Large
Large
Large
Large
Large
Large
Directory:
Directory:
Directory:
Directory:
Directory:
Directory:
Directory:
Directory:
Directory:
Directory:
Directory:
Directory:
Directory:
Directory:
Directory:
Directory:
Directory:
/zfspetmounts/zfsver15A/JG0/D3
/zfspetmounts/zfsver15A/JF0/D0
/zfspetmounts/zfsver15A/J80/D3
/zfspetmounts/zfsver15A/Z0/D0
/zfspetmounts/zfsver15A/Z0/D1
/zfspetmounts/zfsver15A/Z0/D2
/zfspetmounts/zfsver15A/Z0/D3
/zfspetmounts/zfsver15A/J90/D1
/zfspetmounts/zfsver15A/J90/D2
/zfspetmounts/zfsver15A/J90/D3
/zfspetmounts/zfsver15A/JL0/D0
/zfspetmounts/zfsver15A/JL0/D1
/zfspetmounts/zfsver15A/JL0/D2
/zfspetmounts/zfsver15A/JL0/D3
/zfspetmounts/zfsver15A/JB0/D1
/zfspetmounts/zfsver15A/JB0/D2
/zfspetmounts/zfsver15A/JB0/D3
Using the ls –ld command, we see that the directories are greater than 1MB and contain
many names (or at one time contained many names).
Here are some examples:
$ ls -ld /zfspetmounts/zfsver15A/JA0/D3
drwx-----2 ALEASE1 sys1
1187840 Sep 25 23:35
/zfspetmounts/zfsver15A/JA0/D3
$ ls -ld /zfspetmounts/zfsver15A/JJ0/D3
drwx-----2 ALEASE1 sys1
4898816 Sep 25 22:26
/zfspetmounts/zfsver15A/JJ0/D3
Using the ls –l and word count (wc) commands, we can see that there are currently
many files in the directory and the approximate byte count.
Here are some examples (we filtered out the Total statement from the ls command output
to get an accurate count, knowing that we did not have files with names that contain otal):
$ ls -l /zfspetmounts/zfsver15A/JA0/D3 | grep -v 'otal' | wc -lc
36235 2174100
$ ls -l /zfspetmounts/zfsver15A/JJ0/D3 | grep -v 'otal' | wc -lc
150000 9000000
Convert a Mounted zFS Version 1.4 Aggregate to a zFS
Version 1.5 Aggregate Using the –converttov5 Configuration
Option
We determined that the OMVSSPN.VER15.ZFS file system was a candidate for
extended (v5) directories.
Using the method of having the zFS configuration –converttov5 option ON to update the
attributes of a mounted file system, we gave the file system the converttov5 parameter.
We ensured that no other file systems were mounted or moved to this system while we
were performing this activity.
On the USS-owning system, display the –converttov5 configuration option. Then set it
to on.
$ zfsadm configquery -converttov5
IOEZ00317I The value for configuration option -converttov5 is OFF.
$ zfsadm config -converttov5 on
IOEZ00300I Successfully set -converttov5 to on
$ zfsadm configquery -converttov5
IOEZ00317I The value for configuration option -converttov5 is ON.
Next, on the USS-owning system remount samemode the file system.
UNMOUNT FILESYSTEM('OMVSSPN.VER15.ZFS') REMOUNT(SAMEMODE)
Here are sample zFS messages you may see.
IOEZ00048I Detaching aggregate OMVSSPN.VER15.ZFS
IOEZ00044I Aggregate OMVSSPN.VER15.ZFS attached successfully.
The file system now has the converttov5 attribute and was converted to a version 1.5
aggregate. As the directories are accessed, they will be converted to extended (v5)
directories. New directories will be extended (v5) directories. You can see the attribute
assigned via the zfsadm aggrinfo command.
$ zfsadm aggrinfo -aggregate OMVSSPN.VER15.ZFS -long
OMVSSPN.VER15.ZFS (R/W COMP): 26600551 K free out of total 59261760
version 1.5
auditfid E2E2F0F0 F0F6AB7C 0020
sysplex-aware, converttov5
3325068 free 8k blocks;
7 free 1K fragments
32800 K log file;
80 K filesystem table
8192 K bitmap file
Since, we did not want to have other mounted, remounted, or moved file systems to have
this parameter, we turned –converttov5 off on this system.
$ zfsadm config -converttov5 off
IOEZ00300I Successfully set -converttov5 to off
$ zfsadm configquery -converttov5
IOEZ00317I The value for configuration option -converttov5 is OFF.
Create a zFS Version 1.5 Aggregate
A version 1.5 aggregate can be created on z/OS V2R1 by formatting a VSAM LDS as
version 5 using the zFS IOEFSUTL format batch utility or the z/OS UNIX zfsadm
format command. Version 1.5 aggregates are not formatted by default. They must be
explicitly requested with the -version5 option. You can change the default version that is
formatted by setting the format_aggrversion configuration option to 5.
Note: When the -version4 or -version5 parameters are not provided, the zFS format
utilities IOEAGFMT and IOEFSUTL request the value of the format_aggrversion
configuration option from the zFS kernel to determine the default aggregate version for
the format. If the zFS PFS is down they will fail.
This configuration option (format_aggrversion) also affects both of the following:
•
•
The zfsadm format command when neither the -version4 nor the -version5 option
is specified, and
Users of the Format Aggregate API such as the BPXWH2Z tool, the z/OS UNIX
TSO/E ISHELL command, or the z/OS UNIX automount shell command with the
allocany or allocuser keyword.
Note: The IOEFSUTL batch program only formats with new auditfids. This means that
new zFS aggregates will have a unique auditfid by default.
Note: The default for the zFS IOEPRMxx option, CONVERT_AUDITFID, is being
changed from OFF to ON. This means that any existing zFS aggregates that have the
non-unique auditfid will be converted to have a unique auditfid on the next read-write
mount.
Note: The IOEAGFMT batch program and the zfsadm format command have changed
the default to -newauditfid.
The zfsadm aggrinfo command with the –long option can be used to display the
aggregate version.
Below are the results of creating a zFS version 1.5 aggregate in our environment using
the following techniques after all systems were migrated to z/OS V2R1:
•
•
•
zFS IOEFSUTL format batch utility.
The z/OS UNIX zfsadm format command.
Change the default version that is formatted by setting the format_aggrversion
configuration option to 5.
Create a zFS Version 1.5 Aggregate Using IOEFSUTL
To create a zFS Version 1.5 aggregate using the zFS IOEFSUTL format batch utility, we
first defined the VSAM LDS using these attributes:
DEFINE CLUSTER (NAME(OMVSSPT.V15.ZFS) LINEAR CYL(1000 100) SHAREOPTIONS(3) STORCLAS(SMSOE) DATACLAS(SMSOE) -
MGMTCLAS(SMSOE))
We then formatted the aggregate as a version 1.5 with the following JCL definitions:
...
//CREATE EXEC PGM=IOEFSUTL,REGION=0M,
// PARM=('format -aggregate OMVSSPT.V15.ZFS -version5')
...
This is an example of the format results:
IOEZ00559I zFS IOEFSUTL: Initializing z/OS
zFS
Version 02.01.00 Service Level OA41870 - HZFS410.
Created on Mon Jun 3 12:34:28 EDT 2013.
Address space asid x46
IOEZ00760I No IOEZPRM DD specified. Parmlib search being used.
IOEZ00004I Formatting to 8K block number 90000 for primary extent of
OMVSSPT.V15.ZFS.
IOEZ00005I Primary extent loaded successfully for OMVSSPT.V15.ZFS.
IOEZ00077I HFS-compatibility aggregate OMVSSPT.V15.ZFS has been
successfully created.
We then TSO mounted the zFS Version 1.5 (/zfspetmounts/zfsv15) off of a zFS Version
1.4 mounted file system (/zfspetmounts). Note that you can not mount a version 1.5
aggregate on a prior to z/OS V2R1 system. You will receive reason codes like
EF096A32, which describe the condition where a new version aggregate cannot be
processed on this system.
MOUNT FILESYSTEM('OMVSSPT.V15.ZFS') TYPE(ZFS)
MODE(RDWR) MOUNTPOINT('/zfspetmounts/zfsv15')
Next we used the new z/OS V2R1 zFS zfsadm fileinfo command to display the directory
versions.
The version 1.4 file system mountpoint directory showed as a v4 directory.
$ zfsadm fileinfo -path /zfspetmounts
path: /zfspetmounts
***
global data
***
fid
3196,8947036
1983,7320
length
8192
1K blocks
8
uid,gid
0,0
dir model acl
0,0
user audit
F,F,F
set sticky,uid,gid
0,0,0
object type
DIR
object genvalue
0x00000000
dir name count
na
dir tree status
na
file format bits
na,na,na
file cver
na
anode
format
permissions
access acl
file model acl
auditor audit
seclabel
object linkcount
dir version
dir data version
dir conversion
file charset id
charspec major,minor
BLOCKED
777
0,0
0,0
N,N,N
none
8
4
6
na
na
na
direct blocks
0x00003A25
indirect blocks
none
mtime
Jun 25 13:38:19 2013
ctime
Jun 25 13:38:19 2013
reftime
none
atime
create time
Jun 25 13:39:25 2013
May 21 13:35:10 2009
The version 1.5 file system mountpoint directory showed as an extended (v5) directory.
$ zfsadm fileinfo -path /zfspetmounts/zfsv15
path: /zfspetmounts/zfsv15
***
global data
***
fid
1,1
anode
49228,516
length
8192
format
BLOCKED
1K blocks
8
permissions
755
uid,gid
0,0
access acl
0,0
dir model acl
0,0
file model acl
0,0
user audit
F,F,F
auditor audit
N,N,N
set sticky,uid,gid
0,0,0
seclabel
none
object type
DIR
object linkcount
2
object genvalue
0x00000000
dir version
5
dir name count
2
dir data version
0
dir tree status
VALID
dir conversion
na
file format bits
na,na,na
file charset id
na
file cver
na
charspec major,minor
na
direct blocks
0x0000B602
indirect blocks
none
mtime
Jun 25 12:58:58 2013
atime
Jun 25 12:58:58 2013
ctime
Jun 25 12:58:58 2013
create time Jun 25 12:58:58 2013
reftime
none
Create a zFS Version 1.5 Aggregate Using zfsadm format
The following are the steps we took to create a version 1.5 aggregate using the z/OS
UNIX zfsadm format command.
First, we allocated the aggregate using the zfsadm define command.
$ zfsadm define -aggr OMVSSPT.V15.ZFS -cyl 1000 100
IOEZ00248I VSAM linear dataset OMVSSPT.V15.ZFS successfully created.
Then we formatted the aggregate using the zfsadm format –version5 command.
$ zfsadm format -aggr OMVSSPT.V15.ZFS -version5
IOEZ00077I HFS-compatibility aggregate OMVSSPT.V15.ZFS has been
successfully created
We then mounted the file system from the z/OS V2R1 system. Note that the local mount
will fail on lower than z/OS V2R1 releases.
$ mount -f OMVSSPT.V15.ZFS /zfspetmounts/zfsv15
Using the zfsadm aggrinfo command with the –long parameter, we see that it is a
version 1.5 aggregate.
$ zfsadm aggrinfo -aggr OMVSSPT.V15.ZFS -long
OMVSSPT.V15.ZFS (R/W COMP): 718311 K free out of total 725760
version 1.5
auditfid E2E2F0F0 F2F6E80B 0030
sysplex-aware
89788 free 8k blocks;
7 free 1K fragments
7264 K log file;
48 K filesystem table
112 K bitmap file
If you mounted the file system as sysplex-aware (for example: RWSHARE or read-only)
and there are no lower releases in the sysplex, and you have connectivity, the file system
displays will show as not being a client (CLIENT=N). Also, any mount parameters
provided with the mount will display. Here is a df command display.
$ df -vkP /zfspetmounts/zfsv15
Filesystem
1024-blocks
Used
on
OMVSSPT.V15.ZFS
725760
7449
/zfspetmounts/zfsv15
ZFS, Read/Write, Device:3943, ACLS=Y
File System Owner : Z1
Automove=Y
Filetag : T=off
codeset=0
Aggregate Name : OMVSSPT.V15.ZFS
Available
718311
Capacity Mounted
2%
Client=N
We used the new z/OS V2R1 zfsadm fileinfo command to display the directory versions.
The version 1.4 file system mountpoint directory showed as a v4 directory.
$ zfsadm fileinfo -path /zfspetmounts
path: /zfspetmounts
***
global data
***
fid
3196,8947036 anode
1983,7320
length
8192
format
BLOCKED
1K blocks
8
permissions
777
uid,gid
0,0
access acl
0,0
dir model acl
0,0
file model acl
0,0
user audit
F,F,F
auditor audit
N,N,N
set sticky,uid,gid
0,0,0
seclabel
none
object type
DIR
object linkcount
8
object genvalue
0x00000000
dir version
4
dir name count
na
dir data version
6
dir tree status
na
dir conversion
na
file format bits
na,na,na
file charset id
na
file cver
na
charspec major,minor
na
direct blocks
0x00003A25
indirect blocks
none
mtime
Jun 25 13:38:19 2013
atime
Jun 25 14:22:29 2013
ctime
Jun 25 13:38:19 2013
create time May 21 13:35:10 2009
reftime
none
The version 1.5 file system mountpoint directory showed as an extended (v5) directory.
$ zfsadm fileinfo -path /zfspetmounts/zfsv15
path: /zfspetmounts/zfsv15
***
global data
***
fid
1,1
anode
21496,516
length
8192
format
BLOCKED
1K blocks
8
permissions
755
uid,gid
0,0
access acl
0,0
dir model acl
0,0
file model acl
0,0
user audit
F,F,F
auditor audit
N,N,N
set sticky,uid,gid
0,0,0
seclabel
none
object type
DIR
object linkcount
2
object genvalue
0x00000000
dir version
5
dir name count
2
dir data version
0
dir tree status
VALID
dir conversion
na
file format bits
na,na,na
file charset id
na
file cver
na
charspec major,minor
na
direct blocks
0x000001EA
indirect blocks
none
mtime
Jun 25 14:20:32 2013
atime
Jun 25 14:20:32 2013
ctime
Jun 25 14:20:32 2013
create time Jun 25 14:20:32 2013
reftime
none
Create a zFS Version 1.5 Aggregate Using format_aggrversion
Configuration option
The following are the steps we took to create a Version 1.5 aggregate using the default
version that is formatted by setting the format_aggrversion configuration option to 5.
First, we queried the format_aggrversion setting and saw it is set to the default version 4.
$ zfsadm configquery -format_aggrversion
IOEZ00317I The value for configuration option -format_aggrversion is 4.
We then dynamically changed the format_aggrversion setting to 5.
$ zfsadm config
-format_aggrversion 5
IOEZ00300I Successfully set -format_aggrversion to 5
We queried the format_aggrversion setting after and saw it is now set to the version 5.
$ zfsadm configquery -format_aggrversion
IOEZ00317I The value for configuration option -format_aggrversion is 5.
Then, we defined the aggregate.
$ zfsadm define -aggr OMVSSPT.V15.ZFS -cyl 1000 100
IOEZ00248I VSAM linear dataset OMVSSPT.V15.ZFS successfully created.
We used the zfsadm format command to format the aggregate and it was formatted as a
version 1.5 aggregate.
$ zfsadm format -aggr OMVSSPT.V15.ZFS
IOEZ00077I HFS-compatibility aggregate OMVSSPT.V15.ZFS has been
successfully created
The aggregate was then mounted on /zfspetmounts/zfsv15.
$ mount -f OMVSSPT.V15.ZFS /zfspetmounts/zfsv15
Using the zfsadm fileinfo command we see that the version 1.5 file system
mountpoint directory showed as an extended (v5) directory.
$ zfsadm fileinfo -path /zfspetmounts/zfsv15
path: /zfspetmounts/zfsv15
***
global data
***
fid
1,1
anode
14825,516
length
8192
format
BLOCKED
1K blocks
8
permissions
755
uid,gid
0,0
access acl
0,0
dir model acl
0,0
file model acl
0,0
user audit
F,F,F
auditor audit
N,N,N
set sticky,uid,gid
0,0,0
seclabel
none
object type
DIR
object linkcount
2
object genvalue
0x00000000
dir version
5
dir name count
2
dir data version
0
dir tree status
VALID
dir conversion
na
file format bits
na,na,na
file charset id
na
file cver
na
charspec major,minor
na
direct blocks
0x00012355
indirect blocks
none
mtime
Jun 25 14:43:23 2013
atime
Jun 25 14:43:23 2013
ctime
Jun 25 14:43:23 2013
create time Jun 25 14:43:23 2013
reftime
none
Convert a zFS Version 1.4 Aggregate to a Version 1.5
Aggregate
You can convert a zFS version 1.4 aggregate to a version 1.5 aggregate with the online
zfsadm convert command on z/OS V2R1. The aggregate can contain v4 and extended
(v5) directories. All new directories will be extended (v5) directories. The v4 directories
can be converted later using various convert commands and parameters.
Note: Online conversion of an aggregate to version 1.5 can not take place if the owner is
down-level, there are down-level members in the sysplex, or the aggregate is mounted
read-only.
If the file system can be unmounted, the IOEFSUTL converttov5 batch utility or
MOUNT parameters can be used. If it cannot be unmounted and it is not exported by
NFS or SMB servers, use the zfsadm convert command. If it is exported by NFS or
SMB servers, add the converttov5 attribute to the mounted aggregate.
Convert a zFS Version 1.4 Using zfsadm convert
We took the following steps and converted a mounted version 1.4 aggregate, with
existing v4 directories, to a version 1.5 aggregate without converting the existing
directories to extended (v5) directories, using zfsadm convert. Version 1.5 aggregates
can support both v4 and extended v5 directories. All our systems were at the z/OS V2R1
release level.
Using zfsadm aggrinfo, with the –long option, we see that the aggregate was originally a
zFS version 1.4.
$ zfsadm aggrinfo -aggregate omvsspn.pet3.zfs.fs -long
OMVSSPN.PET3.ZFS.FS (R/W COMP): 1960823 K free out of total 1961280
version 1.4
auditfid E2E2F0F0 F7F909ED 0000
sysplex-aware
245102 free 8k blocks;
7 free 1K fragments
112 K log file;
56 K filesystem table
280 K bitmap file
We converted the aggregate to a version 1.5, with the existing directories remaining as v4
directories, by using the –aggrversion option for the convert command.
$ zfsadm convert -aggrversion omvsspn.pet3.zfs.fs
IOEZ00810I Successfully changed aggregate omvsspn.pet3.zfs.fs to
version 1.5
After the convert the aggregate is now a zFS version 1.5.
$ zfsadm aggrinfo -aggregate omvsspn.pet3.zfs.fs -long
OMVSSPN.PET3.ZFS.FS (R/W COMP): 1960823 K free out of total 1961280
version 1.5
auditfid E2E2F0F0 F7F909ED 0000
sysplex-aware
245102 free 8k blocks;
7 free 1K fragments
112 K log file;
56 K filesystem table
280 K bitmap file
Since we only converted the aggregate to a version 1.5, the directories remain as v4
directories. This was displayed by using the zfsadm fileinfo command.
$ zfsadm fileinfo -path /pet3
path: /pet3
***
global data
***
fid
1,1
length
8192
1K blocks
8
uid,gid
0,0
dir model acl
0,0
user audit
F,F,F
set sticky,uid,gid
0,0,0
object type
DIR
object genvalue
0x00000000
anode
format
permissions
access acl
file model acl
auditor audit
seclabel
object linkcount
dir version
79,516
BLOCKED
777
0,0
0,0
N,N,N
none
3
4
dir name count
na
dir tree status
na
file format bits
na,na,na
file cver
na
direct blocks
0x00000044
indirect blocks
none
mtime
Jul 26 13:22:36 2013
ctime
Jul 26 13:22:36 2013
reftime
none
dir data version
dir conversion
file charset id
charspec major,minor
atime
create time
2836
na
na
na
Jul 26 13:18:53 2013
Jul 12 14:34:46 2002
Next, we made a directory, which will be an extended (v5) directory.
$ mkdir /pet3/v15dirAv5
Using the zfsadm fileinfo command we see that the directory created in the zFS version
1.5 aggregate was an extended (v5) directory.
$ zfsadm fileinfo -path /pet3/v15dirAv5
path: /pet3/v15dirAv5
***
global data
***
fid
5,1435
anode
79,1524
length
8192
format
BLOCKED
1K blocks
8
permissions
775
uid,gid
0,0
access acl
0,0
dir model acl
0,0
file model acl
0,0
user audit
F,F,F
auditor audit
N,N,N
set sticky,uid,gid
0,0,0
seclabel
none
object type
DIR
object linkcount
2
object genvalue
0x00000000
dir version
5
dir name count
3
dir data version
1
dir tree status
VALID
dir conversion
na
file format bits
na,na,na
file charset id
na
file cver
na
charspec major,minor
na
direct blocks
0x00003219
indirect blocks
none
mtime
Jul 26 14:07:08 2013
atime
Jul 26 14:06:37 2013
ctime
Jul 26 14:07:08 2013
create time Jul 26 14:06:37 2013
reftime
none
We did the following to test that directories created under a v4 directory in a version 1.5
aggregate will be extended (v5) directories.
$ mkdir /pet3/origdirAv4/aftv15dirAunderv4
$ zfsadm fileinfo -path /pet3/origdirAv4/aftv15dirAunderv4
path: /pet3/origdirAv4/aftv15dirAunderv4
***
global data
***
fid
8,1435
anode
length
8192
format
1K blocks
8
permissions
uid,gid
0,0
access acl
dir model acl
0,0
file model acl
user audit
F,F,F
auditor audit
set sticky,uid,gid
0,0,0
seclabel
object type
DIR
object linkcount
object genvalue
0x00000000
dir version
79,2280
BLOCKED
775
0,0
0,0
N,N,N
none
2
5
dir name count
2
dir tree status
VALID
file format bits
na,na,na
file cver
na
direct blocks
0x00024173
indirect blocks
none
mtime
Jul 26 14:22:14 2013
ctime
Jul 26 14:22:14 2013
reftime
none
dir data version
dir conversion
file charset id
charspec major,minor
atime
create time
0
na
na
na
Jul 26 14:22:14 2013
Jul 26 14:22:14 2013
Convert a zFS Version 1.4 Using IOEFSUTL converttov5
We converted an unmounted version 1.4 aggregate to a version 1.5 aggregate without
converting the existing directories to extended v5, using the IOEFSUTL converttov5
and –aggrversion_only parameter. All our systems were at the z/OS V2R1 release level.
File system mounted on /pet3 was a version 1.4 aggregate. The file system was
unmounted.
$ unmount /pet3
We executed the batch IOEFSUTL utility, using the –aggrversion_only parameter, to
only format the aggregate. Here are excerpts from the JCL.
…
//CONVERT EXEC PGM=IOEFSUTL,REGION=0M,
// PARM=('converttov5 -aggregate OMVSSPN.PET3.ZFS.FS -aggrversion_only
X
//
')
…
Here is an example of the results from the execution.
IOEZ00559I zFS IOEFSUTL: Initializing z/OS
zFS
Version 02.01.00 Service Level EA42544 - HZFS410.
Created on Tue Jun 18 14:08:47 EDT 2013.
Address space asid x5B
IOEZ00760I No IOEZPRM DD specified. Parmlib search being used.
IOEZ00812I Successfully changed aggregate OMVSSPN.PET3.ZFS.FS to
version 1.5.
The file system was mounted.
$ mount -f OMVSSPN.PET3.ZFS.FS /pet3
Since we only converted the aggregate to a version 1.5 aggregate (-aggrversion_only),
the directories remained as v4 directories. We used zfsadm fileinfo to display the
version of the directory.
$ zfsadm fileinfo -path /pet3
path: /pet3
***
global data
***
fid
1,1
anode
79,516
length
8192
1K blocks
8
uid,gid
0,0
dir model acl
0,0
user audit
F,F,F
set sticky,uid,gid
0,0,0
object type
DIR
object genvalue
0x00000000
dir name count
na
dir tree status
na
file format bits
na,na,na
file cver
na
direct blocks
0x00000044
indirect blocks
none
mtime
Aug 22 13:26:35 2011
ctime
Aug 22 13:26:35 2011
reftime
none
format
permissions
access acl
file model acl
auditor audit
seclabel
object linkcount
dir version
dir data version
dir conversion
file charset id
charspec major,minor
atime
create time
BLOCKED
777
0,0
0,0
N,N,N
none
4
4
2830
na
na
na
Jul 8 13:17:57 2013
Jul 12 14:34:46 2002
Using zfsadm aggrinfo we see that this is a version 1.5 aggregate.
$ zfsadm aggrinfo -aggregate OMVSSPN.PET3.ZFS.FS -long
OMVSSPN.PET3.ZFS.FS (R/W COMP): 1960820 K free out of total 1961280
version 1.5
auditfid E2E2F0F0 F7F909ED 0000
sysplex-aware
245100 free 8k blocks;
20 free 1K fragments
112 K log file;
56 K filesystem table
280 K bitmap file
We tested to see that directories made after show as extended (v5) directories.
$ mkdir /pet3/v15aggrmkdir
$ zfsadm fileinfo -path /pet3/v15aggrmkdir
path: /pet3/v15aggrmkdir
***
global data
***
fid
5,1433
anode
79,1524
length
8192
format
BLOCKED
1K blocks
8
permissions
775
uid,gid
0,0
access acl
0,0
dir model acl
0,0
file model acl
0,0
user audit
F,F,F
auditor audit
N,N,N
set sticky,uid,gid
0,0,0
seclabel
none
object type
DIR
object linkcount
2
object genvalue
0x00000000
dir version
5
dir name count
2
dir data version
0
dir tree status
VALID
dir conversion
na
file format bits
na,na,na
file charset id
na
file cver
na
charspec major,minor
na
direct blocks
0x00000CAD
indirect blocks
none
mtime
Jul 8 13:27:38 2013
atime
Jul 8 13:27:38 2013
ctime
Jul 8 13:27:38 2013
create time Jul 8 13:27:38 2013
reftime
none
Convert a zFS Version 1.5 Aggregate to a Version 1.4
Aggregate
You can convert a version 1.5 aggregate to a version 1.4 aggregate by using the
IOEFSUTL utility. Since, the aggregate will be a version 1.4 and can not contain
extended (v5) directories, all extended (v5) directories will be converted to v4 directories.
The file system needs to be unmounted and the convert needs to be executed on a z/OS
V2R1 system.
Note: The zFS IOEFSUTL utility with the converttov4 parameter can be used to
convert a version 1.5 aggregate to a version 1.4 aggregate as long as it is no larger than 4
TB and does not have any extended (v5) directories with more than 64K-1 subdirectories.
This includes converting extended (v5) directories into old format (v4) directories.
For example, we had mounted a version 1.5 aggregate
(OMVSSPN.VER14.TO.VER15.ZFS) that was earlier converted from a version 1.4 to a
version 1.5, and all the directories were converted to extended (v5) directories. We then
used the IOEFSUTL utility to convert the aggregate to a version 1.4 aggregate.
Unmount the file system.
$ unmount /zfspetmounts/ver14tover15
Here are JCL excerpts we used to convert a version 1.5 aggregate offline to a version 1.4
aggregate.
…
//CONVERT EXEC PGM=IOEFSUTL,REGION=0M,
// PARM=('converttov4 -aggregate OMVSSPN.VER14.TO.VER15.ZFS')
…
This is an example of the conversion to version 1.4 results.
IOEZ00559I zFS IOEFSUTL: Initializing z/OS
zFS
Version 02.01.00 Service Level OA42544 - HZFS410.
Created on Mon Jul 22 11:34:59 EDT 2013.
Address space asid x3B
IOEZ00760I No IOEZPRM DD specified. Parmlib search being used.
IOEZ00800I Conversion has processed 7 of 7 objects in the anode table.
IOEZ00803I 3 directories were found, 3 converted, 3 directory pages
converted to 3 directory pages.
IOEZ00810I Successfully changed aggregate OMVSSPN.VER14.TO.VER15.ZFS to
version 1.4.
IOEZ00808I Successfully converted all directories in aggregate
OMVSSPN.VER14.TO.VER15.ZFS to version 4.
After mounting without any parameters we see that it is now a version 1.4 aggregate and
the directories are back to v4.
MOUNT FILESYSTEM('OMVSSPN.VER14.TO.VER15.ZFS') TYPE(ZFS)
MODE(RDWR) MOUNTPOINT('/zfspetmounts/ver14tover15')
Using zfsadm fileinfo we see that the aggregate is back to version 1.4.
$ zfsadm aggrinfo -aggregate OMVSSPN.VER14.TO.VER15.ZFS -long
OMVSSPN.VER14.TO.VER15.ZFS (R/W COMP): 1263 K free out of total 1440
version 1.4
auditfid E2E2F0F0 F1F41A4E 0000
sysplex-aware
157 free 8k blocks;
7 free 1K fragments
112 K log file;
16 K filesystem table
8 K bitmap file
Using zfsadm fileinfo, we see that all directories are back to v4.
$ zfsadm fileinfo -path /zfspetmounts/ver14tover15
$ zfsadm fileinfo -path /zfspetmounts/ver14tover15/origv14dir1
$ zfsadm fileinfo -path /zfspetmounts/ver14tover15/origv14dir2
All show within the fileinfo display:
...
object genvalue
…
0x00000000
dir version
4
Convert v4 Directory to Extended (v5) Directory
Once an aggregate is a version 1.5 aggregate, new directories created in it will be
extended (v5) directories. On our all z/OS V2R1 sysplex, we converted directories to
extended (v5) directories by using one or all of the following (Note: only allowed on a
z/OS V2R1 or later system):
•
•
•
Explicitly, one at a time, for a mounted aggregate using the zfsadm convert path command.
Automatically, as they are accessed, for a mounted aggregate when the aggregate
has the converttov5 attribute.
Offline, converting all directories using the IOEFSUTL converttov5 batch utility.
A v4 directory can be converted to an extended (v5) directory by using copy (cp) if the
target is a version 1.5 aggregate. A v4 directory can be converted to an extended (v5)
directory using the move (mv) command if the target is in a different version 1.5
aggregate and the directory is created as a result of the move.
Convert a v4 Directory Using zfsadm convert -path
We converted an existing v4 directory in a version 1.5 aggregate to an extended (v5)
directory using the zfsadm convert –path command.
An aggregate (OMVSSPN.PET3.ZFS.FS mounted on /pet3) was converted earlier to a
version 1.5 aggregate from a version 1.4 aggregate without converting the existing
directories to extended (v5) directories.
We now want to convert the root directory of /pet3 to an extended (v5) directory.
Check that the aggregate is a version 1.5 aggregate with the zfsadm aggrinfo command,
using the –long option.
$ zfsadm aggrinfo -aggregate OMVSSPN.PET3.ZFS.FS -long
OMVSSPN.PET3.ZFS.FS (R/W COMP): 1960807 K free out of total 1961280
version 1.5
auditfid E2E2F0F0 F7F909ED 0000
sysplex-aware
245100 free 8k blocks;
7 free 1K fragments
112 K log file;
56 K filesystem table
280 K bitmap file
We used zfsadm fileinfo to display that the directories are v4 directories.
$ zfsadm fileinfo -path /pet3/
path: /pet3/
***
global data
***
fid
1,1
length
8192
1K blocks
8
uid,gid
0,0
dir model acl
0,0
user audit
F,F,F
set sticky,uid,gid
0,0,0
object type
DIR
object genvalue
0x00000000
dir name count
na
dir tree status
na
file format bits
na,na,na
file cver
na
direct blocks
0x00000044
indirect blocks
none
mtime
Jul 26 14:07:24 2013
ctime
Jul 26 14:07:24 2013
reftime
none
anode
format
permissions
access acl
file model acl
auditor audit
seclabel
object linkcount
dir version
dir data version
dir conversion
file charset id
charspec major,minor
atime
create time
79,516
BLOCKED
777
0,0
0,0
N,N,N
none
4
4
2838
na
na
na
Jul 26 14:19:23 2013
Jul 12 14:34:46 2002
$ zfsadm fileinfo -path /pet3/origdirAv4/
path: /pet3/origdirAv4/
***
global data
***
fid
2,1435
anode
length
8192
format
1K blocks
8
permissions
uid,gid
0,0
access acl
dir model acl
0,0
file model acl
user audit
F,F,F
auditor audit
set sticky,uid,gid
0,0,0
seclabel
object type
DIR
object linkcount
object genvalue
0x00000000
dir version
dir name count
na
dir data version
79,768
BLOCKED
775
0,0
0,0
N,N,N
none
3
4
2
dir tree status
na
file format bits
na,na,na
file cver
na
direct blocks
0x00009A2E
indirect blocks
none
mtime
Jul 26 14:22:14 2013
ctime
Jul 26 14:22:14 2013
reftime
none
dir conversion
file charset id
charspec major,minor
atime
create time
na
na
na
Jul 26 13:19:52 2013
Jul 26 13:19:52 2013
Convert the root directory of the file system to an extended (v5) directory using the
zfsadm convert –path command.
$ zfsadm convert -path /pet3
IOEZ00791I Successfully converted directory /pet3 to version 5 format.
After the root directory, /pet3, was converted to extended (v5) directory, the directory is
now an extended (v5) directory, and the existing v4 directories under it are still at the v4
version.
$ zfsadm fileinfo -path /pet3
path: /pet3
***
global data
***
fid
1,1
length
8192
1K blocks
8
uid,gid
0,0
dir model acl
0,0
user audit
F,F,F
set sticky,uid,gid
0,0,0
object type
DIR
object genvalue
0x00000000
dir name count
6
dir tree status
VALID
file format bits
na,na,na
file cver
na
direct blocks
0x00005D80
indirect blocks
none
mtime
Jul 26 14:07:24 2013
ctime
Jul 26 14:07:24 2013
reftime
none
anode
format
permissions
access acl
file model acl
auditor audit
seclabel
object linkcount
dir version
dir data version
dir conversion
file charset id
charspec major,minor
atime
create time
79,516
BLOCKED
777
0,0
0,0
N,N,N
none
4
5
4
na
na
na
Jul 26 14:50:48 2013
Jul 12 14:34:46 2002
$ zfsadm fileinfo -path /pet3/origdirAv4/
path: /pet3/origdirAv4/
***
global data
***
fid
2,1435
anode
length
8192
format
1K blocks
8
permissions
uid,gid
0,0
access acl
dir model acl
0,0
file model acl
user audit
F,F,F
auditor audit
set sticky,uid,gid
0,0,0
seclabel
object type
DIR
object linkcount
object genvalue
0x00000000
dir version
dir name count
na
dir data version
dir tree status
na
dir conversion
file format bits
na,na,na
file charset id
79,768
BLOCKED
775
0,0
0,0
N,N,N
none
3
4
2
na
na
file cver
na
direct blocks
0x00009A2E
indirect blocks
none
mtime
Jul 26 14:22:14 2013
ctime
Jul 26 14:22:14 2013
reftime
none
charspec major,minor
atime
create time
na
Jul 26 13:19:52 2013
Jul 26 13:19:52 2013
Now lets convert the other v4 directory to an extended (v5) directory.
$ zfsadm convert -path /pet3/origdirAv4/
IOEZ00791I Successfully converted directory /pet3/origdirAv4/ to
version 5 format.
Convert a Version 1.4 Aggregate and a v4 Directory Using
zfsadm convert -path
We used the zfsadm convert –path on a mounted version 1.4 aggregate to convert a
directory to an extended (v5) directory. This converted the aggregate to a version 1.5
aggregate and converted the directory indicated in the -path to an extended (v5) directory.
We mounted a version 1.4 aggregate.
$ mount -t zfs -f OMVSSPN.PET3.ZFS.FS /pet3
Using zfsadm fileinfo, we see that the directory is a version v4.
$ zfsadm fileinfo -path /pet
path: /pet
***
global data
***
fid
83,1
length
8192
1K blocks
8
uid,gid
0,0
dir model acl
0,0
user audit
F,F,F
set sticky,uid,gid
0,0,0
object type
DIR
object genvalue
0x00000000
dir name count
na
dir tree status
na
file format bits
na,na,na
file cver
na
direct blocks
0x0000585D
indirect blocks
none
mtime
Jul 8 13:26:53 2013
ctime
Jul 8 13:26:53 2013
reftime
none
anode
format
permissions
access acl
file model acl
auditor audit
seclabel
object linkcount
dir version
dir data version
dir conversion
file charset id
charspec major,minor
atime
create time
701,5052
BLOCKED
755
0,0
0,0
N,N,N
none
11
4
9
na
na
na
Jul 21 18:57:59 2013
Jul 24 13:56:01 2008
Using zfsadm convert –path we converted the /pet3 directory to an extended (v5)
directory.
$ zfsadm convert -path /pet3
IOEZ00791I Successfully converted directory /pet3 to version 5 format.
Using the zfsadm fileinfo command we see that the /pet3 directory was converted to an
extended (v5) directory, and the aggregate was converted to version 1.5. The other v4
directories remained v4.
$ zfsadm fileinfo -path /pet3
path: /pet3
***
global data
***
fid
1,1
length
8192
1K blocks
8
uid,gid
0,0
dir model acl
0,0
user audit
F,F,F
set sticky,uid,gid
0,0,0
object type
DIR
object genvalue
0x00000000
dir name count
6
dir tree status
VALID
file format bits
na,na,na
file cver
na
direct blocks
0x0000A710
indirect blocks
none
mtime
Jul 26 14:07:24 2013
ctime
Jul 26 14:07:24 2013
reftime
none
anode
format
permissions
access acl
file model acl
auditor audit
seclabel
object linkcount
dir version
dir data version
dir conversion
file charset id
charspec major,minor
atime
create time
79,516
BLOCKED
777
0,0
0,0
N,N,N
none
4
5
4
na
na
na
Jul 26 14:50:48 2013
Jul 12 14:34:46 2002
Using the zfsadm aggrinfo command, with the –long option, we see that the aggregate
was converted to version 1.5.
$ zfsadm aggrinfo -aggregate OMVSSPN.PET3.ZFS.FS -long
OMVSSPN.PET3.ZFS.FS (R/W COMP): 1960807 K free out of total 1961280
version 1.5
auditfid E2E2F0F0 F7F909ED 0000
sysplex-aware
245100 free 8k blocks;
7 free 1K fragments
112 K log file;
56 K filesystem table
280 K bitmap file
Convert a Version 1.4 Aggregate on First Read-Write Using
converttov5
A version 1.4 aggregate can be changed to a version 1.5 aggregate on the first primary
read-write mount if IOEPRMxx option converttov5=on is set, or if the
CONVERTTOV5 MOUNT PARM is specified. The default is off. The aggregate is
changed to a version 1.5 aggregate and each existing directory is converted to an
extended (v5) directory as it is referenced.
The CONVERTTOV5 or NOCONVERTTOV5 specifies whether a zFS read/write file
system is assigned the converttov5 attribute. If it is assigned the converttov5 attribute
and the aggregate is a version 1.5 aggregate, zFS automatically converts directories from
v4 to extended (v5) as they are accessed. If the converttov5 attribute is assigned at
primary mount time, a version 1.4 aggregate is changed to a version 1.5 aggregate. If
automatic directory conversion for a directory fails, the conversion is not attempted again
until the file system is unmounted and mounted again. The converttov5 attribute can also
be assigned if the MOUNT option is not specified but the converttov5 specification in the
IOEFSPRM file is on when the file system is mounted or remounted. The default is
NOCONVERTTOV5. The CONVERTTOV5 parameter can also be assigned to a
mounted zFS file system.
We mounted a version 1.4 aggregate as read/write (RDWR) with the CONVERTTOV5
mount parameter. This converted the aggregate to a version 1.5 aggregate.
MOUNT FILESYSTEM('OMVSSPN.VER14.TO.VER15.ZFS') TYPE(ZFS)
MODE(RDWR) MOUNTPOINT('/zfspetmounts/ver14tover15')
PARM('CONVERTTOV5')
Since the file system was mounted with the CONVERTTOV5 mount parameter, it
shows as a version 1.5 aggregate using the zfsadm aggrinfo with the –long option
display.
$ zfsadm aggrinfo -aggregate OMVSSPN.VER14.TO.VER15.ZFS -long
OMVSSPN.VER14.TO.VER15.ZFS (R/W COMP): 1263 K free out of total 1440
version 1.5
auditfid E2E2F0F0 F1F41A4E 0000
sysplex-aware, converttov5
157 free 8k blocks;
7 free 1K fragments
112 K log file;
16 K filesystem table
8 K bitmap file
Using the df and D OMVS commands we can see the CONVERTTOV5 mount
parameter.
$ df -vkP
/zfspetmounts/ver14tover15
Filesystem
1024-blocks
Used Available Capacity Mounted
on
OMVSSPN.VER14.TO.VER15.ZFS 1440
177
1263
13%
/zfspetmounts/ver14tover15
ZFS, Read/Write, Device:62948, ACLS=Y
CONVERTTOV5
File System Owner : J80
Automove=Y
Client=N
Filetag : T=off
codeset=0
Aggregate Name : OMVSSPN.VER14.TO.VER15.ZFS
d omvs,f,name='OMVSSPN.VER14.TO.VER15.ZFS'
BPXO045I 13.33.15 DISPLAY OMVS 951
OMVS
0012 ACTIVE
OMVS=(00,J8)
TYPENAME
DEVICE ----------STATUS----------- MODE
ZFS
62948 ACTIVE
RDWR
NAME=OMVSSPN.VER14.TO.VER15.ZFS
PATH=/zfspetmounts/ver14tover15
MOUNT PARM=CONVERTTOV5
OWNER=J80
AUTOMOVE=Y CLIENT=N
MOUNTED
LATCHES
08/14/2013 L=1422
13.29.00
Q=1422
We used zfsadm fileinfo to check the directories. Fileinfo accesses the v4 directories,
and automatically converts them to extended (v5) directories.
$ zfsadm fileinfo -path /zfspetmounts/ver14tover15/origv14dir1
$ zfsadm fileinfo -path /zfspetmounts/ver14tover15/origv14dir2
$ zfsadm fileinfo -path /zfspetmounts/ver14tover15
With zfsadm fileinfo all show as extended (v5) directories.
...
object genvalue
...
0x00000000
dir version
5
Convert an Aggregate and All Directories Using IOEFSUTL
We converted a version 1.4 aggregate to a version 1.5 aggregate, converting all
directories to extended (v5) directories using IOEFSUTL converttov5. This requires the
file system to be unmounted and executed on z/OS V2R1.
We needed to ensure that the version 1.4 file system was unmounted.
UNMOUNT FILESYSTEM('OMVSSPT.VER.CONVERT.ZFS') IMMED
We executed a batch job to run IOEFSUTL converttov5. Here are Excerpts from the
JCL.
…
//CONVERT EXEC PGM=IOEFSUTL,REGION=0M,
// PARM=('converttov5 -aggregate OMVSSPT.VER.CONVERT.ZFS')
…
Here is an example of the results.
IOEZ00559I zFS IOEFSUTL: Initializing z/OS
zFS
Version 02.01.00 Service Level z150127 - HZFS410.
Created on Fri Mar 1 10:21:13 EST 2013.
Address space asid x44
IOEZ00760I No IOEZPRM DD specified. Parmlib search being used.
IOEZ00810I Successfully changed aggregate OMVSSPT.VER.CONVERT.ZFS to
version 1.5.
IOEZ00800I Conversion has processed 7 of 7 objects in the anode table.
IOEZ00803I 4 directories were found, 4 converted, 4 directory pages
converted to 4 directory pages.
IOEZ00808I Successfully converted all directories in aggregate
OMVSSPT.VER.CONVERT.ZFS to version 5.
Note: aggrversion_only was not defined, so all directories were converted to extended
(v5) directories also.
We then mounted the file system and used zfsadm fileinfo and zfsadm aggrinfo with the
–long option to see if it was converted to a version 1.5 aggregate and all the directories
were converted to extended (v5) directories.
MOUNT FILESYSTEM('OMVSSPT.VER.CONVERT.ZFS') TYPE(ZFS)
MODE(RDWR) MOUNTPOINT('/pet')
$ zfsadm fileinfo -path /pet
path: /pet
***
global data
***
fid
1,1
length
8192
1K blocks
8
uid,gid
0,0
dir model acl
0,0
user audit
F,F,F
set sticky,uid,gid
1,0,0
object type
DIR
object genvalue
0x00000000
dir name count
5
dir tree status
VALID
file format bits
na,na,na
file cver
na
direct blocks
0x00001781
indirect blocks
none
mtime
Mar 18 13:47:07 2013
ctime
Mar 18 13:47:07 2013
reftime
none
anode
format
permissions
access acl
file model acl
auditor audit
seclabel
object linkcount
dir version
dir data version
dir conversion
file charset id
charspec major,minor
atime
create time
703,516
BLOCKED
356
0,0
0,0
N,N,N
none
5
5
3
na
na
na
Mar 18 13:48:07 2013
Mar 18 13:30:42 2013
$ zfsadm fileinfo -path /pet/origv4dir
path: /pet/origv4dir
***
global data
***
fid
2,1
anode
703,768
length
8192
format
BLOCKED
1K blocks
8
permissions
775
uid,gid
0,0
access acl
0,0
dir model acl
0,0
file model acl
0,0
user audit
F,F,F
auditor audit
N,N,N
set sticky,uid,gid
0,0,0
seclabel
none
object type
DIR
object linkcount
2
object genvalue
0x00000000
dir version
5
dir name count
2
dir data version
0
dir tree status
VALID
dir conversion
na
file format bits
na,na,na
file charset id
na
file cver
na
charspec major,minor
na
direct blocks
0x000018F9
indirect blocks
none
mtime
Mar 18 13:37:28 2013
atime
Mar 18 13:37:28 2013
ctime
Mar 18 13:37:28 2013
create time Mar 18 13:37:28 2013
reftime
none
$ zfsadm fileinfo -path /pet/dirfromz1when14
path: /pet/dirfromz1when14
***
global data
***
fid
4,1
anode
length
8192
format
1K blocks
8
permissions
uid,gid
0,0
access acl
dir model acl
0,0
file model acl
user audit
F,F,F
auditor audit
703,1272
BLOCKED
775
0,0
0,0
N,N,N
set sticky,uid,gid
0,0,0
object type
DIR
object genvalue
0x00000000
dir name count
3
dir tree status
VALID
file format bits
na,na,na
file cver
na
direct blocks
0x00001EDE
indirect blocks
none
mtime
Mar 18 13:47:29 2013
ctime
Mar 18 13:47:29 2013
reftime
none
seclabel
object linkcount
dir version
dir data version
dir conversion
file charset id
charspec major,minor
atime
create time
none
2
5
1
na
na
na
Mar 18 13:48:23 2013
Mar 18 13:47:07 2013
$ zfsadm aggrinfo -aggregate OMVSSPT.VER.CONVERT.ZFS -long
OMVSSPT.VER.CONVERT.ZFS (R/W COMP): 71175 K free out of total 72000
version 1.5
auditfid D7F2E4E2 F6F11C30 0000
sysplex-aware
8896 free 8k blocks;
7 free 1K fragments
720 K log file;
40 K filesystem table
16 K bitmap file
Convert a v4 Directory Using Copy (cp)
We mounted a version 1.4 aggregate, converted it to a version 1.5 aggregate, and then
used copy (cp) to create a copy of an existing v4 directory. It created the target directory
as an extended (v5) directory.
Note: The move (mv) command does not create a new directory if the target is in the
same parent directory and file system, thus the directory remains the same version. If the
target is in a different version 1.5 file system, and the directory is created as a result of
the move, the v4 directory will be converted to an extended (v5) directory.
We mounted a version 1.4 aggregate.
$ mount -t zfs -f OMVSSPN.ZFSFMT.ZFS /mnt1
Using zfsadm aggrinfo, we see it is a version 1.4 aggregate.
$ zfsadm aggrinfo -aggr OMVSSPN.ZFSFMT.ZFS -long
OMVSSPN.ZFSFMT.ZFS (R/W COMP): 559 K free out of total 720
version 1.4
auditfid E2E2F0F0 F1F70808 0000
sysplex-aware
69 free 8k blocks;
7 free 1K fragments
112 K log file;
16 K filesystem table
8 K bitmap file
Using the zfsadm convert command we converted the aggregate to a version 1.5
aggregate and verified with zfsadm aggrinfo –long and zfsadm fileinfo.
$ zfsadm convert -aggrversion OMVSSPN.ZFSFMT.ZFS
IOEZ00810I Successfully changed aggregate OMVSSPN.ZFSFMT.ZFS to version
1.5.
$ zfsadm aggrinfo -aggr OMVSSPN.ZFSFMT.ZFS -long
OMVSSPN.ZFSFMT.ZFS (R/W COMP): 551 K free out of total 720
version 1.5
auditfid E2E2F0F0 F1F70808 0000
sysplex-aware
68 free 8k blocks;
7 free 1K fragments
112 K log file;
16 K filesystem table
8 K bitmap file
Use zfsadm fileinfo to display the directory.
$ zfsadm fileinfo -path /mnt1/dir1
...
object genvalue
0x00000000
dir version
4
...
We tried to convert by using the move (mv) command for a directory in the same parent
directory and file system. However, this did not cause the directory to be converted to an
extended (v5) directory.
$ mv
/mnt1/dir1 /mnt1/dir2
$ zfsadm fileinfo -path /mnt1/dir2
...
object genvalue
0x00000000
dir version
4
...
We used copy (cp) to convert the target directory. This caused the target directory to be
converted to an extended (v5) directory.
$ cp -r
/mnt1/dir2 /mnt1/dir1
$ zfsadm fileinfo -path /mnt1/dir1
...
object genvalue
0x00000000
dir version
5
...
We converted by using the move (mv) command with the source being a v4 directory and
the target being a new directory in a different version 1.5 file system. This caused the
source v4 directory to be converted to an extended (v5) directory at the target location.
With /mnt1/dir1 as a v4 directory and using a target directory in another version 1.5 file
system that does not exist (/pet/dir1), we issued the following:
$ mv -r /mnt1/dir1 /pet3
$ zfsadm fileinfo -path /pet3/dir1
...
object genvalue
...
0x00000000
dir version
5