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

跋
本頁面中文版由中文 man 手冊頁計劃提供。
中文 man 手冊頁計劃：https://github.com/man-pages-zh/manpages-zh