2010年9月30日 星期四

Disk Management磁碟管理淺談_磁碟重組重要性

───────────────────────────────────────
     洪逸:「你們一定都沒再做磁碟重組啦!
───────────────────────────────────────
  (溫腥小提示:看此篇前建議先看:Disk Management磁碟管理淺談_磁碟資料存取方式與傳輸計算)


  為什麼要做磁碟重組呢,原因是因為配置空間錯亂檔案分散很遠,磁頭跑阿跑阿找阿找阿花在Seek Time上的時間就越來越大。而磁碟重組空間後,可以將使用的空間與尚未使用的空間分開放,讓磁頭找資料變得快速。其原理就在於以下這幾種檔案配置的方法File Allocation methods:




1.Contiguous Allocation
  簡單的說,這就是一種連續性的配置方法,如果一個檔案File需要n個Blocks的空間,則OS必須在Disk中找到大於等於n個連續的free Blocks,然後才會將空間配置給此File。



  上圖的圓柱即是Disk,其中每一個框框就是一個Block,白色代表Free Block。每一列就是一個Track。
  此硬碟內部已配置了三個File(moo、snow、fall),然後會有一個Physical Directory用來記載這三個檔案的起始Block位址與長度。
  那麼顯而易見的,這種配置方式的優點就是:
  1.平均Seek Time較短,因為同一個檔案的連續Blocks幾乎都座落在同一條Track(無seek time),只有少數會要移動磁頭的狀況(如snow檔案的23~24、27~28)
  2.他支援Random Access與Sequential Access
  至於缺點呢:
  1.有External Fragmentation問題(這個問題就是要靠磁碟重組Repack解決)
  2.File Size不容易擴充(下一個連續的Block可能已經分配出去了)
  3.建檔之前需先宣告大小


2.Linked Allocation
  簡單的說,OS只需在Disk中找到一個檔案大小為n個Blocks所需的大於等於n個Free Blocks即可以配置空間出去。這些Free Blocks不需要連續,他們彼此之間以Link的方式串連,每一個Block都會記錄下一個串連Block的位址。


  如上圖所示,Physical Directory會記錄每個配置的檔名、起始Block位址、最終Block位址。
  乍看之下,這種方法好太多了,但其實他也有很嚴重的缺點
  1.平均Seek Time有夠長(如圖所示,同個檔案的Block幾乎都不在同Track。磁頭表示:我手好酸)
  2.不支援Random Access,只支援Sequential Access
  3.循序存取速度慢
  4.可靠度差
  至於優點呢:
  1.沒有External Fragmentation問題
  2.File Size容易擴充
  3.建檔前不需事先宣告大小


另外,Linked Allocation有一種變形的方式,就是大家常常碰到的:
FAT(File Allocation Table) method:
  其實就跟Linked Allocation一樣,不同的只是OS會用一個Table(FAT),紀錄配置區塊間的Linking資訊,而不是紀錄在每一個Allocationed Block上。






3.Index Allocation
  簡單的說,除了再找Free Blocks的條件下跟Linked Allocation一樣以外,OS還要額外配置一個Index Block,用來記錄Allocationed Blocks的No..



  如上圖所示,右方三個即是Index Block內記錄的Linking資訊。
  優點如下:
  1.沒有External Fragmentation
  2.支援Random Acces與Sequential Acces
  3.File容易擴充
  缺點如下:
  1.Index Block需額外佔用空間
  2.如果此File所需的free Block很大,則單一一個Index Block可能無法容納所有的Allocationed Block No......至於解決方法,有興趣在問我吧XD


















  嗯嗯......落落長寫完一大段才發現沒寫到什麼跟repack有關的重點......
  反正大概就這種感覺啦,自己想吧XD

3 則留言:

  1. 那個INDEX allocation 圖中的 2 8 21 跟 index的 8 31 2 怎麼對不起來阿,我看不太懂ㄟ,可以解釋一下ㄇ

    回覆刪除
  2. 你好, 不好意思現在才看到你的問題.
    也謝謝你幫我提出這個問題.
    關於這部分, 經你一講我才發現圖畫錯了.
    右下方的Blocks應該各為2、31、8

    回覆刪除