用作文件容器的多個循環設備性能不佳
目前,我正在管理多個遠端伺服器的備份服務。備份是通過 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
orsqashfs
,因為我可以簡單地獲取文件大小來獲取磁碟使用情況,但沒有這些經驗。如果有更好的解決方案,有人有什麼想法嗎?
回答我自己的問題,也許對其他人有幫助。
我發現 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 的情況下寫入普通文件夾相同。