FDISK(8) Linux程式設計師手冊 FDISK(8)

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 的 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。

選項

列印 fdisk 的版本資訊並退出.
列出指定裝置的分割槽表資訊並退出。 如果沒有給出裝置,那麼使用那些在 /proc/partitions (如果存在)提到的.
以扇區數而不是以柱面數的形式顯示分割槽表中各分割槽的資訊. -s 分割槽 將分割槽的 大小 (單位為塊)資訊輸出到標準輸出

臭蟲

在 Linux 中有很多版本的 *fdisk 類程式。 每一個都有自己的強項和缺點。分別試著使用 cfdiskfdisksfdisk. (特別是, 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

11 June 1998 Linux 2.0