Filesystems

釋放掛載後無法訪問的分區上的未使用空間

  • November 9, 2014

最初我有一個 50GB 的磁碟,根 / 被安裝到它上面的 6 GB 分區。該分區的空間不足,因此我使用剩餘的可用空間(44 GB)創建了第二個分區。這是它最初的樣子

NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  50G  0 disk
└─xvda1 202:1    0   6G  0 part /

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1      6.0G  6.0G   20K 100% /
devtmpfs         30G     0   30G   0% /dev
tmpfs            30G     0   30G   0% /dev/shm
tmpfs            30G  121M   30G   1% /run
tmpfs            30G     0   30G   0% /sys/fs/cgroup

在根文件系統中,我有一個目錄 /opt,它使用了 3.4 GB 的空間,是我做大部分工作的地方,因此 /opt 將繼續增長。備份所有文件後,我將第二個分區掛載到 /opt

mount /dev/xvda2 /opt

這樣做之後,新的 /opt 是 0 GB,分區 1 仍然是 6 GB,我無法訪問原來在 /opt 中的 3.4 GB。

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1      6.0G  6.0G   20K  100% /
devtmpfs         30G  6.1G   24G  21% /dev 
tmpfs            30G     0   30G   0% /dev/shm
tmpfs            30G  129M   30G   1% /run
tmpfs            30G     0   30G   0% /sys/fs/cgroup
/dev/xvda2       44G     0   44G   0% /opt

我已經從備份中恢復了文件,但是如何刪除分區 1 中未使用的 3.4 GB?為了將來參考,將新分區掛載到目前位於另一個分區內的目錄的正確方法是什麼?

當您在 上掛載另一個文件系統時/opt,無法通過該路徑訪問 的先前內容/opt,但它不會消失。在 Linux 上,您可以通過將其掛載到其他地方來使其可用,這要歸功於mount --bind.

mkdir /whole-root
mount --bind / /whole-root
mv /whole-root/opt/* /opt/
umount /whole-root

當然還有另一種方法:將新分區臨時掛載到空目錄(/mnt傳統上用於此目的:短期掛載點),移動文件,然後解除安裝新分區並將其掛載到最終位置。

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