fdisk和parted的区别

释放双眼,带上耳机,听听看~!

Linux系统中有两个分区工具

  • fdisk
  • parted

二者都可以对linux的硬盘进行分区,但是二者从细节上来说,又有很大的区别,如果不加注意,有可能造成磁盘空间的浪费。

首先我们来介绍一下磁盘,Linux系统中,每个磁盘中有一部分叫做MBR主引导记录。

**

MBR

**

  • 大小512字节,分为三部分
  • 主引导程序:446字节
  • 硬盘分区表:64字节
  • 分区结束标记(硬盘有效位):2字节

fdisk和parted的区别

fdisk和parted的区别

其中硬盘分区表DPT需要特别注意

DPT的大小是64字节,每个主分区要占用16字节,扩展分区也要占用16个字节的主分区空间,所以每个磁盘上最多只能建立四个主分区

fdisk和parted的区别

那么如果需要将磁盘分成5个或者更多个分区的话,可以采取的方法:

  • 创建一到三个主分区,将剩下的空间作为扩展分区,由扩展分区分出多个逻辑分区
  • 不创建主分区,全做磁盘作为扩展分区,由扩展分区分出来多个逻辑分区

接下来就是如何使用fdisk和parted进行分区

单纯的使用这两个工具去进行硬盘分区倒没什么难点,两者都是交互式的界面,如果忘记如何分区,可以进入交互之后使用h或者help查看帮助。

但是在使用二者进行分区的时候,就需要注意一些区别:

1、fdisk

