FDISK(8)

NAME
fdisk - Linux分區表操作工具軟件

總覽
fdisk [-u]設備名

fdisk -l [-u] [設備名 ...]

fdisk -s分區 ...

fdisk -v

描述
硬盤可以被分成一個或多個邏輯磁盤，稱為 分區。 這些分區信息都存放在硬盤0扇區的 分區表 中。

在 BSD 風格中，分區被稱為“磁盤片”和“磁盤標簽”

Linux 至少需要一個分區，即用做它的 root 文件系統。 Linux 可以使用交換文件和/或交換分區，交換分區更有效。 因此，通常用戶會創建第二個 Linux 分區供交換分區使用。 在 Intel 兼容的硬件上，啟動系統的 BIOS 往往只能訪問 1024 柱面之前的硬盤。 因此，使用大硬盤的用戶通常創建第三個只有幾兆大小的小分區， 通常用來裝配在 /boot ，用來存放內核映象和一些其它啟動時需要的附屬文件， 所以應確保此分區必須是在BIOS可訪問的部分。 出于安全方面的考慮、管理方面的原因、備份的需要或為了某些測試， 也可以將一個硬盤分成更多的分區使用。

fdisk （以第一種形式調用）是一個以菜單問答形式出現的用來創建和修改分區的程序。 它可以辯認 DOS 類型的分區表和 BSD 或 SUN 類型的磁盤標簽。

設備 通常是下列之一：
    		/dev/hda
    		/dev/hdb
    		/dev/sda
    		/dev/sdb
(/dev/hd[a-h] 指 IDE 硬盤，/dev/sd[a-p] 指 SCSI 硬盤， /dev/ed[a-d] 指 ESDI 硬盤，/dev/xd[ab] 指 XT 硬盤)。 設備名指整個硬盤設備。 分區 是在 設備名 後跟一個分區號。例如： /dev/hda1 是指系統在第一個 IDE 硬盤上的第一個分區。 IDE 硬盤可以最多創建 63 個分區，SCSI 可以創建 15 個。 又見 /usr/src/linux/Documnetation/devices.txt。

一個 BSD/SUN 風格的磁盤標簽可以描述 8 個分區， 其中第三個應該是“整個磁盤”分區。 不要在零柱面使用那些的確使用其第一扇區的分區，（比如交換分區） 因為這將損壞磁盤標簽。

一個 IRIX/SGI 風格的磁盤標簽可以描述 16 個分區， 其中第十一個應該是完整“卷標”分區， 而第九個應該被標成“卷標頭”。 卷標頭將覆蓋分區表，即，它從零塊開始並缺省時延伸 5 個柱面。 卷標頭中余下的空間可以用來存放頭部目錄記錄信息。 不要有任何分區與此卷標頭重疊。 同樣，也不要改變它的類形和在其中創建任何文件系統， 因為這樣做將丟失分區表信息。 只有當將 Linux 安裝在 IRIX/SGI 機器上或 在 Linux 中使用 IRIX/SGI 磁盤時才會使用這種類形的標簽。

一個 DOS 風格的分區表可以描述無限的分區。 零扇區用來存放 4 個分區（稱為主分區）的描述信息。 其中可以有一個分區是擴展分區；此擴展分區也就是存儲各邏輯分區地方， 是一個在組成鏈表的扇區裡存放的描述符，每個描述符都是一個對應分區的開頭． 四個主分區，不管是否存在，都用數字 1-4 編號，而邏輯分區以 5 開始。

在 DOS 風格的分區表中， 開始地址偏移量和每個分區的大小是以兩種不同的方式來存放的： 以扇區數的絕對值來描述（佔 32 位） 和以柱面、磁頭、扇區三個一組的形式（佔 10+8+6 個位）來描述。 前一種描述很好 - 如果每扇區 512 個字節的情況，這種方式可描述到 2TB 的大小。 後一種方式有兩個不同的問題。 第一個是這種 C/H/S 方式必須是在磁頭數和每磁道扇區數都已知的情況下才能使用。 第二個是就算我們已經知道了這些數字，而只用 24 位來描述這些信息也是不夠的。 DOS 只使用這種 C/H/S 的方式，Windows 則兩個都用，Linux 則不使用 C/H/S 的方式。

如果可能， fdisk 會自動獲得磁盤的幾何結構。這不一定是磁盤的物理結構（當然，現在的 磁盤沒有真正的物理結構，同樣也不能以簡單的柱面/磁頭/扇區的形式來描述）， 而是 MS-DOS 用來供分區表使用的幾何結構。

