管理磁盘分区之fdisk详解

Mozatr的不定期更新,处于学习阶段的Mozart,愿不断分享,不断进步。管理磁盘分区之fdisk详解

此次分享一个重要的管理分区命令:fdisk ,我们一一阐述。

(一)分区

首先我们了解下什么是分区,分区是将一个硬盘驱动器分成若干个逻辑驱动器,分区是把硬盘连续的区块当做一个独立的磁盘使用。分区表是一个硬盘分区的索引,分区的信息都会写进分区表。

分区的优点:

    (1)优化I/O性能

    (2)实现磁盘空间配额限制增加磁盘空间使用效率

    (3)提高修复速度

    (4)隔离系统和程序

    (5)安装多个OS  

    (6)采用不同文件系统

    (7)防止数据丢失

等等

(二)分区机制

其次在Linux系统中有MBRGPT两中分区机制,其中MBR的使用比较多,但是有限制。GPT是比MBR更新的一个分区机制。

两者的区别:

    MBRMaster Boot Record)主引导记录,是传统的分区机制,应用于绝大多数使用BIOSPC设备。

    MBR支持32位和64位系统。

    MBR支持分区数量有限。

    MBR只支持不超过2T的硬盘,超过2T的硬盘将只能用2T空间(有第三方解决方法)。

    GPTGUID Partition Table)全局唯一标识分区表,是一个较新的分区机制,解决了MBR很多缺点。

    支持超过2T的磁盘(64位寻址空间)。fdisk最大只能建立2TB大小的分区,创建一个大于2TB的分区使用parted

    向后兼容MBR

    必须在支持uEFI的硬件上才能使用(Intel提出,用于取代BIOS)。

    必须使用64位系统。

    MacLinux系统都能支持GPT分区格式。

    Windows 7/8 64bitWindows Server 2008 64bit支持GPT

总得来说GPTMBR更先进,但是MBR的兼容性比GPT要好。

(三)fdisk 分区管理命令

重点接踵而至:接下来我们对fdisk命令管理磁盘进行详解:

fdisk是对基于MBR机制分区的管理磁盘命令

1 fdisk -l [-u -c …] [disk] 查看磁盘分区情况

CentOS6版本下:

[root@centos6 ~]# fdisk -l /dev/sda     #默认以nondos模式列出磁盘情况
Disk /dev/sda: 214.7 GB, 214748364800 bytes       #磁盘总大小
255 heads, 63 sectors/track, 26108 cylinders          #磁盘“三围”,heads 磁头数 sectors/track 扇区/每磁道 cylinders 柱面数
Units = cylinders of 16065 * 512 = 8225280 bytes   #单位:柱面以及柱面的大小(字节)
Sector size (logical/physical): 512 bytes / 512 bytes   #扇区大小512字节(固定)
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0004b712

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1         131     1048576   83  Linux
Partition 1 does not end on cylinder boundary.   #提示分区1没有在柱面边界结束   (nondos模式与dos模式的区别处)
/dev/sda2             131        6658    52428800   83  Linux
/dev/sda3            6658       13185    52428800   83  Linux
/dev/sda4           13185       26109   103808000    5  Extended
/dev/sda5           13186       13447     2097152   82  Linux swap / Solaris
#具体的分区情况,以柱面为分割
[root@centos6 ~]# fdisk -lc /dev/sda   #以dos模式列出
.........
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1         131     1048576   83  Linux    
/dev/sda2             131        6658    52428800   83  Linux
/dev/sda3            6658       13185    52428800   83  Linux
/dev/sda4           13185       26109   103808000    5  Extended
/dev/sda5           13186       13447     2097152   82  Linux swap / Solaris
[root@centos6 ~]# fdisk -lu /dev/sda   #具体分区情况以字节列出
Disk /dev/sda: 214.7 GB, 214748364800 bytes
255 heads, 63 sectors/track, 26108 cylinders, total 419430400 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: 0x0004b712
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2         2099200   106956799    52428800   83  Linux
/dev/sda3       106956800   211814399    52428800   83  Linux
/dev/sda4       211814400   419430399   103808000    5  Extended
/dev/sda5       211818496   216012799     2097152   82  Linux swap / Solaris