(1)fdisk命令只支持msdos,分区的时候只支持小容量硬盘(<=2T),但是如果不需要分区的话,那么整块sdb硬盘,类型为msdos,那么他的大小是可以大于2T的。
(2)fdisk命令不支持gpt,所以当使用fdisk命令给gpt类型硬盘分区是会出现告警,就像下面例子中的WARNING


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
1[root@centos6 ~]# fdisk /dev/sdc
2
3WARNING: GPT (GUID Partition Table) detected on &#x27;/dev/sdc&#x27;! The util fdisk doesn&#x27;t support GPT. Use GNU Parted.
4
5
6WARNING: The size of this disk is 5.4 TB (5368709120000 bytes).
7DOS partition table format can not be used on drives for volumes
8larger than (2199023255040 bytes) for 512-byte sectors. Use parted(1) and GUID
9partition table format (GPT).
10
11
12WARNING: DOS-compatible mode is deprecated. It&#x27;s strongly recommended to
13         switch off the mode (command &#x27;c&#x27;) and change display units to
14         sectors (command &#x27;u&#x27;).
15
16Command (m for help):
17
18

(3)当使用parted命令给一个5T的硬盘分好三个分区之后,在使用fdisk命令查看,会不兼容(parted打印的分区有三个,而fdisk命令打印的分区只有一个)


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
1[root@centos6 ~]# parted /dev/sdc print
2Model: VMware, VMware Virtual S (scsi)
3Disk /dev/sdc: 5369GB
4Sector size (logical/physical): 512B/512B
5Partition Table: gpt
6
7Number  Start  End  Size  File system  Name  Flags
8
9[root@centos6 ~]# parted /dev/sdc
10GNU Parted 2.1
11Using /dev/sdc
12Welcome to GNU Parted! Type &#x27;help&#x27; to view a list of commands.
13(parted) mkpart a 1 100G
14(parted) mkpart b 100G 500G                                              
15(parted) mkpart c 500G 2000G
16(parted) print                                                            
17Model: VMware, VMware Virtual S (scsi)
18Disk /dev/sdc: 5369GB
19Sector size (logical/physical): 512B/512B
20Partition Table: gpt
21
22Number  Start   End     Size    File system  Name  Flags
23 1      1049kB  100GB   100GB   ext4         a
24 2      100GB   500GB   400GB                b
25 3      500GB   2000GB  1500GB               c
26
27(parted) quit                                                            
28Information: You may need to update /etc/fstab.                          
29
30[root@centos6 ~]# fdisk -l /dev/sdc
31
32WARNING: GPT (GUID Partition Table) detected on &#x27;/dev/sdc&#x27;! The util fdisk doesn&#x27;t support GPT. Use GNU Parted.
33
34
35Disk /dev/sdc: 5368.7 GB, 5368709120000 bytes
36255 heads, 63 sectors/track, 652708 cylinders
37Units = cylinders of 16065 * 512 = 8225280 bytes
38Sector size (logical/physical): 512 bytes / 512 bytes
39I/O size (minimum/optimal): 512 bytes / 512 bytes
40Disk identifier: 0x00000000
41
42   Device Boot      Start         End      Blocks   Id  System
43/dev/sdc1               1      267350  2147483647+  ee  GPT
44[root@centos6 ~]#
45
46

2、parted:

(1)支持msdos和gpt,可以支持大硬盘,也支持小硬盘。
(2)区分parted命令给msdos类型和gpt类型硬盘分区的不同:
①下面是parted给msdos类型硬盘分区:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1[root@centos6 ~]# parted /dev/sdb
2GNU Parted 2.1
3Using /dev/sdb
4Welcome to GNU Parted! Type &#x27;help&#x27; to view a list of commands.
5(parted) print        
6Model: VMware, VMware Virtual S (scsi)
7Disk /dev/sdb: 53.7GB
8Sector size (logical/physical): 512B/512B
9Partition Table: msdos
10
11Number  Start  End  Size  Type  File system  Flags
12
13(parted) mkpart aaa 1 10G          使用mkpart添加分区
14parted: invalid token: aaa         显示无效的输入
15Partition type?  primary/extended? primary            这里要求选择分区类型(主分区/扩展分区?)先创建一个主分区                    
16File system type?  [ext2]? ext4                 这里提醒确定文件系统的类型,输入ext4                          
17Start? 1                                        分区的开始:1                        
18End? 10G                                        分区结束:10G那么就确定了分区是一个10G大小的分区                        
19(parted) print                                  print打印分区表                          
20Model: VMware, VMware Virtual S (scsi)
21Disk /dev/sdb: 53.7GB
22Sector size (logical/physical): 512B/512B
23Partition Table: msdos
24
25Number  Start   End     Size    Type     File system  Flags
26 1      1049kB  10.0GB  9999MB  primary
27                                                       这里可以看到一个大小为10G,类型为主分区的文件系统已经创建完成                                  
28(parted)
29
30

②下面是parted给gpt类型硬盘分区:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
1[root@centos6 ~]# parted /dev/sdc print
2Model: VMware, VMware Virtual S (scsi)
3Disk /dev/sdc: 5369GB
4Sector size (logical/physical): 512B/512B
5Partition Table: gpt
6
7Number  Start  End  Size  File system  Name  Flags
8
9[root@centos6 ~]# parted /dev/sdc
10GNU Parted 2.1
11Using /dev/sdc
12Welcome to GNU Parted! Type &#x27;help&#x27; to view a list of commands.
13(parted) mkpart a 1 100G
14(parted) mkpart b 100G 500G                                              
15(parted) mkpart c 500G 2000G
16(parted) print                                                            
17Model: VMware, VMware Virtual S (scsi)
18Disk /dev/sdc: 5369GB
19Sector size (logical/physical): 512B/512B
20Partition Table: gpt
21
22Number  Start   End     Size    File system  Name  Flags
23 1      1049kB  100GB   100GB   ext4         a
24 2      100GB   500GB   400GB                b
25 3      500GB   2000GB  1500GB               c
26
27(parted)
28
29

3、msdos

  • 支持小于2T的硬盘,不支持大于2T的硬盘
  • 有主分区,扩展分区,逻辑分区
  • 如果使用fdisk命令给一个大于2T的msdos类型硬盘分区,只能给2T的部分分区,超过2T的部分不能使用,也就浪费了。

4、gpt

  • 支持大小容量的硬盘
  • 不区分主分区,扩展分区,逻辑分区,也没有4个分区数量的限制

5 命令详解

fdisk命令建立分区
用途:在交互式的操作环境中管理磁盘分区
格式:fdisk [磁盘设备]
可以通过fdisk -l查看硬盘
交互模式中的常用指令
m:查看操作指令的帮助信息
p:列表查看分区信息
n:新建分区
d:删除分区
t:变更分区类型
w:保存分区设置并退出
q:放弃分区设置并退出


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
1[root@mysql_glbic ~]# fdisk /dev/sdb
2Command (m for help): m   #通过m查看帮助
3Command action
4   a   toggle a bootable flag
5   b   edit bsd disklabel
6   c   toggle the dos compatibility flag
7   d   delete a partition
8   l   list known partition types
9   m   print this menu
10   n   add a new partition
11   o   create a new empty DOS partition table
12   p   print the partition table
13   q   quit without saving changes
14   s   create a new empty Sun disklabel
15   t   change a partition&#x27;s system id
16   u   change display/entry units
17   v   verify the partition table
18   w   write table to disk and exit
19   x   extra functionality (experts only)
20
21Command (m for help): n        #新建一个分区
22Command action
23   e   extended
24   p   primary partition (1-4)
25p                                 #选择类型
26Partition number (1-4): 1
27First cylinder (1-2610, default 1):
28Using default value 1
29Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): +20M   #给分区设置大小          
30
31Command (m for help): p                      #打印分区信息进行查看
32
33   Device Boot      Start         End      Blocks   Id  System
34/dev/sdb1               1           4       32098+  83  Linux
35
36Command (m for help): w                 #保存退出
37The partition table has been altered!
38
39

当分区设置好时我们可以通过格式化创建一个文件系统,挂载到一个空目录就可以使用了
创建文件系统(格式化)
mkfs.ext4 /dev/sdb1 (格式化一个分区)
挂载文件系统
mount /dev/sdb1 挂载点
挂载点是一个空目录就可以了
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
parted命令
格式:parted 磁盘或分区
parted也是交互式的
我们可以通过help查看命令帮助
1、先创建分区表(mktable msdos/gpt)
mklabel,mktable LABEL-TYPE create a new disklabel (partition table)


1
2
3
1  mktable gpt  #创建一个gpt类型的分区表
2
3

2、创建分区
mkpart PART-TYPE [FS-TYPE] START END make a partition


1
2
3
1 (parted) mkpart abc 1 200          #abc为随意起的名称  指定分区的起始和结束位置
2
3

用parted分区会将分区信息自动保存,退出就可以了
3、格式化,创建文件系统
mkfs.ext4 /dev/sdc1

例子


1
2
3
4
5
6
7
8
9
10
11
12
1~$sudo parted /dev/sdb                               //选择硬盘
2GNUParted 2.3
3Using /dev/sdb
4Welcome to GNU Parted! Type &#x27;help&#x27; to view a lis ofcommands。
5(parted) mklabel gpt                                 //类型GPT  
6
7Warning: The existing disk label on /dev/sdb will be destroyedand all data on this disk will be lost. Do you want to continue?Yes/No? y        //确定
8
9(parted) mkpart  prinmary 1  -1              //将硬盘分成一个分区  
10(parted) print                                           //查看
11(parted) quit  //退出
12

给TA打赏
共{{data.count}}人
人已打赏
安全技术安全运维

Windows服务器如何发现被黑

2018-5-20 12:24:31

安全技术

详解Node.js API系列C/C++ Addons(1) API文档

2021-12-21 16:36:11

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索