virtfs 的高磁碟使用率
我試圖弄清楚**(1)我的伺服器上使用了多少實際空間以及(2)如果我使用更多空間會發生什麼**。我最初在 ServerFault 上發布了這個問題的一個版本,但他們把我踢到了這裡。
背景:我正在執行一個使用 virtfs 的伺服器(感謝 cPanel),與每個使用者實際上傳/創建的數據量相比,我發現磁碟使用率非常高。我收到警告電子郵件,告訴我我正在使用幾乎所有可用空間。
以下是 的輸出
df -h /
:Filesystem Size Used Avail Use% Mounted on /dev/simfs 30G 25G 5.9G 81% /
我跑來
du -h / | grep "[0-9][MG]" | sort -n -r
生成使用最多空間的路徑列表。這是輸出:68G / 44G /home 43G /home/virtfs 11G /home/virtfs/john 11G /home/virtfs/paul 11G /home/virtfs/george 11G /home/virtfs/ringo 11G /backup 5.3G /usr 5.3G /home/virtfs/john/usr 5.3G /home/virtfs/paul/usr 5.3G /home/virtfs/george/usr 5.3G /home/virtfs/ringo/usr 5.2G /var 5.2G /home/virtfs/john/var 5.2G /home/virtfs/paul/var 5.2G /home/virtfs/george/var 5.2G /home/virtfs/ringo/var 4.6G /var/lib 4.6G /home/virtfs/john/var/lib 4.6G /home/virtfs/paul/var/lib 4.6G /home/virtfs/george/var/lib 4.6G /home/virtfs/ringo/var/lib 4.3G /home/virtfs/paul/usr/local 4.2G /usr/local 4.2G /home/virtfs/john/usr/local 4.2G /home/virtfs/george/usr/local 4.2G /home/virtfs/ringo/usr/local 3.8G /usr/local/cpanel 3.8G /home/virtfs/john/usr/local/cpanel 3.8G /home/virtfs/paul/usr/local/cpanel 3.8G /home/virtfs/george/usr/local/cpanel 3.8G /home/virtfs/ringo/usr/local/cpanel 3.0G /var/lib/mysql.orig 3.0G /home/virtfs/john/var/lib/mysql.orig 3.0G /home/virtfs/paul/var/lib/mysql.orig 3.0G /home/virtfs/george/var/lib/mysql.orig 3.0G /home/virtfs/ringo/var/lib/mysql.orig 2.6G /backup/weekly 2.2G /backup/cpbackup 2.1G /var/lib/mysql.orig/ringo_demo 2.1G /home/virtfs/john/var/lib/mysql.orig/ringo_demo 2.1G /home/virtfs/paul/var/lib/mysql.orig/ringo_demo 2.1G /home/virtfs/george/var/lib/mysql.orig/ringo_demo 2.1G /home/virtfs/ringo/var/lib/mysql.orig/ringo_demo 1.9G /cpanel_backups 1.7G /backup/monthly 1.6G /var/lib/mysql 1.6G /home/virtfs/john/var/lib/mysql 1.6G /home/virtfs/paul/var/lib/mysql 1.6G /home/virtfs/george/var/lib/mysql 1.6G /home/virtfs/ringo/var/lib/mysql 1.2G /usr/local/cpanel/bin 1.2G /home/virtfs/john/usr/local/cpanel/bin 1.2G /home/virtfs/paul/usr/local/cpanel/bin 1.2G /home/virtfs/george/usr/local/cpanel/bin 1.2G /home/virtfs/ringo/usr/local/cpanel/bin 1.1G /root
(不,我的使用者實際上並不都是以披頭士樂隊命名的……)看起來幾乎所有的磁碟使用都是由於 virtfs 冗餘,例如對系統文件的冗餘引用,如
/usr/local/cpanel/...
.我的使用者中沒有一個實際使用的空間與報告的一樣多。例如,它們都沒有單獨使用上面報告的完整 1.6 GB 的
/var/lib/mysql
. 當我在 Web 界面中查看 cPanel 自己的報告時,我看到這些帳戶的磁碟使用範圍從基本上為零到不超過 237 MB:遠不及報告的 11 GB。所以,我的問題:
- 如何確定實際使用了多少空間?
- 如果我向伺服器添加另一個(例如 10 GB)數據會發生什麼?
df
它會因為認為我使用了 30 GB 中的 35 GB而導致某種崩潰嗎?還是因為我仍然使用不到 30 GB,所以一切正常?*請注意:這個問題與 cPanel**無關;*它是關於 virtfs 以及我可以使用哪些工具來確定我的可用磁碟空間。
我找到了我的答案。事實上,我幾乎使用了我伺服器的所有空間,部分原因是備份的磁碟儲存過多。這很容易解決。
對於那些遇到同樣問題的人:這裡是你如何知道你正在使用多少磁碟空間的方法。
首先,
df
將為您提供有關文件系統使用空間的準確資訊;我的 cPanel 版本(11.50)實際上並沒有打破這一點。這意味著我收到的關於我的磁碟使用情況的電子郵件是準確的。截至今天,df
給了我:Filesystem 1K-blocks Used Available Use% Mounted on /dev/simfs 31457280 27281568 4175712 87% / none 3145728 4 3145724 1% /dev
我調查這些數字的來源的方法是執行兩個命令:
# get the per-directory usage for / du --max-depth=1 / 2>> /dev/null # get the per-directory usage for /home du --max-depth=1 /home 2>> /dev/null
這些命令產生大量輸出,其中只有幾行是相關的:
$ du --max-depth=1 / 2>> /dev/null ... 44294300 /home ... 13223520 /backup 70300192 / $ du --max-depth=1 /home 2>> /dev/null 227176 /home/george ... 43093568 /home/virtfs ... 44294844 /home
(這些命令之間的 /home 大小略有不同,這只是因為它們在執行時對文件系統的更改。)
這就是告訴我的:
- 我的總使用量實際上是 27 GB,
/home/virtfs``du
由於過多計算系統文件等,使報告比實際存在的多 42 GB,- 我的磁碟上有很多我並不真正需要的備份。是時候搬遷這些了。
我希望有人覺得這很有幫助。如果您有任何問題,請在評論中提出。
VirtFS 佔用的空間可能是由於孤立的 VirtFS 掛載。
您可以使用以下命令解除安裝任何綁定安裝的目錄:
for i in `cat /proc/mounts | awk '/virtfs/ {print $2}'`; do umount $i;done
或者,由於您使用的是 cPanel,您可以使用他們的腳本來執行此操作:
/scripts/clear_orphaned_virtfs_mounts --clearall
在此之後嘗試
df -h
。在這裡閱讀更多關於 cPanel 的 VirtFS 和 Jailed Shell 實現的資訊可能是值得的。
至於你的第二個問題,如果你添加更多空間,它不應該自動掛載到 VirtFS,所以你應該沒問題。