Menu Close

使用parted命令对磁盘分区

1. MBR 分区表与GPT 分区表

MBR是传统格式的分区表,在硬盘容量越来越大的今天,MBR先天的一些不足,导致MBR分区表不能很好的管理大容量硬盘;GPT是新一代格式的分区表,在很多方面,特别是在处理大容量硬盘方面,比MBR好很多。目前使用MBR分区表的硬盘,可能在数量上比使用GPT分区表的要多一些,但是看发展的趋势,使用GPT分区表的情况会越来越多。

1.1. MBR 分区表

使用MBR分区表时,分区分为主分区、扩展分区、逻辑分区,三种类型。

  • 主分区:可以在硬盘上直接创建主分区,创建后的主分区可以直接使用,用于存储与读取数据;
  • 扩展分区:可以在硬盘上直接创建扩展分区,创建后的扩展分区不可以直接使用,必须在扩展分区上再创建逻辑分区,才能在逻辑分区上存储与读取数据;
  • 逻辑分区:不可以在硬盘上直接创建逻辑分区,必须在硬盘上先创建扩展分区后,再在扩展分区上创建逻辑分区,逻辑分区创建后就可以使用了。

MBR分区表在使用上有一些限制,正是因为这些限制,制约了MBR分区表的性能,使之不能很好的处理大容量硬盘.

  1. 主分区的总数,不能超过4个。就是说,一个硬盘,最多可以被划分为4个主分区。
  2. 如果划分扩展分区,那么,一个硬盘只能有一个扩展分区,且主分区与扩展分区的分区数目之和不能超过4个,就是说,一个硬盘,最多可以被划分为3个主分区与1个扩展分区。
  3. 在扩展分区中创建逻辑分区的数目没有限制,只要需要,可以创建任意多个逻辑分区。事实上,是微软公司在MBR分区表中引入扩展分区与逻辑分区的概念,目的就是要突破MBR最多只能划分四个主分区的限制。
  4. 任何分区,包括主分区、扩展分区、逻辑分区,分区的大小,都不能超过2TB,这是一条使得MBR分区表不能很好的处理大容量硬盘的限制。
  5. 任何分区,其起始地址,不能位于硬盘物理地址2TB之后,实际情况是,不仅是起始地址,结束地址在硬盘物理地址2TB之后的分区,也会导致很多严重的问题。这条限制直接宣告MBR不适合于管理超过2TB的大容量硬盘。
  6. UEFI对MBR分区表支持不好,UEFI是新一代的BIOS,现在的新电脑,不论是台式机还是笔记本,都开始支持UEFI了。

如果你电脑的硬盘容量小于2TB,并且不使用UEFI,MBR其实是一个很优秀的分区表格式,它简单易用,稳定高效。而且MBR分区表的兼容性特别好,全系Windows,包括Windows 7、8、10,包括32位与64位的Windows,都能很好的在MBR分区表下安装与运行。

通常使用MBR分区表的硬盘,都是分一个主分区,余下空间都分配给一个扩展分区,再根据需要在扩展分区上划分多个逻辑分区。

1.2. GPT 分区表

如果你电脑硬盘的容量超过了2TB,或者你电脑使用了UEFI,那么,GPT分区表更适合您的需求。GPT是新一代分区表格式,能很好的管理大容量硬盘,很好的与UEFI相配合。

关于GPT分区表,本文不介绍其技术细节,事实上GPT分区表比MBR要复杂很多。本文只介绍使用GPT分区表时需要知道的一些知识,以及一些注意事项。

  1. GPT分区表,没有扩展分区与逻辑分区的概念,所有分区都是主分区。
  2. GPT分区表,一个物理硬盘,在Windows下最多可以划分出128个分区,应该是足够用了。
  3. GPT分区表,每个分区的最大容量是18EB(1EB = 1024PB = 1,048,576TB),这么大,不用考虑硬盘容量太大的问题了。
  4. GPT分区表,与使用UEFI的新计算机配合的非常好,但使用BIOS的老机器,会出一些问题,不建议使用。
  5. GPT分区表对新的Windows操作系统,比如Windows 7、8、10,都支持的非常好,但只支持64位的Windows XP。

GPT分区在使用上的一些注意事项,基本上就是这么多。GPT分区最大的好处就是,支持大容量硬盘,支持UEFI。

2. parted用途及说明

2.1. 概括使用说明

parted用于对磁盘(或RAID磁盘)进行分区及管理,与fdisk分区工具相比,支持2TB以上的磁盘分区,并且允许调整分区的大小。

2.2. GNU手册说明

parted是一个用于硬盘分区或调整分区大小的工具。使用它你可以创建、清除、调整、移动和复制ext2、ext3、linux-swap、FAT、FAT32和reiserfs分区;也能创建、调整和移动苹果系统的HFS分区;还能检测jfs、ntfs、ufs和xfs分区。该工具常用于为新安装的操作系统创建空间,重新分配硬盘使用情况,在将数据拷贝到新硬盘的时候也常常使用。

3. parted的使用方法及步骤

3.1. parted安装

yum install -y parted

3.2. parted常见的交互命令

parted交互命令 说 明

4. 操作实例

4.1. 选择需要分区的硬盘

首先类似fdisk一样,先选择要分区的硬盘,此处为/dev/sdb: ((parted)表示在parted中输入的命令,其他为自动打印的信息)

~]# parted /dev/sdb
GNU Parted 3.1
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.

4.2. 创建分区表

(parted) mklabel gpt 设置分区类型为 gpt 分区表
Warning: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost. Do you want to continue?
Yes/No? yes 现有的磁盘分区 /dev/sdb 将被破坏,该磁盘上的所有数据都将丢失。 你要继续吗?
(parted) p 查看所有分区, p=print
Model: IBM ServeRAID M5210 (scsi)
Disk /dev/sdb: 1797GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number Start End Size File system Name Flags

4.3. 创建分区

创建好分区表以后,接下来就可以进行分区操作了,执行mkpart命令,分别输入分区名称,文件系统和分区的起止位置。创建分区时可以按容量、按百分比进行分区,另外还可以根据扇区数进行分区。

  • 按容量分区:

(parted) mkpart 创建新分区
Partition name? []? part1 给分区设置一个名字
File system type? [ext2]? xfs 定义分区格式
Start? 0 定义分区的起始位置(单位支持K,M,G,T)
End? 100GB 定义分区的结束位置(单位支持K,M,G,T)
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel? ignore 分区没有对齐
(parted) p
Model: IBM ServeRAID M5210 (scsi)
Disk /dev/sdb: 1797GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number Start End Size File system Name Flags
1 17.4kB 100GB 100GB part1

  • 按容量百分比分区:

(parted) mkpart 创建新分区
Partition name? []? part1 给分区设置一个名字
File system type? [ext2]? xfs 定义分区格式
Start? 0% 定义分区的起始位置(磁盘容量百分比)
End? 5% 定义分区的结束位置(磁盘容量百分比)
(parted) p
Model: IBM ServeRAID M5210 (scsi)
Disk /dev/sdb: 1797GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number Start End Size File system Name Flags
1 1049kB 89.9GB 89.8GB part1

或者简写成:
(parted) mkpart part1 xfs 0% 5%

4.4. 使用 toggle 更改硬盘类型

(parted) toggle 1 lvm 切换分区 1 上的 FLAG 状态为lvm
(parted) p
Model: IBM ServeRAID M5210 (scsi)
Disk /dev/sdb: 1797GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number Start End Size File system Name Flags
1 17.4kB 100GB 100GB part1 lvm

4.5. 删除分区

