學習Linux命令 - fdisk

名稱

fdisk - 用於Linux的分區表操縱器

概要

fdisk [-u] [-b sectorize ] [-C cyls ] [-H heads ] [-S sects ] 設備

fdisk -l [-u] [ device ... ]

fdisk -s 分區...

fdisk -v

描述

硬盤可以分成一個或多個稱為分區的邏輯磁盤。 該劃分在磁盤扇區0中的分區表中進行了描述。

在BSD世界中,人們談論“磁盤片”和“磁盤標籤”。

Linux至少需要一個分區,即其根文件系統。 它可以使用交換文件和/或交換分區,但後者更高效。 所以,通常需要第二個Linux分區專用作交換分區。 在Intel兼容硬件上,引導系統的BIOS通常只能訪問磁盤的前1024個柱面。 出於這個原因,擁有大容量磁盤的人通常會創建第三個分區,只有幾MB大,通常掛載在/ boot上 ,用於存儲啟動時需要的內核映像和一些輔助文件,以確保這些東西是BIOS可訪問。 可能存在安全性,便於管理和備份或測試的原因,以使用超過最小數量的分區。

解決打印問題,節省打印隊列管理軟件的時間。

fdisk (在第一種形式的調用中)是一個菜單驅動程序,用於創建和操作分區表。 它理解DOS類型的分區表和BSD或SUN類型的磁盤標籤。

設備通常是以下之一:

/ dev / hda / dev / hdb / dev / sda / dev / sdb

(IDE磁盤為/ dev / hd [ah],SCSI磁盤為/ dev / sd [ap],ESDI磁盤為/ dev / ed [ad],XT磁盤為/ dev / xd [ab])。 設備名稱是指整個磁盤。

分區是一個設備名稱,後跟一個分區號。 例如, / dev / hda1是系統中第一個IDE硬盤上的第一個分區。 磁盤最多可以有15個分區。 另請參閱/usr/src/linux/Documentation/devices.txt

BSD / SUN類型的disklabel可以描述8個分區,其中第三個分區應該是一個“整個磁盤”分區。 不要啟動實際使用第一個扇區(如交換分區)的分區,因為這會破壞disklabel。

IRIX / SGI類型的disklabel可以描述16個分區,其中的第11個分區應該是一個完整的'volume'分區,而第9個分區應該標記為'volume header'。 卷頭還將覆蓋分區表,即它從零開始並默認延伸到五個柱面。 頭標目錄條目可以使用卷頭中的剩餘空間。 沒有分區可能與卷標頭重疊。 也不要更改它的類型並在其上創建一些文件系統,因為您將丟失分區表。 僅在使用IRIX / SGI機器上的Linux或Linux下的IRIX / SGI磁盤時使用此類標籤。

DOS 類型的分區表可以描述無限數量的分區。 在扇區0中有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 ioctl()(從磁盤重新讀取分區表)。 很久以前,在使用fdisk之後曾經有必要重啟。 我不認為這種情況已經發生 - 實際上,重啟過快可能會導致尚未寫入的數據丟失。 請注意,內核和磁盤硬件都可能會緩衝數據。

Dos 6.x警告

DOS 6.x FORMAT命令在分區的數據區域的第一個扇區中查找某些信息,並將此信息視為比分區表中的信息更可靠。 DOS FORMAT希望DOS FDISK在發生大小更改時清除分區數據區域的前512個字節。 即使給出了/ U標誌,DOS格式也會查看這些額外信息 - 我們認為這是DOS FORMAT和DOS FDISK中的一個錯誤。

底線是,如果使用cfdisk或fdisk更改DOS分區表項的大小,則在使用DOS FORMAT格式化分區之前,還必須使用dd將該分區的前512個字節清零。 例如,如果您使用cfdisk為/ dev / hda1創建DOS分區表項,則(在退出fdisk或cfdisk並重新啟動Linux以使分區表信息有效後),可以使用命令“dd if = / dev / zero of = / dev / hda1 bs = 512 count = 1“,將分區的前512 個字節歸零。

如果您使用dd命令,請小心謹慎 ,因為小錯字可能會使磁盤上的所有數據都無用。

為了獲得最佳結果,您應該始終使用特定於操作系統的分區表程序。 例如,您應該使用Linux FDISK程序和Linux分區使用Linux fdisk或Linux cfdisk程序製作DOS分區。

選項

-b 扇區化

指定磁盤的扇區大小。 有效值為512,1024或2048.(最近的內核知道扇區大小,只能在舊內核中使用,或者覆蓋內核的想法。)

-C cyl

指定磁盤的柱面數量。 我不知道為什麼有人會這樣做。

-H

指定磁盤的磁頭數量。 (當然不是物理編號,而是用於分區表的編號。)合理的值是255和16。

-S 教派

指定磁盤每個磁道的扇區數。 (當然,不是物理編號,而是分區表使用的編號。)合理的值是63。

-l

列出指定設備的分區表,然後退出。 如果沒有給出設備,則使用/ proc /分區中提到的那些設備(如果存在)。

-u

列出分區表時,請在扇區中給出大小而不是圓柱體。

-s 分區

分區大小 (以塊為單位)打印在標準輸出上。

-v

打印fdisk程序的版本號並退出。