Debian

用作文件容器的多個循環設備性能不佳

  • November 21, 2021

目前,我正在管理多個遠端伺服器的備份服務。備份是通過 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-fsor sqashfs,因為我可以簡單地獲取文件大小來獲取磁碟使用情況,但沒有這些經驗。

如果有更好的解決方案,有人有什麼想法嗎?

回答我自己的問題,也許對其他人有幫助。

我發現 xfs 具有xfs_quota實用程序,您可以在其中設置監視任何給定文件夾的磁碟使用情況的項目。

首先,必須(重新)安裝 xfs 分區並prjquota啟用標誌: mount -o prjquota /dev/vdb1 /mnt/backups. 或者,可以添加此標誌/etc/fstab以確保它在重新啟動時正確安裝。

然後,我們設置項目:

echo "srv1:50" > /etc/projid
echo "50:/mnt/backups/srv1" > /etc/projects

mkdir /mnt/backups/srv1
xfs_quota -x -c 'project -s srv1' /mnt/backups
xfs_quota -x -c 'limit -p bsoft=100G bhard=110G srv1' /mnt/backups

這將設置項目 ‘srv1’ 和 id ‘50’,創建/mnt/backup/srv項目所在的位置,並為其提供軟限制“100G”和硬限制“110G”。從現在開始,xfs 將監視添加到此文件夾的所有文件並測量使用情況。

要查看使用情況,請使用:

xfs_quota -x -c report
xfs_quota -x -c 'report -h'

讀/寫速度看起來與在沒有設置 xfs_quota 的情況下寫入普通文件夾相同。

引用自:https://serverfault.com/questions/1083963