It's easy to incorporate your backups into a batch script.
With ever-growing business needs to have systems up 24/7, finding a window to do your nightly batch runs becomes increasingly hard, especially to take backups, which are crucial for any system. AIX provides various methods to do online backups for JFS2 file systems, like internal and external snapshots, backsnaps, and mirroring. A method that is also available for JFS file systems for online backups is the splitcopy command.
The splitcopy command works like this. You have a mirrored file system, and you then split the mirror of that file system. With this other copy, you're then able to take a backup of that split read-only copied file system; once the backup is completed, the split copy can then be disregarded.
All the above can be done with the system online. However a word of caution here: I find it best to quiesce the application residing on the file system before performing the splitcopy transition and restart after the splitcopy has completed. This ensures no activity on the file system as the splitcopy is invoked.
Let me now demonstrate how you can implement the splitcopy command.
Mirror It, Split It, Back It Up
Let's take an online backup of the file system /grids, which currently resides in the VG appsvg:
# lsvg -l appsvg
appsvg:
LV NAME TYPE LPs PPs PVs LV STATE MOUNT POINT
loglv01 jfslog 1 1 1 open/syncd N/A
lv00 jfs 2 2 1 open/syncd /grids
Notice in the above output none of the LVs (file systems) are mirrored. Also note that both are JFS, not JFS2. In that VG, we have two disks as shown below:
# lsvg -p appsvg
appsvg:
PV_NAME PV STATE TOTAL PPs FREE PPs FREE DISTRIBUTION
hdisk3 active 1092 441 04..00..00..218..219
hdisk2 active 270 270 54..54..54..54..54
The first task that needs to be carried out is to get /grids mirrored up so that we can use the splitcopy command. The file system /grids resides on the LV lv00; the log resides on loglv01. Those need to be mirrored using the commands mklvcopy to make the copy of the LVs and then syncvg to sync the mirroring up. The following commands achieve this:
# mklvcopy loglv01 2
# mklvcopy lv00 2
# syncvg -l loglv01
# syncvg -l lv00
Done! The below output shows the LVs are mirrored up. We can tell because the PP size is twice the number of the LP for each LV:
# lsvg -l appsvg
appsvg:
LV NAME TYPE LPs PPs PVs LV STATE MOUNT POINT
loglv01 jfslog 1 2 2 open/syncd N/A
lv00 jfs 2 4 2 open/syncd /grids
The above commands can all be carried out with the system online.
Now for the splitcopy. A common format for the splitcopy command is this:
chfs -a splitcopy =</backup_filesystem_name> </source_filesystem>
When using splitcopy, make sure you have enough free space in the VG for the copy to complete. The splitcopy attribute is actually part of the chfs (change file system) command. You can inform AIX which copy of the LV to use for the splitcopy, but for this demonstration, let's keep it simple and let AIX decide which copy to use. So let's now do the splitcopy with the file system /grids. The copy will be called /grids_bak. AIX will also take a copy of the log. That's why you need to have both the file system and its corresponding log mirrored first. When the splitcopy is executed, it will mount /grids_bak. This file system will be read-only, so any changes you make to /grids will not be reflected in /grids_bak when the splitcopy is executed:
# chfs -a splitcopy=/grids_bak /grids
lv00copy00
backup requested(0x100000)...
log redo processing for /dev/lv00copy00
syncpt record at 2028
end of log 2c08
syncpt record at 2028
syncpt address 2028
number of log records = 28
number of do blocks = 2
number of nodo blocks = 0
# df -m |grep grids
/dev/lv00 128.00 123.93 4% 21 1% /grids
/dev/lv00copy00 128.00 123.93 4% 21 1% /grids_bak
We can see from the above output that we now have the original and the backup (copied) file system mounted. At this point, a backup would be taken of /grids_bak. When the backup has completed, there's really no need to keep it, so you might as well remove /grids_bak. First though, be sure to unmount /grids_bak before attempting to remove it, like so:
# umount /grids_bak
# rmfs /grids_bak
rmlv: Logical volume lv00copy00 is removed.
We're done. That's how you take an online backup of a JFS file system. Easy, don't you think? The above commands to perform a splitcopy can quite easily be incorporated into a batch script.
LATEST COMMENTS
MC Press Online