UNIX文件系统备份与快照技术详解
1. 引言
在UNIX系统中,文件系统备份和快照技术至关重要,它们能够帮助用户在数据丢失、系统故障等情况下快速恢复数据。本文将详细介绍VxFS快照、存储检查点、块级增量备份以及分层存储管理等相关技术。
2. VxFS快照的实现
2.1 fscat命令与快照读取
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.2 VxFS快照的磁盘布局
VxFS快照在磁盘上的布局如下:
-
超级块
:是创建快照时被快照文件系统超级块的副本,有少量修改。
-
位图
:为被快照文件系统的每个块包含一位,访问快照时用于确定从快照还是被快照文件系统读取块。
-
块映射
:也为被快照文件系统的每个块包含一个条目,块复制到快照时,位图和块映射会相应更新。
2.3 快照创建过程
创建快照的步骤如下:
1. 冻结文件系统,确保所有数据刷新到磁盘,并在冻结期间阻止后续访问。
2. 将快照的超级块、空的位图和块映射写入磁盘。
3. 将快照链接到被快照文件系统。
4. 解冻文件系统,允许后续访问。
3. 持久快照文件系统
3.1 非持久与持久快照的区别
之前讨论的VxFS和Solaris UFS等快照机制是非持久的,系统重启后快照失效。而持久快照在系统重启后仍保持一致,提供了更多灵活性。
3.2 VxFS存储检查点
VxFS存储检查点是一种持久快照机制,与VxFS快照有以下区别:
| 比较项 | VxFS快照 | VxFS存储检查点 |
| ---- | ---- | ---- |
| 存储位置 | 需要单独设备存储写时复制块 | 写时复制块与被快照/主文件系统在同一设备 |
| 读写权限 | 只读 | 可只读或读写 |
| 持久性 | 非持久,重启后失效 | 持久,重启后仍有效 |
| 存在时间 | 创建时挂载,仅在挂载期间存在 | 无论是否挂载都存在,需显式命令删除 |
| 块更改跟踪方式 | 设备级位图 | 按文件跟踪 |
4. 存储检查点的实现
4.1 基本原理
大多数快照机制在块级别工作,通过位图等跟踪机制确定从何处读取块。VxFS存储检查点与VxFS实现紧密相关,VxFS的可挂载实体是文件集,每个文件集有自己的inode列表。
4.2 检查点创建过程
创建检查点时会发生以下事件:
1. 创建新的文件集头条目并链接到克隆链中,主文件集指向新检查点,新检查点指向下一个最近的检查点,最旧检查点的下游指针为NULL。
2. 创建inode列表,新检查点中的每个inode除块映射外与主文件集的inode完全相同,创建时inode完全覆盖,读取数据需沿克隆链向上查找。
3. 修改内核中的文件集结构,将新文件集链接到克隆链中。
4.3 块更改跟踪
存储检查点在inode级别跟踪块更改。主文件集写入文件时,需检查数据是否已推送到下游文件集的inode,若未推送,需先推送覆盖写入的块。
4.4 检查点读取过程
从检查点文件读取时,在读取偏移处执行bmap操作确定从磁盘读取的块。若返回有效块号,将数据复制到用户缓冲区;若返回覆盖块,需沿克隆链向上读取。
5. 存储检查点的使用
5.1 创建文件系统和文件
# mkfs -F vxfs /dev/vx/rdsk/fs1 100m
version 4 layout
204800 sectors, 102400 blocks of size 1024, log size 1024 blocks
unlimited inodes, largefiles not supported
102400 data blocks, 101280 free data blocks
4 allocation units of 32768 blocks, 32768 data blocks
last allocation unit has 4096 data blocks
# mount -F vxfs /dev/vx/dsk/fs1 /fs1
# echo hello > /fs1/hello
# echo goodbye > /fs1/goodbye
# ls -l /fs1
5.2 创建检查点
# fsckptadm create ckpt1 /fs1
# rm /fs1/goodbye
# echo "hello again" > /fs1/hello
# fsckptadm create ckpt2 /fs1
5.3 列出检查点
# fsckptadm list /fs1
/fs1
ckpt2:
ctime = Sun Jun 9 11:06:55 2002
mtme
= Sun Jun 9 11:06:55 2002
flags = none
ckpt1:
ctime = Sun Jun 9 11:05:48 2002
mtime = Sun Jun 9 11:05:48 2002
flags = none
5.4 挂载检查点
# mkdir /ckpt1
# mkdir /ckpt2
# mount -F vxfs -ockpt=ckpt1 /dev/vx/dsk/fs1:ckpt1 /ckpt1
# mount -F vxfs -ockpt=ckpt2 /dev/vx/dsk/fs1:ckpt2 /ckpt2
5.5 查看目录内容
# ls -l /fs1
total 2
-rw-r--r-- 1 root other 12 Jun 9 11:06 hello
drwxr-xr-x 2 root root 96 Jun 9 11:04 lost+found
# ls -l /ckpt1
total 4
-rw-r--r-- 1 root other 8 Jun 9 11:05 goodbye
-rw-r--r-- 1 root other 6 Jun 9 11:05 hello
drwxr-xr-x 2 root root 96 Jun 9 11:04 lost+found
# ls -l /ckpt2
total 0
-rw-r--r-- 1 root other 12 Jun 9 11:06 hello
drwxr-xr-x 2 root root 96 Jun 9 11:04 lost+found
5.6 优化与处理
- 块推送优化 :主文件集删除文件且对应检查点inode完全覆盖时,可交换块映射,避免逐个推送块,同时保留文件几何结构。
- 碎片处理 :主文件集活动持续时,克隆inode可能出现碎片,可使用VxFS fsadm命令对检查点文件进行范围重组,减少碎片。
6. 可写存储检查点
通常冻结镜像用于备份,但在某些情况下,对冻结镜像进行写入操作有益。例如,在可写检查点上运行数据库决策支持应用,可在主数据库仍活跃时进行。VxFS存储检查点支持读写访问。
7. 块级增量备份
7.1 增量备份的必要性
从冻结镜像备份时,备份应用需备份自上次备份以来所有更改的文件。在大文件环境中,若文件中只有小部分块更改,会产生较大开销。通过只备份更改的块,可显著减少备份窗口。
7.2 增量备份与全量备份的关系
增量备份不能替代全量备份,但可避免每天进行全量备份。常见策略是每周进行一次全量备份,然后每天进行增量备份。恢复文件系统时,需先恢复全量备份,再恢复增量备份。
7.3 VxFS存储检查点实现增量备份
VxFS存储检查点可实现块级增量备份,有两种类型的检查点:
-
数据完整检查点
:主文件集文件中的块更改时,先将块复制到下游检查点的文件中。
-
无数据检查点
:主文件集文件更改时,修改下游检查点文件的块映射以指示更改区域,但不推送数据。
7.4 增量备份步骤
graph LR
classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
A([Day 1, Step 1: 创建数据完整检查点并进行全量备份]):::startend --> B([Day 1, Step 2: 将数据完整检查点转换为无数据检查点]):::process
B --> C([Day 2, Step 1: 创建新的数据完整检查点并进行增量备份]):::process
C --> D([Day 2, Step 2: 删除旧的无数据检查点,将新的数据完整检查点转换为无数据检查点]):::process
D --> E([后续重复步骤,直到进行新的全量备份]):::process
- 创建数据完整检查点并进行全量备份。
- 将数据完整检查点转换为无数据检查点。
- 一天中,主文件集文件的更改会在检查点中标记。
- 运行备份应用进行增量备份,确定每个文件中更改的块,从新的数据完整检查点读取并写入磁带。
- 完成增量备份后,删除旧的无数据检查点,将新的数据完整检查点转换为无数据检查点。
- 后续重复上述过程,直到进行新的全量备份。
8. 分层存储管理
8.1 基本概念
分层存储管理(HSM)是一种归档机制,可与备份软件结合使用,减少从文件系统到磁带的数据传输量。HSM应用根据策略将文件迁移到磁带或其他介质,用户访问迁移文件时,数据会从磁带迁移回磁盘。
8.2 DMAPI接口
数据管理接口组(DMIG)提出的DMAPI提供了一组API,方便操作系统和文件系统开发者实现HSM功能,主要特性如下:
-
文件打孔
:释放文件数据块,但不改变文件大小。
-
隐形读写调用
:避免因HSM活动导致备份或其他应用看到时间戳变化。
-
扩展属性支持
:文件数据块迁移时,通过扩展属性记录迁移信息。
-
文件事件监控
:文件数据迁移后用户访问,可向HSM应用发送事件,以便迁移数据并进行隐形写入。
8.3 HSM与备份软件协作
HSM应用本身不备份文件系统,但某些文件系统可能已有大量数据在磁带上。备份应用运行时,VERITAS NetBackup和Storage Migrator等产品可跳过已迁移到磁带的数据块,避免重复备份。
综上所述,UNIX系统中的文件系统备份和快照技术为数据保护和管理提供了多种手段,用户可根据实际需求选择合适的方法。这些技术在提高数据安全性和减少备份时间方面发挥着重要作用。
9. 技术对比与总结
9.1 不同备份与快照技术对比
| 技术类型 | 存储位置 | 读写权限 | 持久性 | 块更改跟踪 | 适用场景 |
|---|---|---|---|---|---|
| VxFS快照 | 需要单独设备 | 只读 | 非持久,重启失效 | 设备级位图 | 临时查看文件系统状态,快速获取某一时刻的文件系统副本 |
| VxFS存储检查点 | 与主文件系统同一设备 | 可读写 | 持久,重启有效 | 按文件跟踪 | 长期保存文件系统状态,支持读写操作,适用于数据库等需要频繁修改数据的场景 |
| 块级增量备份 | 结合存储检查点 | 依赖存储检查点 | 依赖存储检查点 | 基于存储检查点类型 | 大文件环境,减少备份时间和数据量 |
| 分层存储管理 | 磁带或其他介质 | 透明读写 | 持久 | 基于策略和DMAPI | 释放磁盘空间,长期归档数据 |
9.2 技术总结
这些技术各有优缺点和适用场景。VxFS快照适合快速创建临时副本,但缺乏持久性;VxFS存储检查点提供了持久且灵活的快照功能,支持读写操作;块级增量备份在大文件环境中能显著提高备份效率;分层存储管理则有助于优化存储资源,将不常用数据迁移到磁带等低成本介质上。用户应根据实际需求,如数据重要性、备份频率、存储成本等因素,综合选择合适的技术组合。
10. 操作注意事项
10.1 VxFS快照操作注意
- 设备要求 :确保有足够的单独设备空间用于存储快照数据,否则可能导致快照创建失败。
- 系统重启影响 :由于VxFS快照是非持久的,系统重启后快照将失效,因此在需要长期保存快照时,应考虑使用存储检查点。
10.2 VxFS存储检查点操作注意
- 文件系统状态 :创建检查点时,文件系统必须处于挂载状态,否则无法创建。
- 删除操作 :删除检查点需要使用显式命令,避免误删重要检查点。
- 碎片处理 :定期使用VxFS fsadm命令进行范围重组,减少克隆inode中的碎片。
10.3 块级增量备份操作注意
- 全量备份基础 :增量备份依赖于全量备份,必须先进行全量备份,后续才能进行增量备份和恢复操作。
- 检查点转换 :正确进行数据完整检查点和无数据检查点的转换,确保备份流程的顺利进行。
10.4 分层存储管理操作注意
- 策略设置 :合理设置文件迁移策略,如文件系统使用率和文件年龄等参数,避免过度迁移或迁移不足。
- DMAPI实现 :操作系统和文件系统开发者应正确实现DMAPI接口,确保HSM应用的正常运行。
11. 常见问题与解决方案
11.1 VxFS快照相关问题
- 问题 :快照创建失败。
- 解决方案 :检查单独设备的可用空间,确保有足够的空间存储快照数据;检查文件系统状态,确保其处于正常可操作状态。
11.2 VxFS存储检查点相关问题
- 问题 :检查点无法挂载。
- 解决方案 :检查挂载命令的参数是否正确,特别是设备名称和检查点名称;检查文件系统是否损坏,可使用文件系统检查工具进行修复。
- 问题 :检查点数据不一致。
- 解决方案 :检查主文件系统的写入操作,确保数据推送正常;使用文件系统验证工具检查数据的一致性。
11.3 块级增量备份相关问题
- 问题 :增量备份数据不完整。
- 解决方案 :检查数据完整检查点和无数据检查点的转换是否正确;检查备份应用程序的配置,确保其能正确识别和备份更改的块。
- 问题 :备份恢复失败。
- 解决方案 :先确保全量备份已成功恢复,再按顺序恢复增量备份;检查备份数据的完整性,可使用校验和等方法验证。
11.4 分层存储管理相关问题
- 问题 :文件迁移失败。
- 解决方案 :检查磁带或其他存储介质的状态,确保其正常可用;检查迁移策略的设置是否合理,是否符合实际需求。
- 问题 :用户访问迁移文件时数据未及时恢复。
- 解决方案 :检查HSM应用的事件监控和数据恢复机制是否正常;检查DMAPI接口的实现是否正确,确保能及时触发数据恢复操作。
12. 未来发展趋势
12.1 技术融合
未来,这些备份和快照技术可能会进一步融合,形成更加统一和高效的数据保护解决方案。例如,将块级增量备份和分层存储管理结合,实现更智能的数据存储和备份策略,根据数据的使用频率和重要性自动进行备份和迁移。
12.2 自动化与智能化
随着人工智能和机器学习技术的发展,备份和快照过程将更加自动化和智能化。系统可以自动分析数据变化模式,预测备份需求,自动调整备份策略,减少人工干预,提高备份效率和准确性。
12.3 云存储集成
云存储的普及将促使这些技术与云存储进一步集成。用户可以将备份数据存储到云端,实现异地容灾和数据共享。同时,云服务提供商也可以利用这些技术为用户提供更便捷的备份和恢复服务。
12.4 安全性增强
随着数据安全问题日益重要,未来的备份和快照技术将更加注重安全性。采用更先进的加密算法保护备份数据,防止数据泄露和恶意攻击;同时,加强对备份过程的审计和监控,确保数据的合规性和完整性。
总之,UNIX文件系统备份与快照技术在不断发展和演进,为用户提供更强大、更灵活的数据保护和管理能力。在未来的应用中,用户应密切关注技术发展趋势,结合自身需求,合理选择和应用这些技术,确保数据的安全和可靠。
超级会员免费看
2

被折叠的 条评论
为什么被折叠?