CentOS7版本下:

[root@localhost ~]#fdisk -l /dev/sda  #默认nondos模式列出磁盘情况,具体内容与CentOS6相似,具体分区情况以字节为分割
.......
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     1953791      975872   83  Linux
/dev/sda2         1953792    99608575    48827392   83  Linux
[root@localhost ~]#fdisk -l -c=dos /dev/sda   #以dos模式列出磁盘情况
......
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     1953791      975872   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2         1953792    99608575    48827392   83  Linux
........
[root@localhost ~]#fdisk -l -c=dos -u=cylinder /dev/sda   #具体分区情况以柱面为分割列出
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1         122      975872   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2             122        6201    48827392   83  Linux

补充知识:对于IDE硬盘,每块盘有一个设备名:对应于主板的四个IDE接口,设备名依次为:/dev/hda,/dev/hdb,/dev/hdc,/dev/hdd等,

     如果还有IDE Raid卡,则依次为:/dev/hde,/dev/hdf,/dev/hdg,/dev/hdh

     对于SCSI硬盘,则设备名依次为/dev/sda,/dev/sdb…等等

2fdisk device 管理具体分区

(Centos7下

fdisk device

进入交互模式

常用子命令:

帮助 建立新分区 删除分区 p 预览分区信息
转换分区类型 将指定分区设置/取消为活动分区 L/l 查看分区类型 重建分区表
验证分区表,显示剩余没有被分区划分的扇区数量 创建GPT格式的分区(不建议使用fdisk创建GPT分区) 退出不保存 退出并保存,不保存,所有的修改都不生效

示例:

[root@localhost ~]#fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): p      #预览分区信息

Disk /dev/sdb: 53.7 GB, 53687091200 bytes, 104857600 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 label type: dos
Disk identifier: 0xd0fc70a4

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     2099199     1048576   83  Linux

Command (m for help): n    #创建新分区
Partition type:
   p   primary (1 primary, 0 extended, 3 free)   #创建主分区
   e   extended     #创建扩展分区
Select (default p): p
Partition number (2-4, default 2):    #默认依次创建
First sector (2099200-104857599, default 2099200):    #默认从上一分区结束空间开始
Using default value 2099200
Last sector, +sectors or +size{K,M,G} (2099200-104857599, default 104857599): +1G    #默认分取剩余全部空间,可以以扇区或指定大小分取空间
Partition 2 of type Linux and of size 1 GiB is set

Command (m for help): p

Disk /dev/sdb: 53.7 GB, 53687091200 bytes, 104857600 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 label type: dos
Disk identifier: 0xd0fc70a4

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     2099199     1048576   83  Linux
/dev/sdb2         2099200     4196351     1048576   83  Linux

Command (m for help): w     #保存并退出
The partition table has been altered!   #显示分区表已经修改

Calling ioctl() to re-read partition table.     #显示分区情况已经同步到磁盘,分区完成。
Syncing disks.

fdisk命令使用注意事项:

1fdisk命令只有root用户权限才能够运行;

2)使用fdisk -l 可以实时列出所有安装的磁盘及其分区信息;

3)使用fdisk /dev/sdb 可以对目标磁盘进行交互式分区操作;

(4)查看分区实时更新信息:cat /proc/partitions

(5)管理分区之后需要使用partprobe(CentOS7)命令让内核更新分区信息,否则需要重启才能识别新的分区或者参看(6);(CentOS6中partprobe命令存在bug)

(6)通知内核重新读取硬盘分区表(不用重启) (CentOS6/7通用)

    新增分区用 

    partx -a DEVICE 

    删除分区用

    partx -d –nr M-N DEVICE

