A nodata Storage Checkpoint does not contain actual file data. Instead, this type of Storage Checkpoint contains a collection of markers indicating the location of all the changed blocks since the Storage Checkpoint was created.
See Types of Storage Checkpoints.
You can use either the synchronous or asynchronous method to convert a data Storage Checkpoint to a nodata Storage Checkpoint; the asynchronous method is the default method. In a synchronous conversion, fsckptadm
waits for all files to undergo the conversion process to "nodata" status before completing the operation. In an asynchronous conversion, fsckptadm
returns immediately and marks the Storage Checkpoint as a nodata Storage Checkpoint even though the Storage Checkpoint's data blocks are not immediately returned to the pool of free blocks in the file system. The Storage Checkpoint deallocates all of its file data blocks in the background and eventually returns them to the pool of free blocks in the file system.
If all of the older Storage Checkpoints in a file system are nodata Storage Checkpoints, use the synchronous method to convert a data Storage Checkpoint to a nodata Storage Checkpoint. If an older data Storage Checkpoint exists in the file system, use the asynchronous method to mark the Storage Checkpoint you want to convert for a delayed conversion. In this case, the actual conversion will continue to be delayed until the Storage Checkpoint becomes the oldest Storage Checkpoint in the file system, or all of the older Storage Checkpoints have been converted to nodata Storage Checkpoints.
Note You cannot convert a nodata Storage Checkpoint to a data Storage Checkpoint because a nodata Storage Checkpoint only keeps track of the location of block changes and does not save the content of file data blocks.
The following example shows the difference between data Storage Checkpoints and nodata Storage Checkpoints.
Note
A nodata Storage Checkpoint does not contain actual file data.
See Converting a data Storage Checkpoint to a nodata Storage Checkpoint.
To show the difference between Storage Checkpoints
# mkfs -F vxfs /dev/vx/rdsk/dg1/test0
version 7 layout
134217728 sectors, 67108864 blocks of size 1024, log \
size 65536 blocks, largefiles supported
# mkfs -F /dev/vx/rdsk/dg1/test0 /mnt0
# echo "hello, world" > /mnt0/file
# fsckptadm create ckpt@5_30pm /mnt0
# mkdir /mnt0@5_30pm
# mount -F vxfs -o ckpt=ckpt@5_30pm
\ /dev/vx/dsk/dg1/test0:ckpt@5_30pm
/mnt0@5_30pm
# cat /mnt0/file
hello, world
# cat /mnt0@5_30pm/file
hello, world
# cat /mnt0/file
goodbye
# cat /mnt0@5_30pm/file
hello, world
# umount /mnt0@5_30pm
# fsckptadm -s set nodata ckpt@5_30pm /mnt0
# mount
-F vxfs
-o
ckpt=ckpt@5_30pm
\ /dev/vx/dsk/dg1/test0:ckpt@5_30pm /mnt0@5_30pm
You can traverse and read the directories of the nodata Storage Checkpoint; however, the files contain no data, only markers to indicate which block of the file has been changed since the Storage Checkpoint was created:
# ls -l /mnt0@5_30pm/file
-rw-r--r-- 1 root other 13 Jul 13 17:13 \
mnt0@5_30pm/file
# cat /mnt0@5_30pm/file
cat: input error on /mnt0@5_30pm/file: I/O error
You can convert Storage Checkpoints to nodata Storage Checkpoints, when dealing with older Storage Checkpoints on the same file system.
To convert multiple Storage Checkpoints
# mkfs -F vxfs /dev/vx/rdsk/dg1/test0
version 7 layout
13417728 sectors, 67108864 blocks of size 1024, log \
size 65536 blocks largefiles supported
# mount -F vxfs /dev/vx/dsk/dg1/test0 /mnt0
# fsckptadm create oldest /mnt0
# fsckptadm create older /mnt0
# fsckptadm create old /mnt0
# fsckptadm create latest /mnt0
# fsckptadm list /mnt0
/mnt0
latest:
ctime = Mon 26 Jul 11:56:55 2004
mtime = Mon 26 Jul 11:56:55 2004
flags = largefiles
old:
ctime = Mon 26 Jul 11:56:51 2004
mtime = Mon 26 Jul 11:56:51 2004
flags = largefiles
older:
ctime = Mon 26 Jul 11:56:46 2004
mtime = Mon 26 Jul 11:56:46 2004
flags = largefiles
oldest:
ctime = Mon 26 Jul 11:56:41 2004
mtime = Mon 26 Jul 11:56:41 2004
flags = largefiles
# fsckptadm -s set nodata latest /mnt0
UX:vxfs fsckptadm: ERROR: V-3-24632: Storage Checkpoint
set failed on latest
. File exists (17)
# fsckptadm set nodata latest /mnt0
# fsckptadm list /mnt0
/mnt0
latest:
ctime = Mon 26 Jul 11:56:55 2004
mtime = Mon 26 Jul 11:56:55 2004
flags = nodata, largefiles, delayed
old:
ctime = Mon 26 Jul 11:56:51 2004
mtime = Mon 26 Jul 11:56:51 2004
flags = largefiles
older:
ctime = Mon 26 Jul 11:56:46 2004
mtime = Mon 26 Jul 11:56:46 2004
flags = largefiles
oldest:
ctime = Mon 26 Jul 11:56:41 2004
mtime = Mon 26 Jul 11:56:41 2004
flags = largefiles
Creating a delayed nodata Storage Checkpoint
You can combine the three previous steps and create the "latest" Storage Checkpoint as a nodata Storage Checkpoint. The creation process will detect the presence of the older data Storage Checkpoints and create the "latest" Storage Checkpoint as a delayed nodata Storage Checkpoint as follows:
# fsckptadm remove latest /mnt0
# fsckptadm list /mnt0
/mnt0
old:
ctime = Mon 26 Jul 11:56:51 2004
mtime = Mon 26 Jul 11:56:51 2004
flags = largefiles
older:
ctime = Mon 26 Jul 11:56:46 2004
mtime = Mon 26 Jul 11:56:46 2004
flags = largefiles
oldest:
ctime = Mon 26 Jul 11:56:41 2004
mtime = Mon 26 Jul 11:56:41 2004
flags = largefiles
# fsckptadm -n create latest /mnt0
ctime = Mon 26 Jul 12:06:42 2004
mtime = Mon 26 Jul 12:06:42 2004
flags = nodata, largefiles, delayed
ctime = Mon 26 Jul 11:56:51 2004
mtime = Mon 26 Jul 11:56:51 2004
ctime = Mon 26 Jul 11:56:46 2004
mtime = Mon 26 Jul 11:56:46 2004
ctime = Mon 26 Jul 11:56:41 2004
mtime = Mon 26 Jul 11:56:41 2004
Note This step can be done synchronously.
# fsckptadm -s set nodata oldest /mnt0
# fsckptadm list /mnt0
/mnt0
latest:
ctime = Mon 26 Jul 12:06:42 2004
mtime = Mon 26 Jul 12:06:42 2004
flags = nodata, largefiles, delayed
old:
ctime = Mon 26 Jul 11:56:51 2004
mtime = Mon 26 Jul 11:56:51 2004
flags = largefiles
older:
ctime = Mon 26 Jul 11:56:46 2004
mtime = Mon 26 Jul 11:56:46 2004
flags = largefiles
oldest:
ctime = Mon 26 Jul 11:56:41 2004
mtime = Mon 26 Jul 11:56:41 2004
flags = nodata, largefiles
# fsckptadm remove older /mnt0
# fsckptadm remove old /mnt0
# fsckptadm list /mnt0
/mnt0
latest:
ctime = Mon 26 Jul 12:06:42 2004
mtime = Mon 26 Jul 12:06:42 2004
flags = nodata, largefiles
oldest:
ctime = Mon 26 Jul 11:56:41 2004
mtime = Mon 26 Jul 11:56:41 2004
flags = nodata, largefiles
Note After you remove the "older" and "old" Storage Checkpoints, the "latest" Storage Checkpoint is automatically converted to a nodata Storage Checkpoint because the only remaining older Storage Checkpoint ("oldest") is already a nodata Storage Checkpoint: