让fdisk输出更准确合理
注意:新版本的fdisk默认输出已经正确合理了,本文只适用于旧版本的fdisk.
1 无option选项参数的输出
[root@localhost ~]# 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
[root@localhost ~]#
此时输出结果基于远古时代的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,输出如下结果。
[root@localhost ~]# 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 即可正确显示分区信息了。
[root@localhost ~]# 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的一部分代码就是存在于分区之间的夹缝之中。
让fdisk输出更准确合理的更多相关文章
- plsqldevloper + orcal环境搭建
移动信息安全的漏洞和逆向原理 程序员11月书讯,评论得书啦 Get IT技能知识库,50个领域一键直达 关闭 PL/SQL Developer安装配置实践 2014-04-23 1 ...
- 定制kickstart重建CentOS7.5镜像用于U盘引导安装
有什么问题或者疑惑,可以留言,全力解答. ISO 镜像制作 U 盘安装盘 U盘安装CentOS7.4 U盘实现CentOS7.3全自动安装系统 https://www.cnblogs.com/pany ...
- 【腾讯Bugly干货分享】腾讯验证码的十二年
本文来自于腾讯bugly开发者社区,未经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/581301b146dfb1456904df8d Dev Club 是一个交流移动 ...
- 【Dev Club 分享】腾讯验证码的十二年
源:http://mp.weixin.qq.com/s?__biz=MzA3NTYzODYzMg==&mid=2653578147&idx=3&sn=94a8f8f8b4a23 ...
- Linux 使用fdisk添加新分区
Linux系统由于数据累计增长.前期存储规划不合理等诸多因素,出现存储不够用的情况时,此时就需要扩展逻辑分区或添加新的逻辑分区.下面介绍一下通过使用fdsik添加新的逻辑分区. 首先使用df命令检查文 ...
- linux fdisk命令使用
fdisk 对硬盘及分区的操作,进入fdisk 对硬盘操作阶段 我们可以对硬盘进行分区操作,前提是您把fdisk -l 弄明白了:通过fdisk -l ,我们能找出机器中所有硬盘个数及设备名称:比如上 ...
- fdisk分区硬盘并shell脚本自动化
最近工作需要用到对硬盘进行shell脚本自动化分区和mount的操作,google了一些资料,下面做个总结. 如果硬盘没有进行分区(逻辑分区或者扩展分区,关于两者概念,自行google),我们将无法将 ...
- 文件系统管理 之 实例解说 fdisk 使用方法
一.fdisk 的介绍: fdisk - Partition table manipulator for Linux ,译成中文的意思是磁盘分区表操作工具:本人译的不太好,也没有看中文文档:其实就是分 ...
- df、du、fdisk:Linux磁盘管理三板斧的使用心得(转载)
From:http://os.51cto.com/art/201012/240726_all.htm 作者介绍:李洋(博客),博士毕业于中科院计算所.10多年来一直从事计算机网络信息安全研发工作,曾主 ...
随机推荐
- 我给女朋友讲编程html系列(4) -- html常用简单标签
今天似乎有点感冒,浑身无力,在操场上躺了半个小时,好了许多.好了,废话不说了,还是写今天的教程吧. 1,html中的换行标签是 br,写法是: <br /> 2,html中有一些特殊的字符 ...
- 安装配置OPENCMS的Replication cluster(从)详细过程
1. 把opencms.war拷贝到tomcat下的webapps目录,启动tomcat服务. 2. 在安装之前,打开解压缩后的war包目录(tomcat启动后会自动把war包解开),删除目录 $ ...
- Python 获取学校图书馆OAPC账号对应的身份证号码
import urllib.request import urllib.parse import http.cookiejar import re lib_login = 'http://xxx.ed ...
- 笔记本显示器坏了,从硬盘安装win7系统
可以装的,从硬盘安装的话,步骤如下:一.将从网上下载的win7旗舰版ISO系统文件存放到D盘. 二.从网上下载虚拟光驱,打开安装后在任务栏右通知区显示“虚拟DAEMON管理器”图标,在我的电脑窗口显示 ...
- [百度空间] [原]跨平台编程注意事项(三): window 到 android 的 移植
大的问题 先记录一下跨平台时需要注意的大方向. 1.OS和CPU 同一个操作系统, CPU也可能是不一样的, 比如windows也有基于arm CPU的版本,而android目前有x86,arm,mi ...
- WARNING: Calls to any function that may require a gradient calculation inside a conditional block may return undefined results
GLES2.0: Some device will give a warning on compling shaders(yet the compling will succeed), and the ...
- redis 数据库维护之 key 大小获取
获得 redis key 大小 redis 用过一段时间后,发现一个KEY每天需更新值,但总是更新不全,故此为了定位问题,整理此脚本,辅助监控一下 写了两个脚本 注意:需要提前从 https://gi ...
- Javascript学习笔记1 数论
1.Javascript不用担心内存的回收与对象的销毁! 2.Javascript有:±infinity.NaN全局变量表示 被0整除的±无穷 和 非数字.undefined和null表示 未定义 和 ...
- POJ 1419
#include <iostream> #define MAXN 105 #define max _max using namespace std; int j; bool _m[MAXN ...
- IDEA开发spark本地运行
1.建立spakTesk项目,建立scala对象Test 2.Tesk对象的代码如下 package sparkTest /** * Created by jiahong on 15-8-2. */ ...