Ubuntu
備份期間如何限制磁碟 i/o?
我有一個 cron,它基本上在晚上做一個簡單的“tar zcf”。
伺服器有:
- 8 核 - Intel(R) Xeon(R) CPU E5606 @ 2.13GHz
- 25GB 記憶體
- Ubuntu 12.04.2 LTS
- 帶有兩個 2.728TB 硬碟的硬體 RAID 1(LSI Logic / Symbios Logic MegaRAID SAS SMC2108)
正如您在監控螢幕主機上看到的:
在 tar 的幾乎所有時間裡,磁碟 I/O 達到 >90%,並使所有其他應用程序(mysql、apache)變慢很多。
2個問題:
- 備份時磁碟 I/O 這麼高是否正常?
- 有沒有辦法限制磁碟 I/O 以便其他應用程序可以繼續正常工作?
謝謝!
除了相當通用的方法之外,
ionice
還有一個很好的設備映射器目標(ioband),它允許精確控制(DM)塊設備的頻寬。不幸的是,它不是標準核心的一部分。此外,您可能可以通過以下方式加速 tar
- 將文件名讀入磁碟記憶體:
find /source/path -printf ""
- 將 inode 讀入磁碟記憶體:
find /source/path -perm 777 -printf ""
- 通過例如使用帶有 mbuffer 或緩衝區的管道(至少 100 MiB 的 RAM)使 tar 從磁碟讀取和寫入更大的塊:
tar ... | mbuffer -m 256M -P 100 -p 1 ...