Scroll to navigation

FDISK(8) Linux程式員手冊 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 類程式。 每一個都有自己的強項和缺點。分別試著使用 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
11 June 1998 Linux 2.0