Disk-Usage

virtfs 的高磁碟使用率

  • September 16, 2015

我試圖弄清楚**(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。

所以,我的問題:

  1. 如何確定實際使用了多少空間?
  2. 如果我向伺服器添加另一個(例如 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 大小略有不同,這只是因為它們在執行時對文件系統的更改。)

這就是告訴我的:

  1. 我的總使用量實際上是 27 GB,
  2. /home/virtfs``du由於過多計算系統文件等,使報告比實際存在的多 42 GB,
  3. 我的磁碟上有很多我並不真正需要的備份。是時候搬遷這些了。

我希望有人覺得這很有幫助。如果您有任何問題,請在評論中提出。

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,所以你應該沒問題。

引用自:https://unix.stackexchange.com/questions/229850