让fdisk输出更准确合理

注意:新版本的fdisk默认输出已经正确合理了,本文只适用于旧版本的fdisk.

1 无option选项参数的输出

[[email protected] ~]# fdisk -l

Disk /dev/sda: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xf0b1ebb0

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1        7295    58592256   83  Linux
/dev/sda2            7295       19458    97695745    5  Extended
/dev/sda5            7295       17021    78124032   83  Linux
/dev/sda6           17021       18966    15624192   83  Linux
/dev/sda7           18967       19458     3945472   82  Linux swap / Solaris
[[email protected] ~]#

此时输出结果基于远古时代的CHS硬盘寻址模式,CHS早就被业界淘汰了,纯属历史遗留的概念,只有 可能在某些BIOS里还存在。但是目前还有很多资料或软件出现相关信息,比如fdisk -l的结果。为了顾及知识完整性,还是简单做一下介绍,有兴趣的同学可以去Internet上查找关键词CHS。话说最早的硬盘有多个盘片组成,每个盘片 都对应一个磁头(Head)来扫描它,一个盘片分成很多同心圆环,每一个圆环叫做一个轨道(Track),每个轨道又被平均分成多个弧段也叫扇区 (Sector)。需要注意的是,这里的同心圆环,不论半径大小,都被分成了相同数量的扇区,而每个扇区大大小是固定的512B。所以内环的数据密度一定 高于外环的数据密度了。所有盘片上对应的轨道(Track)共同组成一个柱面(Cylinder)。就我自己而言,没见过超过2个盘片的硬盘,所以这个柱 面其实是很矮的。

CHS定位原理也很简单,首先找到柱面(C),然后在此柱面上找到盘面(H),最后在 柱面和盘面切割的轨道上找到扇区(S)。其实理论上也可以先找到盘面然后再找轨道和扇区。之所以是CHS这个顺序是因为当初的硬盘构造决定的,所有磁头都 固定在同一个装置上,相对位置不变,所以所有磁头都是一起移动的。这样如果相邻数据在同一柱面上的话,则无需移动磁头就能全部读写,所以效率最高。不扯这 些了,毕竟CHS早就淘汰了。回到上面的输出结果,第一行显示/dev/sda这个硬盘总容量为160G,第二行显示磁盘有255个磁头(盘面),每个磁 道有63个扇区,同心圆环有19457个。难道这个硬盘真的有255个盘面?显然这是不可能的。之所以会有这样的输出就是因为兼容CHS模式。而255个 磁头63个扇区都是CHS的极限值,在这里并不代表实际的硬盘物理结构。第三行的Units表示的是一个柱面能存储多少字节数据,即 255*63*512,这对于现在的硬盘显然也是没有什么意义的。然而在输出结果的分区列表中的start和end列却使用了unit作为度量单位,也就 是说分区的对齐单位是柱面,显得非常不够精确。Blocks列的单位是KB,与units无关。

2 强烈建议给出的option参数

如果我们不加参数运行fdisk,输出如下结果。

[[email protected] ~]# fdisk /dev/sda

WARNING: DOS-compatible mode is deprecated. It‘s strongly recommended to
         switch off the mode (command ‘c‘) and change display units to
         sectors (command ‘u‘).

Command (m for help):

此处给出了警告信息:DOS兼容模式已经废弃,强烈建议执行c命令切换模式,并且使用u命令把输出的unit由柱面改为扇区。按照提示进行操作如下:

Command (m for help): c
DOS Compatibility flag is not set

Command (m for help): u
Changing display/entry units to sectors

Command (m for help): p

Disk /dev/sda: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders, total 312581808 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xf0b1ebb0

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048   117186559    58592256   83  Linux
/dev/sda2       117188606   312580095    97695745    5  Extended
/dev/sda5       117188608   273436671    78124032   83  Linux
/dev/sda6       273438720   304687103    15624192   83  Linux
/dev/sda7       304689152   312580095     3945472   82  Linux swap / Solaris

Command (m for help):

可见此时的打印结果中分区列表的Unit不再以柱面为单位,而是以扇区了。而扇区确实是当前大多数硬 盘以及逻辑硬盘(LUN)的最小存储单位,而且也采用LBA这种线性寻址方式。既然fdisk能给出警告,为什么不把默认改为正确的方式呢?比较发现新版 本的fdisk确实默认已经能正确显示了,当遇到老版本的fdisk时,还是需要添加cu参数。

在非交互的fdisk -l下,也只需使用 fdisk -cul 即可正确显示分区信息了。

[[email protected] ~]# fdisk -cul

Disk /dev/sda: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders, total 312581808 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xf0b1ebb0

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048   117186559    58592256   83  Linux
/dev/sda2       117188606   312580095    97695745    5  Extended
/dev/sda5       117188608   273436671    78124032   83  Linux
/dev/sda6       273438720   304687103    15624192   83  Linux
/dev/sda7       304689152   312580095     3945472   82  Linux swap / Solaris

顺便提一下,注意上面MBR和第一主分区,以及各分区之间并不是紧密相连的,而是有一些“未使用”的扇区。我能想到的一个原因就是,GRUB的一部分代码就是存在于分区之间的夹缝之中。

时间: 2024-09-15 19:04:40

让fdisk输出更准确合理的相关文章

