目前,我正在管理多个远程服务器的备份服务。备份是通过 rsync 写入的,每个备份都有自己的文件容器作为循环设备安装。主备份分区是 8T xfs 格式,环路设备在 100G 和 600G 之间,采用 ext2 或 ext4 格式。所以,这是简化的类似俄罗斯套娃的解决方案:
df -Th
> /dev/vdb1 xfs 8,0T /mnt/backups
> /dev/loop1 ext2 100G /mnt/srv1
> /dev/loop2 ext2 200G /mnt/srv2
mount
> /dev/vdb1 on /mnt/backups
> /mnt/backups/srv1.ext2 on /mnt/srv1
> /mnt/backups/srv2.ext2 on /mnt/srv2
ls -R /mnt/backups
> /mnt/backups
> └─/mnt/backups/srv1.ext2
> └─/mnt/backups/srv2.ext2
主要问题是读/写速度,它们非常慢。此外,有时一切都会挂起并吃掉我所有的 cpu 和 ram。我可以看到循环设备导致了这种情况。
最近,我开始将容器从 ext4 切换到 ext2,因为我认为我真的不需要日志,希望它能提高速度。我也一直在从稀疏文件切换到非稀疏文件,希望它会降低 cpu/ram 的使用率。但问题仍然存在,有时会导致系统无响应。
因此,我正在寻找具有更快读/写速度的更好解决方案。此外,快速查看每个配置文件使用的磁盘空间也很重要(我df
现在可以简单地使用,du
会太慢)。从安全的角度来看,循环设备提供的分离很好,但也可以使用 rsync over ssh 来解决,因此不是必需的。
我一直在考虑缩小主 xfs 分区并使文件容器成为真正的 ext4 分区,但是当需要调整第一个分区的大小时,这会带来大量的停机时间。我一直在考虑使用virt-make-fs
or sqashfs
,因为我可以简单地获取文件大小来获取磁盘使用情况,但没有这些经验。
如果有更好的解决方案,有人有什么想法吗?