Linux不需要磁碟碎片整理。
以下引自linux官方網站對碎片的解說:來源於
http://www.linux.org/docs/ldp/howto/Partition/appendix.html#fragmentation
引用:10.4. Some facts about file systems and fragmentation
Disk
space is administered by the operating system in units of blocks and
fragments of blocks. In ext2, fragments and blocks have to be of the
same size, so we can limit our discussion to blocks.
Files come
in any size. They don't end on block boundaries. So with every file a
part of the last block of every file is wasted. Assuming that file sizes
are random, there is approximately a half block of waste for each file
on your disk. Tanenbaum calls this "internal fragmentation" in his book
"Operating Systems".
You can guess the number of files on your disk by the number of allocated inodes on a disk. On my disk
# df -i
Filesystem Inodes IUsed IFree %IUsed Mounted on
/dev/hda3 64256 12234 52022 19% /
/dev/hda5 96000 43058 52942 45% /var
there
are about 12000 files on / and about 44000 files on /var. At a block
size of 1 KB, about 6+22 = 28 MB of disk space are lost in the tail
blocks of files. Had I chosen a block size of 4 KB, I had lost 4 times
this space.
Data transfer is faster for large contiguous chunks
of data, though. That's why ext2 tries to preallocate space in units of 8
contigous blocks for growing files. Unused preallocation is released
when the file is closed, so no space is wasted.
Noncontiguous
placement of blocks in a file is bad for performance, since files are
often accessed in a sequential manner. It forces the operating system to
split a disk access and the disk to move the head. This is called
"external fragmentation" or simply "fragmentation" and is a common
problem with MS-DOS file systems. In conjunction with the abysmal buffer
cache used by MS-DOS, the effects of file fragmentation on performance
are very noticeable. DOS users are accustomed to defragging their disks
every few weeks and some have even developed some ritualistic beliefs
regarding defragmentation.
None of these habits should be carried
over to Linux and ext2. Linux native file systems do not need
defragmentation under normal use and this includes any condition with at
least 5% of free space on a disk. There is a defragmentation tool for
ext2 called defrag, but users are cautioned against casual use. A power
outage during such an operation can trash your file system. Since you
need to back up your data anyway, simply writing back from your copy
will do the job.
The MS-DOS file system is also known to lose
large amounts of disk space due to internal fragmentation. For
partitions larger than 256 MB, DOS block sizes grow so large that they
are no longer useful (This has been corrected to some extent with
FAT32). Ext2 does not force you to choose large blocks for large file
systems, except for very large file systems in the 0.5 TB range (that's
terabytes with 1 TB equaling 1024 GB) and above, where small block sizes
become inefficient. So unlike DOS there is no need to split up large
disks into multiple partitions to keep block size down.
Use a 1Kb block size if you have many small files. For large partitions, 4Kb blocks are fine.
希望有能力、有閒暇地朋友能對上面的官方材料進行翻譯,我的能力有所不及,這裡僅僅做一些闡述。
這段linux官方資料主要介紹了外部碎片(external fragmentation)、內部碎片(internal
fragmentation)的概念及相關情況,說明了linux文件系統在磁碟還有5%空閒空間的情況下是不需要碎片整理的。(Linux
native file systems do not need defragmentation under normal use and
this includes any condition with at least 5% of free space on a
disk.)。而在實際使用中,磁碟在還有8%左右未使用時就會有警告產生,所以碎片整理是不用考慮的。
產生碎片整理想法的主要在兩類朋友中,一類是受windows思想影響的朋友,還有一類是對作業系統原理有一定程度了解的朋友。
我在這裡先簡單地說明一些問題。
所有地作業系統都會產生磁碟碎片,這正是某些朋友產生疑慮的原因。這個碎片在上面地官方資料中稱為內部碎片。它是這樣產生的,假設一個磁碟的空間有
20k,它的基本存儲單位為簇,設有兩個文件,一個7k,一個1k。當簇的大小為4k時,磁碟分為了5個簇,兩個文件共佔用3個簇,即使用了12k,其中
浪費地空間就是4k,也就是產生了內部碎片4k。因此我們就了解了:內部碎片主要是造成磁碟空間的浪費。請注意:windows的磁碟碎片整理功能所整理
的碎片不是這個碎片,也無法對這個碎片進行操作,它所對應的碎片概念是外部碎片。
那麼,可以對內部碎片進行優化處理嗎?答案是肯定的。以上面的例子來說,如果把每一簇分成2k,那麼20k的磁碟就分為了10個簇,7k和1k兩個文件共佔用了5個簇,10k的空間,浪費的空間,即內部碎片為2k。
由此可見,簇分的越小,所浪費的空間越少。這也是NTFS比FAT32優秀的一個地方。在Win
2000的FAT32文件系統的情況下,分區大小在2GB~8GB時簇的大小為4KB;分區大小在8GB~16GB時簇的大小為8KB;分區大小在
16GB~32GB時,簇的大小則達到了16KB。而Win
2000的NTFS文件系統,當分區的大小在2GB以下時,簇的大小都比相應的FAT32簇小;當分區的大小在2GB以上時(2GB~2TB),簇的大小
都為4KB。相比之下,NTFS可以比FAT32更有效地管理磁碟空間,最大限度地避免了磁碟空間的浪費。
有的朋友會進一步的思
考,那麼為什麼文件系統不是把簇分的非常的小呢?這裡就引出了另一個問題,文件訪問查找的問題。還是以上面的例子說明,當我們要查找使用一個文件時,就需
要通過頁表來進行訪問。打個比方,你住的地方就好比是文件所佔用的簇,但是要找到你,就得通過你的住址來進行訪問,而訪問文件則是通過文件分配表。如果住
的人多,地址也就很多,那麼要查到你住的地址所花的時間也就很多。同樣的道理,當簇分的越小,記錄簇的地址也就越大,查找文件所在的簇所花的時間也就越
多。當簇為4k時,簇的地址是5個,而簇為2k時,簇的地址是10個。因而簇的大小是在空間和時間上取得平衡的一個結果。
這裡也對另一個問題作一些提示,有些第三方分區軟體可以自定義簇的大小,建議採用默認值,否則會在某些情況下產生一些問題。
有的朋友會進一步提問:那麼為什麼在普通情況下NTFS分的簇會比FAT32的要小,而訪問速度會差不多呢?這又牽涉到文件訪問機制等等問題。這裡我就
不再介紹了,其實這個問題我也不能完全說清,有興趣的朋友可以找一些作業系統方面的資料進行閱讀,可以在一定程度上解決這個問題。
好,下面開始我們的重點:linux不需要碎片整理!
windows概念下的碎片,在上面linux官方資料中稱為外部碎片,它就是影響性能的那個碎片概念。(This is called
"external fragmentation" or simply "fragmentation" and is a common
problem with MS-DOS file systems.
)而linux一般不會產生這種碎片。外部磁碟碎片應該稱為文件碎片,是因為文件被分散保存到整個磁碟的不同地方,而不是連續地保存在磁碟連續的簇中形成
的。
當應用程序所需的物理內存不足時,一般作業系統會在硬碟中產生臨時交換文件,用該文件所佔用的硬碟空間虛擬成內存。虛擬內存管理程序會對硬碟頻繁讀寫,產生大量的碎片,這是產生硬碟碎片的主要原因。
其他如IE瀏覽器瀏覽信息時生成的臨時文件或臨時文件目錄的設置也會造成系統中形成大量的碎片。文件碎片一般不會在系統中引起問題,但文件碎片
過多會使系統在讀文件的時候來回尋找,引起系統性能下降,嚴重的還要縮短硬碟壽命。另外,過多的磁碟碎片還有可能導致存儲文件的丟失。
上面所說的就是windows如何產生外部碎片的,其實這與文件系統所使用的資料結構有關。對於FAT來說,使用的是chain式的結構來記錄一個文件
所使用的簇。這種方式的好處就是有助於文件的動態增長的需要。但是卻帶了碎片的問題,使得讀寫文件的時候,磁頭頻繁移動。對於CD-ROM,由於是
read-only的,所以不存在數據增長的問題,所以,採用了連續的方法來記錄數據,也不會產生碎片,而linux的ext等文件格式與CD-ROM的
存儲有相似之處。
下面這篇文章通俗易懂地解說了為什麼linux不需要碎片整理以及windows為什麼需要碎片整理:
來自http://geekblog.oneandoneis2.org/index.php/2006/08/17/why_doesn_t_linux_need_defragmenting
請注意,官方資料所說的是linux文件系統在磁碟還有5%空閒空間的情況下是不需要碎片整理的。(Linux native file
systems do not need defragmentation under normal use and this includes
any condition with at least 5% of free space on a
disk.)。而在實際使用中,磁碟在還有8%左右未使用時就會有警告產生,所以碎片整理是不用考慮的。
而下文中說的是20%。
引用:為什麼Linux不需要磁碟碎片整理
作者:OneAndOneIs2
翻譯:rainking
有一個關於Linux的問題經常被問及:為什麼Linux不需要磁碟碎片整理呢?在這裡,我試圖就「為什麼有的文件系統比另一些文件系統更加需要磁碟碎片整理」給出一個簡單的,非技術性的答案。
我將試圖用一個ASCII矩陣來解釋所有的原理,而不是用那些枯燥而晦澀的術語來打擊大家的積極性。下面就是我將用來解釋原理的矩陣:
a b c d e f g h i j k l m n o p q r s t u v w x y z
a 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
b 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
c 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
d 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
e 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
f 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
g 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
h 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
i 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
j 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
k 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
l 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
m 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
n 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
o 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
p 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
q 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
r 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
s 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
t 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
u 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
v 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
w 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
x 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
y 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
z 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
以上這個矩陣就可以簡單的用來表示一個很小的硬碟,初始狀態是空的,全部都被0填充。在矩陣頂部和左側的a-z都是用來定位每一個數據的。最左上角的那個0就是aa,最右上角的那個0就是za,最左下角的就是az。
我將以一個大家都非常非常熟悉的文件系統開始,一個經常需要磁碟碎片整理的系統—FAT。其實無論Windows用戶還是Linux用戶都會用到FAT文件系統。因為USB閃盤一般都使用這個文件系統。FAT是一個非常非常重要的文件系統,雖然它經常需要磁碟碎片整理。
我現在在磁碟上加入一個文件,於是磁碟看起來會變成這個樣子:
a b c d e f g h i j k l m n o p q r s t u v w x y z
a T O C h e l l o . t x t a e l e 0 0 0 0 0 0 0 0 0 0
b 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
c 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
d 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 T O C
e H e l l o , _ w o r l d 0 0 0 0 0 0 0 0 0 0 0 0 0 0
f 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
(為了看起來更加清楚,g-z的空行被省略了)
正
如你所看到的,前4行是TOC(Table Of
Contents),即所謂的內容表。TOC會存儲磁碟上所有文件的位置。在我上面的例子中,TOC包含了一個名字叫做「hello.txt」的文件,並
且這個文件的內容是從ae到le的。往下看ae到le之間的內容,我們能看到這個文件的內容是「Hello,_world」
到目前為止,一切都正常對嗎?好,那我們再來添加一個文件:
a b c d e f g h i j k l m n o p q r s t u v w x y z
a T O C h e l l o . t x t a e l e b y e . t x t m e z
b e 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
c 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
d 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 T O C
e H e l l o , _ w o r l d G o o d b y e , _ w o r l d
f 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
正如你所見,第二個文件被緊接著放置在第一個文件之後。這樣的好處是你所有的文件都會緊密地放置在一起,這樣讀取它們將會非常的迅速和方便。要知道磁碟上最慢的就是讀寫頭的移動了,它移動的越少,則讀取的速度越快。
但是,當我們需要修改第一個文件的時候,問題就出來了。現在假設我們需要在「hello.txt」文件的尾部加入兩個感嘆號,我們就會遇到問題:沒有空間!文件「bye.txt」擋住了「hello.txt」的去路。這時候我們有兩個解決方法,但是沒有一個是完美的。
1 我們把文件「hello.txt」刪掉,然後再「bye.txt」後面加入修改過後的「hello.txt」。
2 我們把文件「hello.txt」拆成兩部分存儲,這樣在「bye.txt」之前就不會有空的磁碟空間了。
第一種種方式表現出來就是這樣:
a b c d e f g h i j k l m n o p q r s t u v w x y z
a T O C h e l l o . t x t a f n f b y e . t x t m e z
b e 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
c 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
d 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 T O C
e 0 0 0 0 0 0 0 0 0 0 0 0 G o o d b y e , _ w o r l d
f H e l l o , _ w o r l d ! ! 0 0 0 0 0 0 0 0 0 0 0 0
第二種種方式表現出來就是這樣:
a b c d e f g h i j k l m n o p q r s t u v w x y z
a T O C h e l l o . t x t a e l e a f b f b y e . t x
b t m e z e 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
c 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
d 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 T O C
e H e l l o , _ w o r l d G o o d b y e , _ w o r l d
f ! ! 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
這就是為什麼FAT格式的文件系統經常需要磁碟碎片整理的原因。所有的文件都緊挨著存放,所以任何時候,只要一個文件需要增大,就會產生碎片。而任何文件被刪除了,就會留下一個空白區域。於是很快磁碟就會變成一堆亂糟糟的隨便和空白,效率就會變低了。
而Linux
卻用一種不同的方式來處理這種問題。對於單用戶來說Windows的文件系統已經夠好的了,但是Linux生來就是為多用戶設計的系統,它總是假設在同一
時間有多個用戶試圖去操作不同的文件。所以Linux相對FAT文件系統,使用了另一種方法來設計自己的文件系統。Linux文件系統看起來是這樣的:
a b c d e f g h i j k l m n o p q r s t u v w x y z
a T O C h e l l o . t x t h n s n 0 0 0 0 0 0 0 0 0 0
b 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
c 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
d 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 T O C
e 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
f 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
g 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
h 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
i 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
j 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
k 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
l 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
m 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
n 0 0 0 0 0 0 0 H e l l o , _ w o r l d 0 0 0 0 0 0 0
o 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
p 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
q 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
r 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
s 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
t 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
u 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
v 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
w 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
x 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
y 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
z 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
當我們添加了文件以後就變成這樣了:
a b c d e f g h i j k l m n o p q r s t u v w x y z
a T O C h e l l o . t x t h n s n b y e . t x t d u q
b u 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
c 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
d 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 T O C
e 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
f 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
g 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
h 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
i 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
j 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
k 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
l 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
m 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
n 0 0 0 0 0 0 0 H e l l o , _ w o r l d 0 0 0 0 0 0 0
o 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
p 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
q 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
r 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
s 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
t 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
u 0 0 0 G o o d b y e , _ w o r l d 0 0 0 0 0 0 0 0 0
v 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
w 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
x 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
y 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
z 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
這種文件系統的好處是磁碟的磁頭可以一直位於中間位置,而所有的文件平均下來都會非常近。
當我們仍然給「hello.txt」加入兩個感嘆號時,我們來看看這會引起多大的麻煩:
a b c d e f g h i j k l m n o p q r s t u v w x y z
a T O C h e l l o . t x t h n u n b y e . t x t d u q
b u 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
c 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
d 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 T O C
e 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
f 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
g 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
h 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
i 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
j 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
k 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
l 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
m 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
n 0 0 0 0 0 0 0 H e l l o , _ w o r l d ! ! 0 0 0 0 0
o 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
p 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
q 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
r 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
s 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
t 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
u 0 0 0 G o o d b y e , _ w o r l d 0 0 0 0 0 0 0 0 0
v 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
w 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
x 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
y 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
z 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
對了!一點麻煩都沒有!
Windows總是試圖把文件存儲在盡量靠近磁碟開始位置的地方,這導致當磁碟利用率變高的時候它經常會產生磁碟碎片。
Linux卻在整個磁碟上存儲文件,所以當文件的大小需要改變的時候,總是有足夠的空間。
當然當磁碟利用率接近飽和的時候Linux也會需要文件整理。但是只要磁碟還有20%以上的可用空間,那麼這種整理是基本不會發生的。
還有一點必須了解的是,即使當一個作業系統說某個磁碟已經完全碎片整理完畢了,但是根據一個磁碟的物理結構,碎片仍然會存在。因為磁碟總是由很多碟片和磁軌組成的。
讓我們來看看一個磁碟有兩個碟片,aa到zm是第一個,an到zz是第二個。
a b c d e f g h i j k l m n o p q r s t u v w x y z
a 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
b 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
c 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
d 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
e 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
f 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
g 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
h 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
i 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
j 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
k 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
l 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
m 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
a b c d e f g h i j k l m n o p q r s t u v w x y z
n 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
o 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
p 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
q 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
r 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
s 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
t 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
u 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
v 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
w 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
x 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
y 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
z 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
一下的文件系統是有碎片的,因為文件橫跨了行m和n。而這兩行不是在一個碟片上的。要讀取這個文件,磁碟的磁頭必須從碟片1的最末尾跨越到碟片2的最開始。
a b c d e f g h i j k l m n o p q r s t u v w x y z
a T O C h e l l o . t x t r m e n 0 0 0 0 0 0 0 0 0 0
b 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
c 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
d 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
e 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
f 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
g 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
h 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
i 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
j 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
k 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
l 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
m 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 H e l l o , _ w o
a b c d e f g h i j k l m n o p q r s t u v w x y z
n r l d ! ! 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
o 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
p 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
q 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
r 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
s 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
t 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
u 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
v 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
w 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
x 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
y 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
z 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
最後,希望我以上的解釋能讓你明白為什麼Linux不需要磁碟碎片整理,如果你還是沒有明白,請儘管提出讓你疑惑的地方。
對windows進行磁碟碎片整理的朋友,這裡也做一點小小的友情提示。
1、整理磁碟碎片的時候,要關閉其他所有的應用程序,包括螢幕保護程序,最好將虛擬內存的大小設置為固定值。不要對磁碟進行讀寫操作。
2、整理磁碟碎片的頻率要控制合適,過於頻繁的整理也會縮短磁碟的壽命。一般經常讀寫的磁碟分區一周整理一次。
最後想說說思考的話題。
那些想在linux下進行磁碟碎片整理的朋友,你們考慮過兩個事實嗎?
第一,為什麼類unix系統產生幾十年了,沒有人做一個磁碟碎片整理軟體?而即使是到現在,在這個論壇上也沒有朋友提到過遇到linux病毒,我們仍然能找到許多類unix殺毒軟體?我就至少能列出3種免費殺毒軟體。
第二,很多類unix作業系統都是長年累月不關機的,諸如銀行、電信、軍工等系統,你能想像它們停止磁碟讀寫,在長達幾小時內進行磁碟碎片整理所帶來的後果嗎?這些機器的磁碟讀寫量可是比家用機大多了。
#由於我水平有限,錯誤疏漏之處難免,歡迎各位批評指證。
#26樓的朋友提出davix 寫道:
linux沒有官方網站
我再次查證後,還是認為引用材料是權威性的。理由如下:
第一,www.linux.org自身描述為The Linux Home Page at Linux Online。
第二,org頂級域名是orgonization的縮寫,也就是說非營利性組織會使用這種域名。例如:
GNU官方站點為http://www.gnu.org/
Debian官方站點為http://www.debian.org/
而域名申請有如下規定:不得使用公眾知曉的其他國家或者地區名稱、外國地名、國際組織名稱。
作為linux,我認為這是一個公眾知曉的國際組織,因此www.linux.org我認為是官方網站。由linus組織的駭客組織在進行核心發布時,一定是有一個發布渠道的,而網站就是其中一個比較方便的渠道。
同時,我的材料來自HowTo文檔,這也是權威的,下面的引用說HOWTOs是官方的。引自http://www.linux.org/docs/
引用:Linux
information and technical support is available from a wide variety of
locations. There are the "official" routes such as the Linux Software
Map, Linux Documentation Project, HOWTOs, and FAQs (Frequently Asked
Questions).
對這方面有所了解的朋友,請不吝賜教,大家共同進步。
#11月10日第一次修改,把《為什麼Linux不需要磁碟碎片整理》替換為中譯版本。
#11月22日第二次修改,對文章內容擴充,主要增加了有關外部碎片的說明。[/quote]
最後由 我思故我在 編輯於 2006-12-07 14:23,總共編輯了 4 次