Bootstrap

fdisk

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类型的分区表和BSDSUN类型的磁盘标签。

设备通常是下列之一:

/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()BLKRRPARTioct1()(从磁

盘上重读分区表信息)。以前,在使用完fdisk

后需要重启系统。我认为现在不需要这样了--太快的重起可能导致未写入磁盘的数据丢失。注意,内核和磁盘硬件都可能缓存数据。

DOS6.xWARNING

DOS6.xFORMAT命令会在分区的第一扇区的数据区查找一些信息,并认为这些信息比分区

表中的信息更可靠。DOSFORMAT命令认为DOS

FDISK命令会在分区变化时 自动清除分区数据区的前512 字节区域。 DOS FORMAT将查看这些额外的信息,甚至在给出了/U

这个参数后也是如此。我们认为这是DOSFORMATDOSFDISK的臭虫。


如果你使用cfdiskfdisk更改了DOS分区表的条目,你必须同时使用dd命令将该分区的前512个字节清零,之后,你才能使用DOS

FORMAT命令对这个分区进行格式化。 例如:如果你使用cfdisk去创建一个DOS分区表项目,即分区/dev/hda1,然后(在退出fdiskcfdisk后重启Linux使分区表合法化) 你就有必要使用如下命令 “dd if=/dev/zero of=/dev/hda1 bs=512 count=1”来将分区的前512个字节清零。


当你使用dd命令时请务必万分小心 , 由于任何小的打印错误都将造成磁盘数据的失效。


最好你还是使用由操作系统指定的分区工具软件。 例如,当你创建DOS 分区时应使用DOSFDISK,而创建Linux分区时则使用Linux

fdiskcfdisk


选项

-v打印fdisk的版本信息并退出.


-l列出指定设备的分区表信息并退出。如果没有给出设备,那么使用那些在/proc/partitions(如果存在)提到的.


-u以扇区数而不是以柱面数的形式显示分区表中各分区的信息.

-s分区将分区的大小(单位为块)信息输出到标准输出


臭虫

Linux中有很多版本的*fdisk类程序。每一个都有自己的强项和缺点。分别试着使用cfdiskfdisksfdisk. (特别是,

cfdisk是一个漂亮的程序,它只接受最严谨的分区表, 而且它能生成高质量的分区 表。如果可能,你最好使用这个程序。fdisk是一个有很多臭虫的分区工具软件,它所做的操作是模糊不清的,通常在碰巧的情况下它才会正常的运行。它唯一值得使用的地方是它对BSD 的磁盘标签和非 DOS的分区表有所支持,尽量少用这个程序。sfdisk是一个专为黑客提供的程序,它的用户界面很不友善,但它更精确,也比fdiskcfdisk更有效。

另外,它只能以非交互的方式运行。


IRIX/SGI风格的磁盘标签不再被当前的内核所支持,IRIX/SGI头目录同样也不是完全支持。


选项“dumppartition table to file”不可用


;