如何整理Linux磁盤碎片,竟與Windows的方式大不同
Linux 系統(tǒng)永遠(yuǎn)不需要整理磁盤碎片的神話相信很多人都聽說過。由于 Linux 采用了優(yōu)秀的日志文件系統(tǒng)(ext2、ext3、ext4, btrfs等),在絕大多數(shù)情況下確實是不需要進(jìn)行磁盤碎片整理的。
什么是磁盤碎片文件?
當(dāng)文件系統(tǒng)在磁盤的扇區(qū)上讀寫文件時會形成不連續(xù)的整體,這樣就會產(chǎn)生磁盤碎片文件。這種情況在 FAT 和 FAT 32 文件系統(tǒng)來說尤為突出,NTFS 文件系統(tǒng)對該現(xiàn)象進(jìn)行了一些緩解。那為什么這種情況幾乎不發(fā)生在 Linux 操作系統(tǒng) (extX) 中呢?
在 FAT 和 FAT32 文件系統(tǒng)中,文件會在彼此相鄰的磁盤右側(cè)進(jìn)行寫入,并沒有為文件增長或更新留出空間?! ?/p>

NTFS 為相鄰文件留出了部分間隔,讓文件有一定的增長和更新空間。但這個間隔是有限的,隨時使用時間增長一樣會產(chǎn)生磁盤碎片。

Linux 的日志文件系統(tǒng)采用完全不同的存儲方式,直接將每個文件分散在磁盤上進(jìn)行存儲,為每個文件之間留下了自由的空間,因此很少產(chǎn)生磁盤碎片文件?! ?/p>

此外,如何磁盤碎片開始產(chǎn)生,大多數(shù) Linux 文件系統(tǒng)將自動嘗試將文件和塊進(jìn)行重組,以使得存儲變得連續(xù)起來。
整理Linux磁盤碎片文件
除非你使用了一個空間較小的磁盤或頻繁讀寫的空間,磁盤碎片文件在 Linux 系統(tǒng)中很少發(fā)生。一些可能會導(dǎo)致 Linux 磁盤碎片產(chǎn)生的情況如下:
- 在有限的磁盤空間下編輯大型視頻文件或 RAW 圖片
- 在較老舊的設(shè)備上使用空間很小的磁盤
- 磁盤空間使用率超過85%
- 存儲過多體積很小的文件
當(dāng)然,***的解決辦法就是換一塊空間較大的硬盤,或者進(jìn)行手動整理。
如何檢查是否有磁盤碎片
我們可以使用 fsck 命令對磁盤進(jìn)行檢測。切記,在檢測時一定要 unmount 被檢測分區(qū),不然有可能損壞數(shù)據(jù)。因此,建議大家從 Live CD 來執(zhí)行 fsck 命令,并在之前對重要文件做好備份。
一切準(zhǔn)備就緒之后,我們執(zhí)行如下命令:
- fsck -fn [/path/to/your/partition]
其中[/path/to/your/partition]為我們要檢測的路徑,檢測時會有大量的信息輸出,最終將會報告給我們一個磁盤碎片的相關(guān)信息:

注意:如果磁盤碎片在 20% 以上,我們就需要進(jìn)行整理。20% 以內(nèi)的話,可以暫時不進(jìn)行。
簡單方式整理Linux文件系統(tǒng)
與其說是整理磁盤其實不如說是刪了重來,Linux 的操作方式與 Windows 下的磁盤整理完全不同。由于 Linux 是基于文件的系統(tǒng),我們只需將磁盤中的文件全部復(fù)制到另一個地方,將其格式化之后再將備份好的文件復(fù)制回來即可。復(fù)制回來的同時,Liunx 會自動將文件進(jìn)行連續(xù)分布排列。
1. 使用如下命令備份源磁盤文件
- cp -afv [/path/to/源盤]/* [/path/to/備份文件夾]
注意:很多朋友會認(rèn)為大批量復(fù)制文件用 dd 文件比較好,但 dd 的操作層面更低,會復(fù)制很多垃圾信息。而我們的目的是要整理磁盤,所以使用 cp 命令。
2. 現(xiàn)在我們使用如下命令刪除源文件
- sudo rm -rf [/path/to/源盤]/*
可選項:當(dāng)然,你也可以直接通過以下命令直接為源盤填充 0 以達(dá)到清空的目的?! ?/p>
- sudo dd if=/dev/zero of=[/path/to/源盤]/temp-zero.txt
3. 你可以使用 pv 命令來監(jiān)控 dd 命令的執(zhí)行過程:
- sudo apt-get install pvsudo pv -tpreb | of=of=[/path/to/源盤]/temp-zero.txt

4. 執(zhí)行完成后,我們刪除這個臨時文件
- sudo rm [/path/to/源盤]/temp-zero.txt
5. 磁盤清零(可靠)后我們將備份好的文件復(fù)制回來即可
- cp -afv [/path/to/備份文件夾]/* [/path/to/源盤]
使用e4defrag
如果你覺得以上步驟太麻煩了,還可以使用 e2fsprogs 命令
1. 安裝e2fsprogs
- sudo apt-get install e2fsprogs
2. 執(zhí)行整理
- sudo e4defrag /
注意:以上命令雖然方便,但不是所有系統(tǒng)上都可以執(zhí)行成功。