天天看點

合理規劃您的硬碟分區

作者:北南南北

 來自:LinuxSir.Org

 提要:對于一個硬碟(包括移動儲存設備)如何規劃分區結構及如何劃分才是比較合理的;為了減少由于硬碟劃分不合理而造成的風險及不必要的麻煩,有必要重述如何對一個硬碟的分區結構進行規劃;

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 正文

 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

一、關于硬碟種類、實體幾何結構及硬碟容量、分區大小計算;

1、硬碟種類、實體幾何結構

硬碟的種類主要是SCSI 、IDE 、以及現在流行的SATA等;任何一種硬碟的生産都要一定的标準;随着相應的标準的更新,硬碟生産技術也在更新;比如 SCSI标準已經經曆了SCSI-1 、SCSI-2、SCSI-3;其中目前咱們經常在伺服器網站看到的 Ultral-160就是基于SCSI-3标準的;IDE 遵循的是ATA标準,而目前流行的SATA,是ATA标準的更新版本;IDE是并口裝置,而SATA是序列槽,SATA的發展目的是替換IDE;

硬碟的實體幾何結構是由盤、磁盤表面、柱面、扇區組成,一個張硬碟内部是由幾張碟片疊加在一起,這樣形成一個柱體面;每個碟片都有上下表面;磁頭和磁盤表面接觸進而能讀取資料;

2、硬碟容量及分區大小的算法;

我們通過fdsik -l 可以發現如下的資訊:

Disk /dev/hda: 80.0 GB, 80026361856 bytes

255 heads, 63 sectors/track, 9729 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System

/dev/hda1   *           1         765     6144831    7  HPFS/NTFS

/dev/hda2             766        2805    16386300    c  W95 FAT32 (LBA)

/dev/hda3            2806        9729    55617030    5  Extended

/dev/hda5            2806        3825     8193118+  83  Linux

/dev/hda6            3826        5100    10241406   83  Linux

/dev/hda7            5101        5198      787153+  82  Linux swap / Solaris

/dev/hda8            5199        6657    11719386   83  Linux

/dev/hda9            6658        7751     8787523+  83  Linux

/dev/hda10           7752        9729    15888253+  83  Linux

其中 heads 是磁盤面;sectors 是扇區;cylinders 是柱面;每個扇區大小是 512byte,也就是0.5M;

通過上面的例子,我們發現此硬碟有 255個磁盤面,有63個扇區,有9729個柱面;是以整個硬碟體積換算公式應該是:

磁面個數 x 扇區個數 x 每個扇區的大小512 x 柱面個數 = 硬碟體積 (機關bytes)

是以在本例中磁盤的大小應該計算如下:

255 x 63 x 512 x 9729 = 80023749120 bytes

提示:由于硬碟生産商和作業系統換算不太一樣,硬碟廠家以10進位的辦法來換算,而作業系統是以2進位制來換算,是以在換算成M或者G 時,不同的算法結果卻不一樣;是以我們的硬碟有時标出的是80G,在作業系統下看卻少幾M;

上面例子中,硬碟廠家算法 和 作業系統算數比較:

硬碟廠家: 80023749120 bytes = 80023749.120 K = 80023.749120 M (向大機關換算,每次除以1000)

 作業系統: 80023749120 bytes = 78148192.5 K = 76316.594238281 M (向大機關換算,每次除以1024)

我們在檢視分區大小的時候,可以用生産廠家提供的算法來簡單推算分區的大小;把小數點向前移動六位就是以G表示的大小;比如 hda1 的大小約為 6.144831G ;

二、關于硬碟分區劃分标準及合理分區結構;

1、硬碟分區劃分标準

硬碟的分區由主分區、擴充分區和邏輯分區組成;是以我們在對硬碟分區時要遵循這個标準;主分區(包括擴充分區)的最大個數是四個,主分區(包含擴充分區)的個數硬碟的主引導記錄MBR(Master Boot Recorder)決定的,MBR存放啟動管理程式(GRUB,LILO,NTLOARDER等)和分區表記錄。其中擴充分區也算一個主分區;擴充分區下可以包含更多的邏輯分區;是以主分區(包括擴充分區)範圍是從1-4,邏輯分區是從5開始的;比如下面的例子:

 通過這個例子,我們可以看到主分區有3個,從 hda1-hda3 ,擴充分區由 hda5-hda10 ;此硬碟沒有主分區4,是以也沒有顯示主分區hda4 ;但邏輯分區不可能從4開始,因為那是主分區的位置,明白了吧;

