UNIX文件系统备份与管理技术详解
1. fscat命令与快照文件系统读取
在UNIX文件系统中,fscat命令基于VX_SNAPREAD ioctl实现,其作用是从文件系统中读取指定的块。在读取时,会参考快照文件系统上的位图,以此来决定是从被快照的文件系统还是从快照本身返回块。
以下是运行fscat命令时使用truss输出的示例:
13672: open64("/snap", O_RDONLY) = 3 ... 13672: ioctl(3, 0x56584680, 0xFFBEFCF4) = 5120 13672: write(1, "\fD5 , nD4F89E 0E6 xDF o".., 5120) = 5120 13672: ioctl(3, 0x56584680, 0xFFBEFCF4) = 5120 13672: write(1, "95DB .9A v04B4938C B 1F".., 5120) = 5120从上述输出可以看出,首先打开快照文件系统,接着执行一系列VX_SNAPREAD ioctl命令从快照中读取块,最后将读取的数据写入标准输出。
2. VxFS快照的实现原理
VxFS快照在磁盘上的布局有其特定方式。超级块是在创建快照时,对被快照文件系统超级块的一个复制,不过会有少量修改。
位图为被快照文件系统中的每个块分配