fdisk

适用于Linux的分区表操作器

语法

  fdisk [-u] device

  fdisk -l [-u] device ...

  fdisk -s partition ...

  fdisk -v

选项

   -u     列出分区表时,在扇区而不是柱面中给出大小.

   -l     列出 /dev/hd[a-d], /dev/sd[a-h], /dev/ed[a-d]的分区表,然后退出.

   -s     分区
          分区的大小(以块为单位)打印在标准输出上

   -v     打印fdisk程序的版本号并退出

硬盘可以分为一个或多个称为分区的逻辑磁盘。在磁盘的扇区0中找到的分区表中描述了这种划分

Linux至少需要一个分区,即它的根文件系统。它可以使用交换文件和/或交换分区,但后者更有效。所以,通常一个
将需要第二个专用于交换分区的Linux分区。在Intel兼容硬件上,引导系统的BIOS通常只能访问磁盘的前1024个柱面。出于这个原因,拥有大磁盘的人通常会创建第三个分区,只需几MB,通常安装在/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个

   BSD/SUN类型的磁盘标签可以描述8个分区
   其中第三个应该是“整个磁盘”分区.  不要
   启动实际使用其第一个扇区的分区
   (因为交换分区)在0柱面,因为那样
   破坏disklabel

   一个IRIX / SGI类型的磁盘标签可以描述16个分区
   第十一个应该是一个完整的“卷”分区,
   而第九个应该标记为`volume header'。该
   卷标题也将覆盖分区表,即
   它从零块开始,默认超过五个
   缸。卷标题中的剩余空间可以
   由头目录条目使用。没有分区可能
   与卷标题重叠。也不要改变它
   输入并制作一些文件系统,因为你会丢失
   分区表。仅在使用此类标签时使用
   在IRIX / SGI机器或IRIX / SGI磁盘上使用Linux
   在Linux下。

DOS类型分区表可以描述无限数量的分区。在扇区0中,有4个分区(称为“主要”)的描述空间。其中一个可以是扩展分区; 这是一个包含逻辑分区的框,其中描述符位于链接的扇区列表中,每个扇区位于相应的逻辑分区之前。无论是否存在,四个主要分区的数字为1-4。逻辑分区从5开始编号。

在DOS类型分区表中,起始偏移量和每个分区的大小以两种方式存储:作为绝对数量的扇区(以32位给出)和作为Cylinders / Heads / Sectors三元组(以10 + 8 + 6给出)位)。前者没问题 - 使用512字节扇区,最高可达2 TB。后者有两个不同的问题。首先,只有当磁头数和每个磁道的扇区数已知时,才能填充这些C / H / S字段。其次,即使我们知道这些数字应该是什么,可用的24位也是不够的。DOS仅使用C / H / S,Windows使用两者,Linux从不使用C / H / S.

如果可能,fdisk将自动获取磁盘几何。这不一定是物理磁盘的几何形状(实际上,现代磁盘实际上没有像物理几何体那样的东西,当然也不能用简单的Cylinders / Heads / Sectors形式描述),而是MS-DOS使用的磁盘几何对于分区表。

通常情况下一切顺利,如果Linux是磁盘上唯一的系统,则没有问题。但是,如果磁盘必须与其他操作系统共享,那么让来自其他操作系统的fdisk至少创建一个分区通常是个好主意。当Linux启动时,

它会查看分区表,并尝试推断出与其他系统良好协作所需的(伪)几何。

每当打印出分区表时,就会对分区表条目执行一致性检查。此检查验证物理和逻辑起点和终点是否相同,以及分区是否在柱面边界上开始和结束(第一个分区除外)。

某些版本的MS-DOS创建了第一个分区,它不是在柱面边界上开始,而是在第一个柱面的扇区2上。从气缸1开始的分区不能从气缸边界开始,但除非您的机器上有OS / 2,否则这不太可能造成困难。

在分区表更新后退出之前,将执行sync()和BLKRRPART ioctl()(从磁盘重新读取分区表)。很久以前,曾经有必要在使用fdisk后重新启动。我认为不再是这种情况了 - 事实上,重新启动太快可能会导致丢失尚未写入的数据。请注意,内核和磁盘硬件都可以缓冲数据。

在分区表更新后退出之前,将执行sync()和BLKRRPART ioctl()(从磁盘重新读取分区表)。很久以前,曾经有必要在使用fdisk后重新启动。我认为不再是这种情况了 - 事实上,重新启动太快可能会导致丢失尚未写入的数据。请注意,内核和磁盘硬件都可以缓冲数据。

DOS 6.x警告
DOS 6.x FORMAT命令在分区数据区的第一个扇区中查找某些信息,并将此信息视为比分区表中的信息更可靠。DOS FORMAT要求DOS FDISK在发生大小更改时清除分区数据区的前512个字节。即使给出/ U标志,DOS FORMAT也会查看这些额外的信息,我们认为这是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 到0分区的前512个字节。

如果使用dd命令,请务必小心,因为一个小错字可能会使磁盘上的所有数据无效。

为获得最佳结果,应始终使用特定于操作系统的分区表程序。例如,您应该使用DOS FDISK程序和Linux分区与Linux fdisk或Linux cfdisk程序进行DOS分区。

BUGS
有几个* fdisk程序。每个人都有自己的问题和优势。

按照cfdisk,fdisk,sfdisk的顺序尝试它们。(实际上,cfdisk 是一个漂亮的程序,对它接受的分区表有严格的要求,并生成高质量的分区表。如果可以,请使用它。

fdisk是一个运行模糊的程序 - 通常它会产生合理的结果。
它的唯一优点是它对BSD磁盘标签和其他非DOS分区表有一些支持。如果可以,请避免使用它。sfdisk仅适用于黑客 - 用户界面非常糟糕,但它比fdisk更正确,并且比fdisk和cfdisk更强大。而且,它可以非交互使用。)

目前内核不支持IRIX / SGI类型的disklabel。此外,尚未完全支持IRIX / SGI头目录。

fdisk 命令实例:

linux命令:fdisk -l |grep -e '^/' |awk '{print $1}'|sed -e "s|/dev/||g" "s|/dev/||g" -e $1}'|sed '{print |awk '^/' -e |grep -l fdisk fdisk -l |grep -e '^/' |awk '{print $1}'|sed -e "s|/dev/||g"rootopen.com
linux命令:fdisk -l |grep -e '^/' |awk '{print $1}'|sed -e "s|/dev/||g" "s|/dev/||g" -e $1}'|sed '{print |awk '^/' -e |grep -l fdisk fdisk -l |grep -e '^/' |awk '{print $1}'|sed -e "s|/dev/||g"rootopen.com
2017-12-29 20:28:48

linux命令:fdisk -l /dev/sda | grep -E sda[0-9]+ | sed s/*// | awk '{printf ("%s %f ",$1,$2/512); if($2%512){ print "BAD" }else {print "Good"} }' | column -t -t column | }' "Good"} {print }else "BAD" print if($2%512){ ",$1,$2/512); %f ("%s '{printf awk | s/*// sed | sda[0-9]+ -E grep | /dev/sda -l fdisk fdisk -l /dev/sda | grep -E sda[0-9]+ | sed s/*// | awk '{printf ("%s %f ",$1,$2/512); if($2%512){ print "BAD" }else {print "Good"} }' | column -trootopen.com
linux命令:fdisk -l /dev/sda | grep -E sda[0-9]+ | sed s/*// | awk '{printf ("%s %f ",$1,$2/512); if($2%512){ print "BAD" }else {print "Good"} }' | column -t -t column | }' "Good"} {print }else "BAD" print if($2%512){ ",$1,$2/512); %f ("%s '{printf awk | s/*// sed | sda[0-9]+ -E grep | /dev/sda -l fdisk fdisk -l /dev/sda | grep -E sda[0-9]+ | sed s/*// | awk '{printf ("%s %f ",$1,$2/512); if($2%512){ print "BAD" }else {print "Good"} }' | column -trootopen.com
2018-03-23 07:15:48

linux命令:fdisk -l /dev/sda /dev/sda -l fdisk fdisk -l /dev/sdarootopen.com
linux命令:fdisk -l /dev/sda /dev/sda -l fdisk fdisk -l /dev/sdarootopen.com
2018-05-03 07:09:48

linux命令:fdisk -l -l fdisk fdisk -lrootopen.com
linux命令:fdisk -l -l fdisk fdisk -lrootopen.com
2018-03-14 22:44:48

Linux的Bash命令行(A-Z排序)