如何在 Linux 中整理磁盤碎片

有一個神話是 linux 的磁盤歷來不須要整理碎片。在大多數狀況下這是真的,大多數由於是使用的是優秀的日誌文件系統(ext三、4等等)來處理文件系統。然而,在一些特殊狀況下,碎片仍舊會產生。若是正巧發生在你身上,解決方法很簡單。linux

 

什麼是磁盤碎片安全

文件系統會按塊更新文件,若是這些塊沒有連成一整塊而是分佈在磁盤的各個角落中時,就會造成磁盤碎片。這對於 FAT 和 FAT32 文件系統而言是這樣的。在 NTFS 中這種狀況有所減輕,但在 Linux(extX)中卻幾乎不會發生。下面是緣由:運維

在像 FAT 和 FAT32 這類文件系統中,文件緊挨着寫入到磁盤中。文件之間沒有空間來用於增加或者更新:spa

NTFS 中在文件之間保留了一些空間,所以有空間進行增加。但因塊之間的空間是有限的,碎片也會隨着時間出現。.net

Linux 的日誌型文件系統採用了一個不一樣的方案。與文件相互挨着不一樣,每一個文件分佈在磁盤的各處,每一個文件之間留下了大量的剩餘空間。這就給文件更新和增加留下了很大的空間,碎片不多會發生。日誌

此外,碎片一旦出現了,大多數 Linux 文件系統會嘗試將文件和塊從新連續起來。視頻

 

Linux 中的磁盤整理教程

除非你用的是一個很小的硬盤或者空間不夠了,否則 Linux 不多會須要磁盤整理。一些可能須要磁盤整理的狀況包括:get

 

若是你編輯的是大型視頻文件或者 RAW 照片,但磁盤空間有限it

若是你使用一個老式硬件,如舊筆記本,你的硬盤會很小

若是你的磁盤開始滿了(大約使用了85%)

若是你的家目錄中有許多小分區

最好的解決方案是購買一個大硬盤。若是不可能,磁盤碎片整理就頗有用了。

 

如何檢查碎片

fsck 命令會爲你作這個,換句話說,若是你能夠在 LiveCD 中運行它,那麼就能夠用於全部卸載的分區。

這一點很重要:在已經掛載的分區中運行 fsck 將會嚴重危害到你的數據和磁盤。

你已經被警告過了。開始以前,先作一個完整的備份。

免責聲明: 本文的做者與本站將不會對您的文件、數據、系統或者其餘損害負責。你須要本身承擔風險。若是你繼續,你須要接受並瞭解這點。

你應該啓動到一個 live 會話中(如使用安裝磁盤,系統救援CD等)並在你卸載的分區上運行 fsck 。要檢查是否有任何問題,請在使用 root 權限運行下面的命令:

fsck -fn [/path/to/your/partition]

您能夠運行如下命令找到分區的路徑

sudo fdisk -l

有一個在已掛載的分區中運行 fsck(相對)安全的方法是使用-n開關。這會對分區進行只讀文件系統檢查,而不會寫入任何東西。固然,這並不能保證十分安全,你應該在建立備份以後進行。在 ext3 中,運行

 

sudo fsck.ext3 -fn /path/to/your/partition

這會產生大量的輸出,大多數錯誤信息的緣由是分區已經掛載了。最後會給出一個碎片相關的信息。

 

若是碎片率大於 20% 了,那麼你應該開始整理你的磁盤碎片了。

 

如何簡單地在 Linux 中整理碎片

你要作的是備份你全部的文件和數據到另一塊硬盤中(手動複製他們),格式化分區,而後從新複製回去(不要使用備份軟件)。日誌型文件系統會把它們做爲新的文件,並將它們整齊地放置到磁盤中而不產生碎片。

要備份你的文件,運行

cp -afv [/path/to/source/partition]/* [/path/to/destination/folder]

記住星號(*)是很重要的。

注意:一般認爲複製大文件或者大量文件,使用 dd 或許是最好的。這是一個很是底層的操做,它會複製一切,包含空閒的空間甚至是留下的垃圾。這不是咱們想要的,所以這裏最好使用 cp。

如今你只須要刪除源文件。

 

sudo rm -rf [/path/to/source/partition]/*

可選:你可使用以下命令將空閒空間用零填充。也能夠用格式化來達到這點,可是若是你並無複製整個分區而僅僅是複製大文件(它一般會造成碎片)的話,就不該該使用格式化的方法了。

sudo dd if=/dev/zero of=[/path/to/source/partition]/temp-zero.txt

等待它結束。你能夠用 pv 來監測進度。

sudo apt-get install pv

sudo pv -tpreb | of=[/path/to/source/partition]/temp-zero.txt

這就完成了,只要刪除這個用於填充的臨時文件就行。

sudo rm [/path/to/source/partition]/temp-zero.txt

待你清零了空閒空間(或者跳過了這步)。從新複製迴文件,將第一個cp命令翻轉一下:

 

cp -afv [/path/to/original/destination/folder]/* [/path/to/original/source/partition]

 

使用 e4defrag

若是你想要簡單的方法,安裝 e2fsprogs,

sudo apt-get install e2fsprogs

用 root 權限在分區中運行 e4defrag。若是你不想或不能卸載該分區,你可使用它的掛載點而不是路徑。要整理整個系統的碎片,運行:

sudo e4defrag  /

在掛載的狀況下不保證成功(你也應該在它運行時不要使用你的系統),可是它比複製所有文件再從新複製回來簡單多了。

 

總結

linux 系統中因爲它的日誌型文件系統有效的數據處理不多會出現碎片。若是你因任何緣由產生了碎片,簡單的方法是從新分配你的磁盤,如複製出去全部文件並複製回來,或者使用e4defrag。然而重要的是保證你數據的安全,所以在進行任何可能影響你所有或者大多數文件的操做以前,確保你的文件已經被備份到了另一個安全的地方去了。

免費領取兄弟連IT教育原創linux運維工程師視頻/細說linux教程,詳情諮詢官網客服:http://www.lampbrother.net/linux/

或者勾搭Q2430675018

歡迎加入linux交流羣 478068715

相關文章
相關標籤/搜索