用同一个磁盘,服务器lvm在线磁盘扩容

某云的主机[具体哪个云不说了,免得说我黑人家],系统是centos-6.5 64位的, 生产数据库从库,100G空间,现在空间不足了 本来打算买个200G的云盘挂上去的,服务器所在的区没有云盘,不能挂其他区的云盘(不支持) 某云的售后技术支持在后台给服务器加了空间,还是在原来是磁盘/dev/vdb加的 ,直接在这个盘加了200G空间,现在要把这200G的空间用上 开始以为是给我们加个新的硬盘的,没想到是这样加,加到同一个磁盘,现在好了,找到的博客都是写通过另一个磁盘给现有的lvm扩容的,我就呵呵

【Dev Club 分享】腾讯验证码的十二年

源:http://mp.weixin.qq.com/s?__biz=MzA3NTYzODYzMg==&mid=2653578147&idx=3&sn=94a8f8f8b4a23b2429ba18bd50c4e048&chksm=84b3b1a4b3c438b28476200037170798276cf7762a115dad9e4b49afeed3151955afe7cf82c4&scene=4#wechat_redirect 内容简介:验证码的诞生就是用来对抗自动机

利用ISCSI存储技术构建IP存储网络

本文重点介绍如何构建一个PC构架的iSCSI存储系统,这里我们选择一个普通的.性能优良的.可支持多块磁盘的PC服务器作为iSCSI target,并且选择一个成熟稳定的iSCSI target软件iscsitarget,基本配置环境如表1所示:表1 这里将Target主机第三块硬盘(硬盘标识为/dev/sdc)作为iSCSI共享磁盘,硬盘大小为10G,分别共享给一台windows主机和一台Linux主机,基本结构如图1所示: 图1 下面开始详细介绍iSCSI网络存储的搭建过程. 一.安装iSCS

解决成本的错误和问题

问题描述 错误 数据收集 根本原因 版本   组件:数据修复           在一个实际成本组织中,(平均,先进先出,后进先出) 一个或更 多的以下情况可能发生: 1.导航到物料成本历史表单上的数量信息,与现有量表单的数量不匹配的记录 2. 一些物料前期已计成本的数量与前面的事务处理历史表单的数量不匹配 3. 所有的库存值报表与事务处理值报表不匹配 4. 存货层次成本更新表单的总数量与现有量数量表单不匹配(仅仅在先进先出/后进先出) 5.这些症状的任何一个意味着 MMT-CQL不匹配或MMT

linux CentOS7 磁盘分区fdisk 、df 、du、parted 命令实例

一. df命令 分区查看工具: 1. df [[email protected]_46_188_centos ~]$ df Filesystem     1K-blocks    Used Available Use% Mounted on /dev/vda1       20510332 4844740  14617076  25% / devtmpfs          499348       0    499348   0% /dev tmpfs             508452  

fdisk 使用方法

//参照“实例解说 fdisk 使用方法”:http://www.linuxsir.org/main/?q=node/81//作者:北南南北 1.关于硬盘分区的介绍 硬盘的分区由主分区.扩展分区和逻辑分区组成: 主分区(包括扩展分区)的最大个数是四个:其中扩展分区也算一个主分区: 扩展分区可以继续划分为更多的逻辑分区: 所以主分区(包括扩展分区)范围是从1-4,逻辑分区是从5开始的: 2.通过fdisk -l查看机器挂载的硬盘个数,及分区情况---------------------------

输出文字

输出文字 壹佰软件开发小组  整理编译   在前一章,您看到了一个简单的Windows 98程序,它在窗口中央,或者更准确地说,在显示区域中央显示一行文字.正如我们学到的,显示区域是整个应用程序窗口中未被标题列.窗口边框,以及可选的菜单列.工具列.状态列和滚动条占据的部分.简而言之,显示区域是窗口中可以由程序任意书写和传递视觉信息的部分. 对于程序的显示区域,您几乎可以为所欲为,只不过您不能假定窗口大小是某一特定尺寸,或者在程序执行时其大小会保持不变.如果您不熟悉图形窗口环境的程序设计,这些限制

fdisk分区硬盘并shell脚本自动化

最近工作需要用到对硬盘进行shell脚本自动化分区和mount的操作,google了一些资料,下面做个总结. 如果硬盘没有进行分区(逻辑分区或者扩展分区,关于两者概念,自行google),我们将无法将使用该硬盘来进行读写.我们要使用一块硬盘需要进行下面三步: 将该硬盘进行分区: 对分区进行格式化: 将分区mount到系统某个目录,便可以访问. 本笔记会着重讲一下第一步中涉及的fdisk分区功能以及如何来使用shell进行自动化处理,过程也会涉及后面两步操作的简单说明. fdisk对硬盘进行分区

linux fdisk命令使用

fdisk 对硬盘及分区的操作,进入fdisk 对硬盘操作阶段 我们可以对硬盘进行分区操作,前提是您把fdisk -l 弄明白了:通过fdisk -l ,我们能找出机器中所有硬盘个数及设备名称:比如上面的例子,我们会看到两个设备一个是/dev/hda ,另一个是/dev/sda : fdisk 操作硬盘的命令格式如下: [[email protected] beinan]# fdisk 设备 比如我们通过 fdisk -l 得知 /dev/hda 或者 /dev/sda设备:我们如果想再添加或者