通常，缺省時這些都將工作得很好， 而且，如果磁盤上只有一個 Linux 操作系統時也不會有任何問題。 然而，如果磁盤上還有其它操作系統， 那麼，用其它操作系統的 fdisk 來生成其自身使用的至少一個分區是比較好的選擇。 當Linux啟動的時侯，它會掃描分區表， 並由此推出和其它共存操作系統友好合作所需的（偽）幾何結構。

當打印一個分區表時，系統會對分區表進行一次一至性檢查。 這些檢查會驗証磁盤幾何結構和物理地址的開始、結束、指向和標識， 同時在柱面的邊界檢查分區的開始和結束。（除了第一個分區）

一些版本的 MS-DOS 在創建第一個分區時並不是從柱面邊界的開始處， 而是從第一柱面的第 2 扇區處開始。 從柱面 1 開始的分區不能直接從柱面邊界開始，但這未必會造成困難， 除非你在你的機器上安裝了 OS/2 操作系統。

當執行了對分區表的更新後退出時， 程序會運行一次 sync() 和 BLKRRPART ioct1() （從磁盤上重讀分區表信息）。 以前，在使用完 fdisk 後需要重啟系統。我認為現在不需要這樣了 -- 太快的重起可能導致未寫入磁盤的數據丟失。 注意，內核和磁盤硬件都可能緩存數據。

DOS6.x WARNING
DOS6.x 的 FORMAT 命令會在分區的第一扇區的數據區查找一些信息， 並認為這些信息比分區表中的信息更可靠。 DOS 的 FORMAT 命令認為 DOS 的 FDISK 命令會在分區變化時 自動清除分區數據區的前 512 字節區域。 DOS 的 FORMAT 將查看這些額外的信息， 甚至在給出了 /U 這個參數後也是如此。 我們認為這是 DOS FORMAT 和 DOS FDISK 的臭蟲。

如果你使用 cfdisk 或 fdisk 更改了 DOS 分區表的條目， 你必須同時使用 dd 命令將該分區的前512個字節清零， 之後，你才能使用 DOS 的 FORMAT 命令對這個分區進行格式化。 例如：如果你使用 cfdisk 去創建一個 DOS 分區表項目， 即分區 /dev/hda1，然後 （在退出 fdisk 或 cfdisk 後重啟 Linux 使分區表合法化） 你就有必要使用如下命令 “dd if=/dev/ero of=/dev/hda1 bs=512 count=1” 來將分區的前 512 個字節清零。

當你使用 dd 命令時請 務必萬分小心 ， 由于任何小的打印錯誤都將造成磁盤數據的失效。

最好你還是使用由操作系統指定的分區工具軟件。 例如，當你創建 DOS 分區時應使用 DOS FDISK， 而創建 Linux 分區時則使用 Linux 的 fdisk 或 cfdisk。

選項

-v  打印 fdisk 的版本信息並退出．

-l  列出指定設備的分區表信息並退出。 如果沒有給出設備，那麼使用那些在 /proc/partitions （如果存在）提到的．

-u  以扇區數而不是以柱面數的形式顯示分區表中各分區的信息． -s 分區 將分區的 大小 （單位為塊）信息輸出到標準輸出

臭蟲
在 Linux 中有很多版本的 *fdisk 類程序。 每一個都有自己的強項和缺點。分別試著使用 cfdisk， fdisk， sfdisk． （特別是， cfdisk 是一個漂亮的程序，它只接受最嚴謹的分區表， 而且它能生成高質量的分區表。 如果可能，你最好使用這個程序。 fdisk 是一個有很多臭蟲的分區工具軟件， 它所做的操作是模糊不清的，通常在碰巧的情況下它才會正常的運行。 它唯一值得使用的地方是它對 BSD 的磁盤標簽和非 DOS 的分區表有所支持， 盡量少用這個程序。 sfdisk 是一個專為黑客提供的程序，它的用戶界面很不友善， 但它更精確，也比 fdisk 和 cfdisk 更有效。 另外，它只能以非交互的方式運行。

IRIX/SGI 風格的磁盤標簽不再被當前的內核所支持， IRIX/SGI 頭目錄同樣也不是完全支持。

選項“dump partition table to file”不可用

[中文版維護人]
所羅門 <solomen@email.com.cn>

[中文版最新更新]
2000/12/04

[中國 Linux 論壇 man 手冊頁翻譯計劃]
http://cmpp.linuxforum.net