2017 年五月初 WannaCry 勒索病毒的爆发让我意识到了部署存储快照的重要性,特别是在提供存储服务的服务器上。
在 Linux 操作系统上,有多种实现存储快照的方案,如使用 LVM、ZFS 存储池、Btrfs 文件系统等。
Btrfs 文件系统具有透明压缩、软 RAID、快照等诸多实用功能,而且配置和管理起来比其他文件系统都要简单不少。
所以,Btrfs 目前是我心目中最完美的仓库盘专用文件系统!
注意
Btrfs 的 I/O 性能相比其他文件系统还是要逊色不少的。如果磁盘需要大量且频繁的 I/O 操作,建议选择其他文件系统。
snapper 是一款快照管理实用工具,支持多种文件系统,当然也包括 Btrfs。
相比 Btrfs 自带的快照管理工具,snapper 可以更方便、直观地对快照进行管理、比较,而且还有定时创建快照的功能。
二、实验环境 三、准备工作 3.1 安装 snapper 快照管理实用工具 yum -y install snapper 3.2 把磁盘格式化成 Btrfs 格式 mkfs.btrfs -f /dev/nvme0n1 3.3 挂载磁盘 mount /dev/nvme0n1 /mnt/btrfs注意
在进行下列操作时,请保持磁盘处于挂载状态!
四、配置 snapper在 Btrfs 中,snapper 是以子卷为单位管理快照的。我们要先为子卷建立配置文件才能管理快照。
这里我们不另外划分子卷,直接以 Btrfs 挂载点的根目录来进行操作(根目录也算是一个子卷)。
4.1 创建配置文件命令基本用法
snapper -c <配置名称> create-config <子卷路径>用法举例
创建 /mnt/btrfs/ 的快照配置文件。
snapper -c snap_test create-config /mnt/btrfs/ 4.2 删除配置文件命令基本用法
snapper -c <配置名称> delete-config 4.3 列出现有配置文件命令基本用法
snapper list-configs 五、快照的管理 5.1 拍摄一个快照 5.1.1 拍摄一个普通快照命令基本用法
snapper -c <配置名称> create [选项] 选项功能-p 打印快照的编号
-c <number|timeline> 指定清理算法(后面 6.2 和 6.3 会详细解释)
--description=<描述> 为快照添加描述
用法举例
在 /mnt/btrfs/ 上拍摄一个快照,描述信息为 kuaizhao1,并打印其编号。
snapper -c snap_test create --description=kuaizhao1 -p执行结果
1 5.1.2 拍摄一对快照快照对中包含了 pre 快照和 post 两种类型的快照。
一个 pre 快照需要对应一个 post 快照。
一般在进行文件系统操作之前拍摄一个 pre 快照,在操作完成后再拍摄一个 post 快照。
快照对其实跟普通快照并没有什么本质上的区别,只是做个标记便于识别和管理而已。
命令基本用法
拍摄 pre 快照
snapper -c <配置名称> create -t pre [选项]拍摄 post 快照
snapper -c <配置名称> create -t post --pre-number=<pre 快照编号> [选项] 选项功能-p 打印快照的编号
-c empty-pre-post 指定清理算法(后面 6.2 和 6.3 会详细解释)
--description=<描述> 为快照添加描述
说明
快照编号可通过执行 5.2 的命令来查看,下同。
5.2 列出所有快照命令基本用法
snapper -c <配置名称> list用法举例
列出 /mnt/btrfs/ 中的所有快照。
snapper -c snap_test list执行结果
# 前期:指快照对中 post 快照所对应的 pre 快照名 # 清空:指清理算法 类型 | # | 前期 # | 日期 | 用户 | 清空 | 描述 | 用户数据 -------+---+--------+------------------------------------+------+----------+-----------+--------- single | 0 | | | root | | current | single | 1 | | 2017年10月29日 星期日 13时23分48秒 | root | | kuaizhao1 |说明
0 号快照并不是真正的快照,它表示当前文件系统的状态。
5.3 删除快照