(parted) p
Model: IBM ServeRAID M5210 (scsi)
Disk /dev/sdb: 1797GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number Start End Size File system Name Flags
1 17.4kB 100GB 100GB part1 lvm
2 100GB 1797GB 1697GB part2 lvm

(parted) rm 2 rm NUMBER 删除编号为2的分区
(parted) p
Model: IBM ServeRAID M5210 (scsi)
Disk /dev/sdb: 1797GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number Start End Size File system Name Flags
1 17.4kB 100GB 100GB part1 lvm

4.6. 重读分区表

创建分区并且在不重新启动机器的情况下让系统识别这些分区。

~]# partprobe /dev/sdb

4.7. 查看分区

~]# lsblk /dev/sdb
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sdb      8:16   0  1.6T  0 disk
├─sdb2   8:18   0  1.6T  0 part
└─sdb1   8:17   0 83.7G  0 part

5. 使用LVM管理磁盘

5.1. 创建pv

~]# pvcreate /dev/sdb1
  Physical volume "/dev/sdb1" successfully created.

~]# pvs
  PV         VG Fmt  Attr PSize   PFree
  /dev/sda2  ol lvm2 a--  557.39g    0
  /dev/sdb1     lvm2 ---    1.63t 1.63t

移除pv

pvremove /dev/mapper/mpathi1

5.2. 创建vg

~]# vgcreate vgoradata /dev/sdb1
  Volume group "vgoradata" successfully created

~]# vgs  [vgname]
  VG        #PV #LV #SN Attr   VSize   VFree
  ol          1   2   0 wz--n- 557.39g    0
  vgoradata   1   0   0 wz--n-   1.63t 1.63t

删除vg

vgremove vgoradata

5.3. 创建lv

~]# lvcreate -n lvoradata -L 200G vgoradata
  Logical volume "lvoradata" created.
~]# lvcreate --name lvorabak -l 100%FREE vgoradata
  Logical volume "lvorabak" created.
~]# lvs
  LV        VG        Attr       LSize    Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root      ol        -wi-ao---- <540.63g
  swap      ol        -wi-ao----  <16.77g
  lvorabak  vgoradata -wi-a-----   <1.44t
  lvoradata vgoradata -wi-a-----  200.00g

移除lv

lvremove /dev/mapper/vgoradata-lvoradata

5.4. 创建文件系统

~]# mkfs.xfs /dev/vgoradata/lvoradata
~]# mkfs.xfs /dev/vgoradata/lvorabak

5.5. 挂载文件系统

~]# mkdir /oradata
~]# mkdir /orabak
~]# mount /dev/vgoradata/lvoradata  /oradata/
~]# mount /dev/vgoradata/lvorabak  /orabak/
~]# df -h
Filesystem                       Size  Used Avail Use% Mounted on
/dev/mapper/vgoradata-lvoradata  200G   33M  200G   1% /oradata
/dev/mapper/vgoradata-lvorabak   1.5T   33M  1.5T   1% /orabak

5.6. 修改/etc/fstab

 ~]# vim /etc/fstab
/dev/mapper/vgoradata-lvoradata /oradata        xfs     defaults        0 0
/dev/mapper/vgoradata-lvorabak /orabak          xfs     defaults        0 0

#从/etc/fstab文件中重新挂载文件系统
 ~]# mount -a

也可以使用UUID

~]# blkid
/dev/mapper/vgoradata-lvoradata: UUID="182da21f-a5bc-4081-a8be-e1925b98e79b" TYPE="xfs"
/dev/mapper/vgoradata-lvorabak: UUID="e9792967-1bbf-4257-b175-e4674e6a99d0" TYPE="xfs"
~]# lsblk /dev/sdb
NAME                    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sdb                       8:16   0  1.6T  0 disk
└─sdb1                    8:17   0  1.6T  0 part
  ├─vgoradata-lvoradata 252:4    0  200G  0 lvm  /oradata
  └─vgoradata-lvorabak  252:5    0  1.4T  0 lvm  /orabak