示例:当对系统所在磁盘进行添加删除分区时,会提示:

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.   #无法同步分区表

此时,可以选择重启电脑或者进行如下操作(CentOS6/7通用):

对于添加分区:

[root@localhost ~]#partx -a /dev/sda       #告诉内核当前磁盘分区情况
#同步完成

对于删除分区:

[root@localhost ~]#partx -d --nr n /dev/sda    #n:删除的分区号 支持范围更新n-m

fdisk命令到此已全部介绍完毕,以上示例均亲测有效,不足之处请大家多多谅解,同时欢迎大佬指教。管理磁盘分区之fdisk详解管理磁盘分区之fdisk详解管理磁盘分区之fdisk详解

PS:博文写到最后,只想说一句话:第一次感觉英语这么有用!!!

原创文章,作者:Mozart,如若转载,请注明出处:http://www.178linux.com/84971

(7)
MozartMozart
上一篇 2017-08-19
下一篇 2017-08-19

相关推荐

  • 用户和组的简介

     在第二周的学习中,关于用户和组是一个难点,也是重点,本篇博客则是对用户和组的简单阐述,如有错误或不足还请各位大牛指出,在此谢过! 1、用户 # 1.1用户的定义      通过前面对Linux 多用户的理解,我们明白Linux 是真正意义上的多用户操作系统,所以我们能在Linux系统中建若干用户(…

    Linux干货 2017-07-22
  • linux终端的类型与linux发展历史

    一、linux console的类型与说明 说明:        1 由于虚拟终端的实现,人们可以多用户多任务的在一台计算机操作系统上工作             2 在80或90年代的旧电脑上,人们只能用分屏这样的方法来实现多用户,多任务的工作  …

    Linux干货 2013-07-03
  • LVM(逻辑卷管理)

    LVM 逻辑卷管理 概述:      LVM是将一个或多个硬盘的分区在逻辑上集合,相当于一个大硬盘来使用,当硬盘的空间不够使用的时候,可以继续将其它的硬盘的分区加入其中,这样可以实现磁盘空间的动态管理,相对于普通的磁盘分区有很大的灵活性。与传统的磁盘与分区相比,LVM为计算机提供了更高层次的磁盘存储。它使系统管理员可以更方便的为…

    Linux干货 2016-09-05
  • find文件:就是这么简单

    概述 由于Linux一切皆文件,我们的日常运维工作其实就是与文件打交道的事,如何能够快速而有效地找到我们需要的文件呢?这是个令人头疼的问题。幸运是,Linux为用户提供了强大的查找工具——find。find通过遍历指定路径完成文件查找,它的的工作特点: 精确查找——多查询条件组合,精确匹配; 实时查找——遍历指定路径; 查找速度稍慢——由于需要遍历路径,速度…

    Linux干货 2016-08-18
  • 几个有意思的小脚本

    ①.用脚本画一个圣诞树 效果 ②.用脚本画一个类似国际象棋的棋盘 半成品效果 再像这样在下面多写几个循环,就可以了,我这个方法太笨,全写完要截图的太多,就放一部分意思下 ③.编写一个脚本,打印出九九乘法表 效果 ④.编写一个脚本,可接收一个 1-7 的数字作为参数,用 if 和 case 两种方法实现根据输入的数字输出对应星期的英文 用if的方法 用case…

    2017-05-11
  • 软链接和硬链接详解

    软连接和硬链接图解 硬链接 符号链接 软链接和硬链接详解 软链接和硬链接详解 Linux下的链接文件有点类似于Windows的快捷方式,但又不完全一样。链接文件有两种:一种是硬链接,另一种是符号链接(又称软链接)。 UNIX文件系统提供了一种将不同文件链接至同一个文件的机制,我们称这种机制为链接。它可以使得单个程序对同一文件使用不同的名字。这样的好处是文件系…

    Linux干货 2016-09-06