我正在使用 AOakley 的精彩指南縮小 Linux SDCard 分割區。我正在嘗試使其自動化,但似乎沒有命令列工具可以確定分區中使用的位元組數。
例如,gparted 告訴我已用空間為 6.99GB 中的 1.88GB(注意,我使用的是 /dev/loop0,它安裝到 /dev/sdb 的第二個分割區):
df
是錯的:
% df /dev/loop0
Filesystem ... Use%
udev ... 0%
...且不fdisk
列印parted
已使用空間。
我可以從命令列使用什麼來確定分區中的已使用空間gparted
?
答案:下面的總結:分區ext4
允許我使用dumpe2fs
和提取:free blocks
,block count
(總計),並且block size
可以組合以完全匹配gparted
。事實證明,它resize2fs
可以處理收縮過程中的碎片。有關詳細信息,請參閱線上說明頁ext4
(儘管線上說明頁編輯器對 GiB 與 GB 有點不滿!:)
答案1
df
幾乎是正確的工具,但您應該查詢屬於您要檢查的檔案系統的安裝點(或下面的任何檔案),而不是設備節點。您使用的節點/dev/loop0
是屬於udev
虛擬檔案系統的特殊檔案;因此你得到了udev
.
在某處安裝/dev/loop0
(或者/dev/sdb2
,我不確定為什麼需要/dev/loop0
)(可以ro
安裝)並調用df /the/mountpoint
。然後df
將告訴您文件系統報告的有關其自身的內容。
我說「df
是幾乎正確的工具”,因為不能保證您可以將文件系統(以及後來的分區)縮小到該工具報告的大小。df
打印的內容可能是您的第一個(或更確切地說是第零個)估計。
您需要不同的工具來調整不同檔案系統的大小。在完美的世界中,此類工具(或某些附帶工具)能夠告訴您可能的最小尺寸,或至少能夠確定調整大小成功的最小尺寸。現實中你可能會遇到這樣的情況:
已知錯誤
估計的檔案系統的最小大小resize2fs
可能不正確,特別是對於具有 1k 和 2k 區塊大小的檔案系統。
(來源)
gparted
使用特定於檔案系統的工具。我確實運行了它strace
,但沒有看到它使用的證據df
。我看見btrfs filesystem show …
,dumpe2fs …
, …
概括:
- 你用
df
錯方法了。 - 無論如何,最好使用特定於檔案系統的工具;
gparted
做。我無法告訴您應該使用什麼工具,因為您沒有指定有問題的檔案系統。