rsnapshot 专用驱动器的最佳文件系统类型和挂载选项

rsnapshot 专用驱动器的最佳文件系统类型和挂载选项

我们有一个外部 USB 2 驱动器,我们将其用作配置的备份驱动器。我们使用快照用于备份。它使用一些标准命令来管理快照:

  1. rm -rf:删除过期的快照
  2. mv:将较旧的快照向下移动一个位置
  3. cp -al:将最后一个快照复制到新插槽
  4. rsync -a --delete --numeric-ids --relative:同步新快照

从下面的日志可以看出,大部分时间都花在了以下rm -rf步骤上cp -al

[25/Dec/2010:14:00:02] rsnapshot hourly: started
[25/Dec/2010:14:00:02] echo 21012 > /var/run/rsnapshot.pid
[25/Dec/2010:14:00:02] rm -rf /mnt/extdrive/snapshots/hourly.5/
[25/Dec/2010:14:15:48] mv /mnt/extdrive/snapshots/hourly.4/ /mnt/extdrive/snapshots/hourly.5/
[25/Dec/2010:14:15:48] mv /mnt/extdrive/snapshots/hourly.3/ /mnt/extdrive/snapshots/hourly.4/
[25/Dec/2010:14:15:48] mv /mnt/extdrive/snapshots/hourly.2/ /mnt/extdrive/snapshots/hourly.3/
[25/Dec/2010:14:15:48] mv /mnt/extdrive/snapshots/hourly.1/ /mnt/extdrive/snapshots/hourly.2/
[25/Dec/2010:14:15:48] cp -al /mnt/extdrive/snapshots/hourly.0 /mnt/extdrive/snapshots/hourly.1
[25/Dec/2010:14:23:32] rsync -a --delete --numeric-ids --relative /etc /mnt/extdrive/snapshots/hourly.0/sm4/
[25/Dec/2010:14:23:52] touch /mnt/extdrive/snapshots/hourly.0/
[25/Dec/2010:14:23:52] rm -f /var/run/rsnapshot.pid
[25/Dec/2010:14:23:52] rsnapshot hourly: completed successfully

我的问题:

  1. 我目前使用 ext4 作为文件系统。也许这不是 Red Hat 中最好的选择。有人有什么建议可以加快这个过程吗?

  2. 分区的挂载选项是sync,dirsync 1 2。由于它仅用于 rsnapshot,有没有办法优化它?当然,如果能给出理由就更好了。

答案1

  1. ext4 很好。

  2. “sync,dirsync”选项使数据和元数据更新同步,这对大多数工作负载的性能有重大负面影响。删除这些选项很可能会提高性能,但您必须记住在拔出电缆之前卸载设备,否则您可能会丢失数据(可能这就是为什么首先添加这些选项的原因,它们不是默认选项,或者可能是您的发行版对 USB 设备施展的某种特殊魔法)。

  3. noatime 禁用 atime 更新,从而减少对文件系统的写入量。包括 rsnapshot 在内的所有应用程序几乎都不需要 atimes,因此这应该是绝对安全的。

  4. data=writeback 减少了日志记录的开销,但代价是稍微增加了断电时丢失数据的可能性。根据发行版的不同,这可能已经是默认设置。

  5. 使用 ext4 也可以完全禁用日志(从内核 2.6.29 开始),尽管我不推荐这样做。它仍然具有 ext4 的所有其他改进,因此这应该比使用 ext2 更快,仅供参考。

  6. barrier=0 禁用屏障,这可以提高写入的性能,但代价是增加了崩溃时数据丢失的可能性。

答案2

您可以配置 rsnapshot 以保留更多快照(例如 9999 个),然后使用 crontab 自行从磁盘中删除它们。这将使 rnapshot 的速度更加可预测。

答案3

还要注意,使用--link-dest也会改变完成的计划cp,这会显著影响性能(它基本上只是rm然后hourly.$old使用来同时从源rsync进行复制和同步)。hourly.1hourly.0

关于这里有替代技术- 基本上是将最后一个每小时快照旋转到新的快照中,mv hourly.$old hourly.0而不是rm-ing 它,然后执行cp -aflfrom hourly.1ontohourly.0以使其保持最新状态,但我还没有尝试过 - 你必须手动进行旋转,而不是依靠rsnapshot它来做

相关内容