合理規劃您的硬碟分割槽

maojunxu發表於2012-09-27

作者:北南南北
 來自:LinuxSir.Org
 提要:對於一個硬碟(包括移動儲存裝置)如何規劃分割槽結構及如何劃分才是比較合理的;為了減少由於硬碟劃分不合理而造成的風險及不必要的麻煩,有必要重述如何對一個硬碟的分割槽結構進行規劃;
 

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 正文
 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 

一、關於硬碟種類、物理幾何結構及硬碟容量、分割槽大小計算;
 

1、硬碟種類、物理幾何結構
 

硬碟的種類主要是SCSI 、IDE 、以及現在流行的SATA等;任何一種硬碟的生產都要一定的標準;隨著相應的標準的升級,硬碟生產技術也在升級;比如 SCSI標準已經經歷了SCSI-1 、SCSI-2、SCSI-3;其中目前我們們經常在伺服器網站看到的 Ultral-160就是基於SCSI-3標準的;IDE 遵循的是ATA標準,而目前流行的SATA,是ATA標準的升級版本;IDE是並口裝置,而SATA是串列埠,SA他的發展目的是替換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開始的;比如下面的例子:
 

   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

 通過這個例子,我們可以看到主分割槽有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)最合理的的分割槽方式;
 

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

 

[主|分割槽1] [主|分割槽2] [主|分割槽3] [擴充套件分割槽]
                                    |
             [邏輯|分割槽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後再劃一個分割槽是不可能的,劃分邏輯分割槽更不可能; 雖然類似此種辦法也符合一個磁碟四個主分割槽的標準,但這樣主分割槽包圍擴充套件分割槽的分割槽方法實在不可取;
 
我們根據這個標題,檢視一下我們的例子,是不是符合這個標準呢?
 

 

   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

 

後記:
 

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

致謝:
 

對於本文zhy2111314 兄弟也有貢獻;在此致謝;
 

附錄:
 

《系統引導過程及硬碟分割槽結構論述》
 《Linux 檢視磁碟分割槽、檔案系統、使用情況的介紹》
 《例項解說 fdisk 使用方法》


相關文章