2、硬碟裝置(包括移動儲存設備)在Linux或者其它類Unix系統的表示;

IDE 硬碟在Linux或者其它類Unix系統的一般表示為 hd* ,比如hda、hdb ... ... ,我們可以通過 fdisk -l 來檢視;有時您可能隻有一個硬碟,在作業系統中看到的卻是 hdb ,這與硬碟的跳線有關;另外hdc 大多表示是光驅裝置;如果您有兩塊硬碟,大多是 hda和hdb。在這方面說的太多也無用,還是以fdisk -l 為準為好;

SCSI 和SATA 硬碟在Linux通常也是表示為 sd* ,比如 sda 、sdb ... ... 以fdisk -l 為準

移動儲存設備在linux表示為 sd* ,比如 sda 、sdb ... ... 以fdisk -l 為準

3、合理的規劃分區;

關于一個磁盤的分區,一個磁盤應該有四個主分區,其中擴充也算一個主分區;存在以下情況:

1)分區結構之一:四個主分區,沒有擴充分區;

[主|分區1] [主分|區2] [主|分區3] [主|分區4]

這種情況,如果您想在一個磁盤上劃分五個以上分區,這樣是行不通的;

三個主分區 一個擴充分區;

[主|分區1] [主|分區2] [主|分區3] [擴充分區]

                                 |

            [邏輯|分區5] [邏輯|分區6] [邏輯|分區7] [邏輯|分區8] ... ...

這種情況行得通,而且分區的自由度比較大;分區也不受限制,能分超過5個分區;這隻是舉一個例子;

2)最合理的的分區方式;

最合理的分區結構:主分區在前,擴充分區在後,然後在擴充分區中劃分邏輯分區;主分區的個數+擴充分區個數要控制在四個之内;比如下面的分區是比較好的;

                                    |

             [邏輯|分區5] [邏輯|分區6] [邏輯|分區7] [邏輯|分區8] ... ...

[主|分區1] [主|分區2] [擴充分區]

                         |       

   [邏輯|分區5] [邏輯|分區6] [邏輯|分區7] [邏輯|分區8] ... ...

[主|分區1] [擴充分區]

              |       

[邏輯|分區5] [邏輯|分區6] [邏輯|分區7] [邏輯|分區8] ... ...

最不合理的分區結構: 主分區包圍擴充分區;比如下面的;

[主|分區1] [主|分區2] [擴充分區] [主|分區4] [空白未分區空間]

                         |

    [邏輯|分區5] [邏輯|分區6] [邏輯|分區7] [邏輯|分區8] ... ...

這樣 [主|分區2] 和 [主|分區4] 之間的 [擴充分區] 是有自由度,但[主|分區4]後的[空白未分區空間]怎麼辦?除非把主分區4完全利用擴充分區後的空間,否則您想在主分區4後再劃一個分區是不可能的,劃分邏輯分區更不可能; 雖然類似此種辦法也符合一個磁盤四個主分區的标準,但這樣主分區包圍擴充分區的分區方法實在不可取;

我們根據這個标題,檢視一下我們的例子,是不是符合這個标準呢?

後記:

把分區基礎寫出來,主要是想讓新手弟兄知道什麼是合理的分區結構,如果把硬碟分區規劃好了,也為以學習省卻了不少麻煩;在此文後,我計劃寫具體的分區工具介紹;這也算一個基礎知識的積累;雖然老手都會,但新手可能還是需要的;

緻謝:

對于本文zhy2111314 兄弟也有貢獻;在此緻謝;

附錄:

《系統引導過程及硬碟分區結構論述》

 《Linux 檢視磁盤分區、檔案系統、使用情況的介紹》

 《執行個體解說 fdisk 使用方法》

繼續閱讀