DOKK / manpages / debian 11 / manpages-zh / fdisk.8.zh_TW
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