学习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程序的版本号并退出。