Linux 磁盤分區(qū)之分區(qū)篇
 了解如何在 Linux 統(tǒng)中設計磁盤分區(qū)的布局。您可以運用本文中的資料來學習。這一節(jié)講述的是Linux 磁盤分區(qū)之分區(qū)篇。 一、分區(qū)   第一個 SCSI 驅(qū)動器通常是 /dev/sda。在較早的 Linux 系統(tǒng)中,第一個 IDE 硬盤驅(qū)動器是 /dev/hda。隨著串行(SATA)IDE 驅(qū)動器的發(fā)明,混合 PATA/SATA 系統(tǒng)有時會使用 /dev/hda 作為第一個 PATA 驅(qū)動器,使用 /devsda 表示第一個 SATA 驅(qū)動器。在較新的系統(tǒng)上,所有 IDE 驅(qū)動器都命名為 /dev/sda、/dev/sdb 等。IDE 驅(qū)動器名稱的更改是熱插拔 系統(tǒng)造成的,最初支持的是 USB 驅(qū)動器。熱插拔允許您在插入新設備后立即開始使用新設備,而現(xiàn)在這種命名用于所有設備,無論是內(nèi)置于系統(tǒng)之中的設備,還是隨后使用 USB 或 Firewire(IEEE 1394)或其他類型的連接插入正在運行的系統(tǒng)的設備。   傳統(tǒng)上,硬盤驅(qū)動器會格式化為 512 字節(jié)的扇區(qū)。磁盤盤片在無需移動磁頭的前提下即可讀取的所有扇區(qū)組成一個磁道。磁盤通常具有多個盤片。各盤片上在無需移動磁頭的前提下即可讀取的磁道的集合稱為柱面。硬盤驅(qū)動器的設定參數(shù) 使用柱面、每個柱面的磁道(或磁頭)數(shù)以及扇區(qū)/磁道表示。在本文撰寫之時,驅(qū)動器制造商開始生產(chǎn)具有 4K 扇區(qū)的磁盤。如果文件系統(tǒng)仍然假定使用 512 字節(jié)的扇區(qū),而某個分區(qū)并非從位于 4K 邊界的扇區(qū)開始,則將導致性能降低。   PC 系統(tǒng)上 DOS 操作系統(tǒng)中對于柱面、磁頭和扇區(qū)大小的限制帶來了 BIOS 轉(zhuǎn)換的設定參數(shù),以支持更大的硬盤驅(qū)動器。最終,即便這樣的方法也不足以解決問題。磁盤驅(qū)動器技術的最新發(fā)展帶來了邏輯塊尋址(LBA),因而 CHS 設定參數(shù)指標的重要性有所降低,現(xiàn)代磁盤上報告的設定參數(shù)可能與物理扇區(qū)布局關系不大或者完全無關。如今,我們使用的磁盤更大,這迫使 LBA 推出了稱為 LBA48 的擴展,最多可保留 48 個位供扇區(qū)號使用。   硬盤驅(qū)動器上的空間劃分(或者說分區(qū))為多個分區(qū)。分區(qū)不能重疊,未分配給分區(qū)的空間稱為剩余空間。分區(qū)名的形式類似于 /dev/hda1、/dev/hda2、/dev/hda3、/dev/sda1 等。在未使用 IDE 驅(qū)動器熱插拔支持的系統(tǒng)上,IDE 驅(qū)動器最多支持 63 個分區(qū)。通過熱插拔支持的 SCSI 驅(qū)動器、USB 驅(qū)動器和 IDE 驅(qū)動器最多可有 15 個分區(qū)。一個分區(qū)通常會分配為整數(shù)個柱面(柱面概念可能存在不準確之處)。   如果兩種不同的分區(qū)程序?qū)τ谥付ǖ拇疟P設定參數(shù)有著不同的理解,就有可能出現(xiàn)一種分區(qū)程序在遇到另一個分區(qū)程序創(chuàng)建的分區(qū)時報錯或發(fā)生問題的情況。如果將磁盤從一個系統(tǒng)移動到另一個系統(tǒng),也可能會出現(xiàn)此類問題,若兩個系統(tǒng)的 BIOS 功能不同則更容易出現(xiàn)問題。   在 Linux 系統(tǒng)中,您可以使用 parted 或 fdisk 工具查看指定設定參數(shù)。較早版本的 Linux 參數(shù)也會在 /proc 文件系統(tǒng)中一個類似于 /proc/ide/hda/geometry 的文件中報告設定參數(shù),而在較新版本的系統(tǒng)中可能無法找到這個文件。清單 1 展示了如何使用 fdisk 命令來顯示附加 SATA 的 IDE 硬盤驅(qū)動器的分區(qū)和設定參數(shù)。fdisk 的 -v 參數(shù)顯示版本。要顯示或操縱分區(qū)表,您需要是 root 用戶,或者通過 sudo 命令獲得 root 權限,如本清單所示。   清單 1. 硬盤設定參數(shù)   ian@attic4:~$ fdisk -v   fdisk (util-linux-ng 2.16)   ian@attic4:~$ sudo fdisk /dev/sdb   [sudo] password for ian:   The number of cylinders for this disk is set to 30401.   There is nothing wrong with that, but this is larger than 1024,   and could in certain setups cause problems with:   1) software that runs at boot time (e.g., old versions of LILO)   2) booting and partitioning software from other OSs   (e.g., DOS FDISK, OS/2 FDISK)   Command (m for help): p   Disk /dev/sdb: 250.1 GB, 250059350016 bytes   255 heads, 63 sectors/track, 30401 cylinders   Units = cylinders of 16065 * 512 = 8225280 bytes   Disk identifier: 0x000404d6   Device Boot Start End Blocks Id System   /dev/sdb1 1 25 200781 83 Linux   /dev/sdb2 26 12965 103940550 83 Linux   /dev/sdb3 12966 30401 140054670 83 Linux   Command (m for help):   在清單 1 中,請注意 fdisk 將打印一條關于柱面 1024 末尾指定位置的警告。某些舊版系統(tǒng)的 BIOS 僅能引導位于磁盤的前 1024 個柱面內(nèi)的分區(qū),在這種情況下,柱面 1024 極為重要。這很可能出現(xiàn)在沒有 LBA 支持的 BIOS 中或者某些舊版本的引導管理器中。在現(xiàn)代機器中,這通常不會造成問題,但您應該注意,可能存在這樣的限制。   您可以使用 fdisk 顯示扇區(qū)中的單元,使用 -u 選項即可,也可在交互模式中使用 u 子命令在扇區(qū)和柱面之間切換。parted 命令支持多種不同的單元。清單 2 展示了清單 1 所示的同一個磁盤內(nèi)的 parted 中不同單元的使用。 #p#   清單 2. 使用 parted 的不同單元   ian@attic4:~$ sudo parted /dev/sdb   [sudo] password for ian:   GNU Parted 1.8.8.1.159-1e0e   Using /dev/sdb   Welcome to GNU Parted! Type 'help' to view a list of commands.   (parted) help u   unit UNIT set the default unit to UNIT   UNIT is one of: s, B, kB, MB, GB, TB, compact, cyl, chs, %, kiB, MiB,   GiB, TiB   (parted) p   Model: ATA HDT722525DLA380 (scsi)   Disk /dev/sdb: 250GB   Sector size (logical/physical): 512B/512B   Partition Table: msdos   Number Start End Size Type File system Flags   1 32.3kB 206MB 206MB primary ext3   2 206MB 107GB 106GB primary ext4   3 107GB 250GB 143GB primary ext3   (parted) u s   (parted) p   Model: ATA HDT722525DLA380 (scsi)   Disk /dev/sdb: 488397168s   Sector size (logical/physical): 512B/512B   Partition Table: msdos   Number Start End Size Type File system Flags   1 63s 401624s 401562s primary ext3   2 401625s 208282724s 207881100s primary ext4   3 208282725s 488392064s 280109340s primary ext3   (parted) u chs   (parted) p   Model: ATA HDT722525DLA380 (scsi)   Disk /dev/sdb: 30401,80,62   Sector size (logical/physical): 512B/512B   BIOS cylinder,head,sector geometry: 30401,255,63. Each cylinder is 8225kB.   Partition Table: msdos   Number Start End Type File system Flags   1 0,1,0 24,254,62 primary ext3   2 25,0,0 12964,254,62 primary ext4   3 12965,0,0 30400,254,62 primary ext3   (parted)   請注意,parted 和 fdisk 輸出所顯示的起始柱面和結束柱面截然不同,這是由于 parted 從零開始計算柱面,而 fdisk 從 1 開始計算。清單 3 表明,fdisk 與 parted 的起始扇區(qū)和結束扇區(qū)實際上是完全相同的。   清單 3. 檢查起始和結束扇區(qū)號   ian@attic4:~$ sudo fdisk -ul /dev/sdb   Disk /dev/sdb: 250.1 GB, 250059350016 bytes   255 heads, 63 sectors/track, 30401 cylinders, total 488397168 sectors   Units = sectors of 1 * 512 = 512 bytes   Disk identifier: 0x000404d6   Device Boot Start End Blocks Id System   /dev/sdb1 63 401624 200781 83 Linux   /dev/sdb2 401625 208282724 103940550 83 Linux   /dev/sdb3 208282725 488392064 140054670 83 Linux   ian@attic4:~$ echo $(( 208282725 / 255 / 63 ))   12965 #p# 二、分區(qū)類型   IDE 驅(qū)動器上有三種類型的分區(qū):主、邏輯 和擴展。分區(qū)表 位于磁盤主引導記錄(MBR)之中。MBR 是磁盤上的第一個扇區(qū),因而分區(qū)表在其中所占空間不大。這限制了一個磁盤上的主分區(qū)數(shù)量,最多為 4 個。如果需要 4 個以上的主分區(qū)(往往需要 4 個以上的主分區(qū)),其中一個主分區(qū)就必須以擴展分區(qū)的形式出現(xiàn)。   擴展分區(qū) 就是一個或多個邏輯分區(qū)的容器。這種分區(qū)模式最初是由 MS DOS 和 PC DOS 采用的,允許 DOS、Windows 或 Linux 系統(tǒng)使用 PC 磁盤。一個磁盤可能僅包含一個擴展分區(qū)。數(shù)據(jù)存儲在擴展分區(qū)內(nèi)的邏輯分區(qū)中。必須首先在擴展分區(qū)內(nèi)創(chuàng)建一個邏輯分區(qū),之后才能將數(shù)據(jù)存儲到擴展分區(qū)中。   Linux 將主分區(qū)或擴展分區(qū)編號為 1 至 4,因而 dev/sda 可能擁有四個主分區(qū):/dev/sda1、/dev/sda2、/dev/sda3、/dev/sda4。也可以有一個主分區(qū) /dev/sda1 和一個擴展分區(qū) /dev/sda2。如果定義了邏輯分區(qū),則邏輯分區(qū)的編號從 5 開始,/dev/sda 上的第一個邏輯分區(qū)將為 /dev/sda5,即便磁盤上不存在主分區(qū),只有一個擴展分區(qū)也是如此(/dev/sda1)。因此,如果您希望一個 IDE 驅(qū)動器上有四個以上的分區(qū),就需要給擴展分區(qū)分配一個分區(qū)號。盡管理論上支持熱插拔的內(nèi)核的 IDE 驅(qū)動器分區(qū)數(shù)量理論上最多為 15 個,但您也許能創(chuàng)建最后幾個,也可能無法創(chuàng)建最后幾個。如果您計劃在一個驅(qū)動器上使用超過 12 個分區(qū),應務必謹慎地檢查所有方面。   上面的示例中使用的磁盤具有三個主分區(qū),均格式化為供 Linux 使用。其中兩個主分區(qū)使用 ext3 文件系統(tǒng),而另一個主分區(qū)使用 ext4 文件系統(tǒng)。清單 4 展示了針對 Ubuntu 9.10 系統(tǒng)上帶有主、擴展和邏輯分區(qū)的內(nèi)部驅(qū)動器和附加到 Fedora 12 系統(tǒng)的 USB 驅(qū)動器的 parted 命令 p 的輸出結果。請注意不同的文件系統(tǒng)類型。另外還要注意,您可以在命令行中指定一個或多個 parted 命令,避免使用交互模式。   清單 4. 使用 parted 命令顯示分區(qū)表   ian@attic4:~$ sudo parted /dev/sda u s p   [sudo] password for ian:   Model: ATA WDC WD6401AALS-0 (scsi)   Disk /dev/sda: 1250263728s   Sector size (logical/physical): 512B/512B   Partition Table: msdos   Number Start End Size Type File system Flags   1 63s 2040254s 2040192s primary ext3   2 2040255s 22523129s 20482875s primary linux-swap(v1)   4 22523130s 1250258624s 1227735495s extended boot   5 22523193s 167397299s 144874107s logical ext3   6 167397363s 310761359s 143363997s logical ext3   7 310761423s 455442749s 144681327s logical ext3   8 455442813s 600092009s 144649197s logical ext3   [root@echidna ~]# parted /dev/sdc p   Model: WD My Book (scsi)   Disk /dev/sdc: 750GB   Sector size (logical/physical): 512B/512B   Partition Table: msdos   Number Start End Size Type File system Flags   1 32.3kB 135GB 135GB primary fat32 lba   2 135GB 750GB 616GB extended   5 135GB 292GB 157GB logical ext3   6 292GB 479GB 187GB logical ext3   7 479GB 555GB 76.5GB logical ext3   8 555GB 750GB 195GB logical ext3
【編輯推薦】
- 3.2.5 Linux安裝模式下,磁盤分區(qū)的選擇(極重要)
 - Linux磁盤分區(qū)的操作工具與命令使用
 - 簡單剖析Linux磁盤分區(qū)命令
 - 讓Linux操作系統(tǒng)支持FAT格式的磁盤分區(qū)
 - Linux配置文件
 - Linux下文件的清理
 















 
 
 



 
 
 
 