Linux磁盘分区

一.硬盘接口类型

硬盘接口类型有IDE、SATA、SCSI等

1.1 磁盘的分区格式:
MBR:主启动记录(Master Boot Record,缩写:MBR)

GPT:唯一标识分区表(GUID Partition Table,缩写: GPT)

分区格式全称支持最大卷大小分区数分区工具
MBR主启动记录(Master Boot Record,缩写:MBR)2.2TB

最多4个主分区,或者3个主分区1个扩展分区;扩展分区最多只能有1个;

2≤主分区+扩展分区≤4;

fdisk

parted

GPT唯一标识分区表(GUID Partition Table,缩写: GPT)18EB可以有多达128个分区

gdisk

parted

fdisk -l 命令查看linux磁盘的分区类型;若显示结果中的“disk label type”的值为dos则分区是mbr,若该结果的值为gpt则分区是gpt;

df -Th:查看文件详细信息和文件系统类型

fdisk -l : 列出所有支持的分区类型

lsblk :  查看系统所有磁盘信息

1.2 主分区数量限制

MBR分区方案最大的限制在于主分区数量不能超过4个。这意味着在一个MBR分区的硬盘上,用户只能创建4个主分区,或者3个主分区加1个扩展分区(扩展分区内可以创建多个逻辑分区,必须在扩展分区上建立逻辑分区才能存放数据)。而GPT分区方案则几乎取消了分区数量的限制,理论上可以创建无限多个分区,但实际操作中会受到操作系统的限制,例如在Windows操作系统下,GPT分区最多支持128个分区。

1.3 硬盘容量支持

MBR分区方案使用32位的LBA(逻辑块寻址)寻址方式,因此最大支持的硬盘容量为2TB。这意味着当硬盘容量超过2TB时,MBR分区方案将无法充分利用硬盘的全部容量。而GPT分区方案则采用64位LBA寻址方式,支持最大容量为9.4ZB(即 94亿 TB )的硬盘。这使得GPT分区方案能够充分利用现代大容量硬盘的存储空间。

二.硬盘命名

IDE(并口):/dev/hda、/dev/hdb

SATA(串口)、SCSI(串口):/dev/sda、/dev/sdb ;/dev设备文件目录、sda是一个文件、s代表sata就是串口、d代表磁盘、a第一块,b第二块;sda1代表第一块磁盘(硬盘)的第一个分区;

       一台主机上可以有多块硬盘,因此系统采用a~p来代表16块不同的硬盘(默认从a开始分配),而且硬盘的分区编号也有如下规定:主分区或扩展分区的编号从1开始,到4结束;逻辑分区从编号5开始。

       /dev/目录中保存的应当是硬件设备文件;sd表示是存储设备,a表示系统中同类接口中第一个被识别到的设备,5表示这个设备是一个逻辑分区。基于上述,“/dev/sda5”表示的就是“这是系统中第一块被识别到的硬件设备中分区编号为5的逻辑分区的设备文件”。

三. 文件系统

ext4文件系统(主流):日志记录功能,当意外宕机了,可以通过日志记录把没有保存的数据,在系统再次重启时快速回复过来。单个文件系统最大支持1EB的分区容量,单个文件最大可以存储16TB数据。Centos6默认ext4文件系统。

xfs文件系统:日志记录功能,数据恢复时比ext4文件快,单个文件系统最大支持8EB分区容量,单个文件最大可存储500TB数据,每个文件每秒读写数据速度可以达到4G.。Centos7默认xfs文件系统。

swap文件系统:交换分区,硬盘空间去充当内存使用。

四.分区工具

分区三部曲:分区-->格式化-->挂载mount 

1、分区

linux分区工具有 fdisk, gdisk, parted.

1.1 fdisk命令

fdisk命令(format disk)用于新建、修改及删除磁盘的分区表信息,语法格式为 fdisk  磁盘名称,它和大多数普通linux命令不同的是,它是一个交互式的命令,键入命令fdisk  /dev/sda,进入交互界面。

[root@192 ~]# fdisk /dev/sda
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.

   a   toggle a bootable flag                                    # 切换可启动标志
   b   edit bsd disklabel                         # 编辑磁盘标记
   c   toggle the dos compatibility flag              # 切换dos兼容标志
   d   delete a partition                      # 删除一个分区
   g   create a new empty GPT partition table                  # 创建一个空的GPT分区表
   G   create an IRIX (SGI) partition table                    # 创建一个IRIX分区表
   l   list known partition types                  # 列出已知的分区类型
   m   print this menu                        # 打印菜单                   
   n   add a new partition                                       # 添加一个分区
   o   create a new empty DOS partition table                    # 创建一个空的DOS分区表
   p   print the partition table                                 # 打印分区表
   q   quit without saving changes                               # 退出不保存
   s   create a new empty Sun disklabel                          # 创建一个空的sun磁盘标签
   t   change a partition's system id                            # 改变一个分区的类型
   u   change display/entry units                                # 改变显示的单位
   v   verify the partition table                                # 验证分区表
   w   write table to disk and exit                              # 写分区表并退出
   x   extra functionality (experts only)                        # 高级功能

Command (m for help): 

例子: 使用fdisk工具给/dev/sdb(10G)分区满足下面几个要求

  • 3个主分区一个扩展分区
  • /dev/sdb1分区类型为Linux LVM,大小为3G
  • /dev/sdb2分区类型为swap,大小为2G
  • /dev/sdb3分区类型为Linux, 大小为1G
  • /dev/sdb5分区类型为linux,大小为1G
  • 保留4G留作后用

 a. 虚拟机新建10G硬盘

b. 开机启动,用命令lsblk查看,发现多了一个sdb的10G硬盘

[root@192 ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   20G  0 disk 
├─sda1   8:1    0  200M  0 part /boot
├─sda2   8:2    0    2G  0 part [SWAP]
└─sda3   8:3    0   10G  0 part /
sdb      8:16   0   10G  0 disk 
sr0     11:0    1  4.4G  0 rom  /run/media/shuai/CentOS 7 x86_64

c. 给/dev/sdb硬盘分区

[root@192 ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0x9a651304 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
# 分区号默认1,这里使用分区号1,所以直接点回车就行
分区号 (1-4,默认 1):
# 扇区的起始值默认2048,所以直接点回车就行
起始 扇区 (2048-20971519,默认为 2048):
将使用默认值 2048
# +3G表示给sdb1分区分大小为3G的空间
Last 扇区, +扇区 or +size{K,M,G} (2048-20971519,默认为 20971519):+3G
分区 1 已设置为 Linux 类型,大小设为 3 GiB

命令(输入 m 获取帮助):n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): p
分区号 (2-4,默认 2):
起始 扇区 (6293504-20971519,默认为 6293504):
将使用默认值 6293504
Last 扇区, +扇区 or +size{K,M,G} (6293504-20971519,默认为 20971519):+2G 
分区 2 已设置为 Linux 类型,大小设为 2 GiB

命令(输入 m 获取帮助):n
Partition type:
   p   primary (2 primary, 0 extended, 2 free)
   e   extended
Select (default p): p
分区号 (3,4,默认 3):
起始 扇区 (10487808-20971519,默认为 10487808):
将使用默认值 10487808
Last 扇区, +扇区 or +size{K,M,G} (10487808-20971519,默认为 20971519):+1G
分区 3 已设置为 Linux 类型,大小设为 1 GiB

命令(输入 m 获取帮助):n
Partition type:
   p   primary (3 primary, 0 extended, 1 free)
   e   extended
Select (default e): e
已选择分区 4
起始 扇区 (12584960-20971519,默认为 12584960):
将使用默认值 12584960
Last 扇区, +扇区 or +size{K,M,G} (12584960-20971519,默认为 20971519):
将使用默认值 20971519
分区 4 已设置为 Extended 类型,大小设为 4 GiB

命令(输入 m 获取帮助):n
All primary partitions are in use
添加逻辑分区 5
起始 扇区 (12587008-20971519,默认为 12587008):
将使用默认值 12587008
Last 扇区, +扇区 or +size{K,M,G} (12587008-20971519,默认为 20971519):+1G
分区 5 已设置为 Linux 类型,大小设为 1 GiB

命令(输入 m 获取帮助):p

磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x9a651304

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     6293503     3145728   83  Linux
/dev/sdb2         6293504    10487807     2097152   83  Linux
/dev/sdb3        10487808    12584959     1048576   83  Linux
/dev/sdb4        12584960    20971519     4193280    5  Extended
/dev/sdb5        12587008    14684159     1048576   83  Linux

命令(输入 m 获取帮助):t
分区号 (1-5,默认 5):1
Hex 代码(输入 L 列出所有代码):L

 0  空              24  NEC DOS         81  Minix / 旧 Linu bf  Solaris        
 1  FAT12           27  隐藏的 NTFS Win 82  Linux 交换 / So c1  DRDOS/sec (FAT-
 2  XENIX root      39  Plan 9          83  Linux           c4  DRDOS/sec (FAT-
 3  XENIX usr       3c  PartitionMagic  84  OS/2 隐藏的 C:  c6  DRDOS/sec (FAT-
 4  FAT16 <32M      40  Venix 80286     85  Linux 扩展      c7  Syrinx         
 5  扩展            41  PPC PReP Boot   86  NTFS 卷集       da  非文件系统数据 
 6  FAT16           42  SFS             87  NTFS 卷集       db  CP/M / CTOS / .
 7  HPFS/NTFS/exFAT 4d  QNX4.x          88  Linux 纯文本    de  Dell 工具      
 8  AIX             4e  QNX4.x 第2部分  8e  Linux LVM       df  BootIt         
 9  AIX 可启动      4f  QNX4.x 第3部分  93  Amoeba          e1  DOS 访问       
 a  OS/2 启动管理器 50  OnTrack DM      94  Amoeba BBT      e3  DOS R/O        
 b  W95 FAT32       51  OnTrack DM6 Aux 9f  BSD/OS          e4  SpeedStor      
 c  W95 FAT32 (LBA) 52  CP/M            a0  IBM Thinkpad 休 eb  BeOS fs        
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a5  FreeBSD         ee  GPT            
 f  W95 扩展 (LBA)  54  OnTrackDM6      a6  OpenBSD         ef  EFI (FAT-12/16/
10  OPUS            55  EZ-Drive        a7  NeXTSTEP        f0  Linux/PA-RISC  
11  隐藏的 FAT12    56  Golden Bow      a8  Darwin UFS      f1  SpeedStor      
12  Compaq 诊断     5c  Priam Edisk     a9  NetBSD          f4  SpeedStor      
14  隐藏的 FAT16 <3 61  SpeedStor       ab  Darwin 启动     f2  DOS 次要       
16  隐藏的 FAT16    63  GNU HURD or Sys af  HFS / HFS+      fb  VMware VMFS    
17  隐藏的 HPFS/NTF 64  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE 
18  AST 智能睡眠    65  Novell Netware  b8  BSDI swap       fd  Linux raid 自动
1b  隐藏的 W95 FAT3 70  DiskSecure 多启 bb  Boot Wizard 隐  fe  LANstep        
1c  隐藏的 W95 FAT3 75  PC/IX           be  Solaris 启动    ff  BBT            
1e  隐藏的 W95 FAT1 80  旧 Minix       
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”

命令(输入 m 获取帮助):t
分区号 (1-5,默认 5):2
Hex 代码(输入 L 列出所有代码):82
已将分区“Linux”的类型更改为“Linux swap / Solaris”

命令(输入 m 获取帮助):p

磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x9a651304

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     6293503     3145728   8e  Linux LVM
/dev/sdb2         6293504    10487807     2097152   82  Linux swap / Solaris
/dev/sdb3        10487808    12584959     1048576   83  Linux
/dev/sdb4        12584960    20971519     4193280    5  Extended
/dev/sdb5        12587008    14684159     1048576   83  Linux

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@192 ~]# 
[root@192 ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   20G  0 disk 
├─sda1   8:1    0  200M  0 part /boot
├─sda2   8:2    0    2G  0 part [SWAP]
└─sda3   8:3    0   10G  0 part /
sdb      8:16   0   10G  0 disk 
├─sdb1   8:17   0    3G  0 part 
├─sdb2   8:18   0    2G  0 part 
├─sdb3   8:19   0    1G  0 part 
├─sdb4   8:20   0    1K  0 part 
└─sdb5   8:21   0    1G  0 part 
sr0     11:0    1  4.4G  0 rom  /run/media/shuai/CentOS 7 x86_64
[root@192 ~]# 
[root@192 ~]# 
[root@192 ~]# fdisk -l

磁盘 /dev/sda:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000c6f11

   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      411647      204800   83  Linux
/dev/sda2          411648     4605951     2097152   82  Linux swap / Solaris
/dev/sda3         4605952    25577471    10485760   83  Linux

磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x9a651304

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     6293503     3145728   8e  Linux LVM
/dev/sdb2         6293504    10487807     2097152   82  Linux swap / Solaris
/dev/sdb3        10487808    12584959     1048576   83  Linux
/dev/sdb4        12584960    20971519     4193280    5  Extended
/dev/sdb5        12587008    14684159     1048576   83  Linux
[root@192 ~]# 
1.2 gdisk命令基础
[root@192 ~]# gdisk /dev/sda
GPT fdisk (gdisk) version 0.8.10

Partition table scan:
  MBR: MBR only
  BSD: not present
  APM: not present
  GPT: not present


***************************************************************
Found invalid GPT and valid MBR; converting MBR to GPT format
in memory. THIS OPERATION IS POTENTIALLY DESTRUCTIVE! Exit by
typing 'q' if you don't want to convert your MBR partitions
to GPT format!
***************************************************************


Command (? for help): ?
b    back up GPT data to a file                                # 备份一个gpt数据到文件
c    change a partition's name                                 # 改变分区名
d    delete a partition                                        # 删除一个分区
i    show detailed information on a partition                  # 显示一个分区的详细信息
l    list known partition types                                # 列出已知的分区类型
n    add a new partition                                       # 添加一个新的分区
o    create a new empty GUID partition table (GPT)             # 创建一个空的GUID分区表
p    print the partition table                                 # 打印分区表
q    quit without saving changes                               # 退出不保存
r    recovery and transformation options (experts only)        # 专家模式
s    sort partitions                                           # 排序分区
t    change a partition's type code                            # 改变分区类型
v    verify disk                                               # 验证磁盘
w    write table to disk and exit                              # 写磁盘并退出
x    extra functionality (experts only)                        # 额外功能(专家模式)
?    print this menu                                           # 打印菜单

Command (? for help):

 例子: 使用gdisk工具给/dev/sdb(10G)分区满足下面几个要求

  • GPT分区
  • /dev/sdb1分区类型为Linux LVM,大小为3G
  • /dev/sdb2分区类型为swap,大小为2G
  • /dev/sdb3分区类型为Linux, 大小为1G
  • /dev/sdb4分区类型为linux,大小为1G
  • 保留4G留作后用

上面我们对/dev/sdb已经分区了, 使用如下命令清空 

# 清空分区的前512字节,分区表被清空,小心操作
[root@192 ~]# dd if=/dev/zero of=/dev/sdb bs=1 count=512
记录了512+0 的读入
记录了512+0 的写出
512字节(512 B)已复制,0.00430641 秒,119 kB/秒

给/dev/sdb硬盘分区 

[root@192 ~]# gdisk /dev/sdb
GPT fdisk (gdisk) version 0.8.10

Partition table scan:
  MBR: not present
  BSD: not present
  APM: not present
  GPT: not present

Creating new GPT entries.

Command (? for help): p
Disk /dev/sdb: 20971520 sectors, 10.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): F38F67D8-3A73-4CAA-9037-64BB67962B86
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 20971486
Partitions will be aligned on 2048-sector boundaries
Total free space is 20971453 sectors (10.0 GiB)

Number  Start (sector)    End (sector)  Size       Code  Name

Command (? for help): n
Partition number (1-128, default 1): 
First sector (34-20971486, default = 2048) or {+-}size{KMGTP}: 
Last sector (2048-20971486, default = 20971486) or {+-}size{KMGTP}: +3G
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): L
0700 Microsoft basic data  0c01 Microsoft reserved    2700 Windows RE          
3000 ONIE boot             3001 ONIE config           4100 PowerPC PReP boot   
4200 Windows LDM data      4201 Windows LDM metadata  7501 IBM GPFS            
7f00 ChromeOS kernel       7f01 ChromeOS root         7f02 ChromeOS reserved   
8200 Linux swap            8300 Linux filesystem      8301 Linux reserved      
8302 Linux /home           8400 Intel Rapid Start     8e00 Linux LVM           
a500 FreeBSD disklabel     a501 FreeBSD boot          a502 FreeBSD swap        
a503 FreeBSD UFS           a504 FreeBSD ZFS           a505 FreeBSD Vinum/RAID  
a580 Midnight BSD data     a581 Midnight BSD boot     a582 Midnight BSD swap   
a583 Midnight BSD UFS      a584 Midnight BSD ZFS      a585 Midnight BSD Vinum  
a800 Apple UFS             a901 NetBSD swap           a902 NetBSD FFS          
a903 NetBSD LFS            a904 NetBSD concatenated   a905 NetBSD encrypted    
a906 NetBSD RAID           ab00 Apple boot            af00 Apple HFS/HFS+      
af01 Apple RAID            af02 Apple RAID offline    af03 Apple label         
af04 AppleTV recovery      af05 Apple Core Storage    be00 Solaris boot        
bf00 Solaris root          bf01 Solaris /usr & Mac Z  bf02 Solaris swap        
bf03 Solaris backup        bf04 Solaris /var          bf05 Solaris /home       
bf06 Solaris alternate se  bf07 Solaris Reserved 1    bf08 Solaris Reserved 2  
bf09 Solaris Reserved 3    bf0a Solaris Reserved 4    bf0b Solaris Reserved 5  
c001 HP-UX data            c002 HP-UX service         ea00 Freedesktop $BOOT   
eb00 Haiku BFS             ed00 Sony system partitio  ed01 Lenovo system partit
Press the <Enter> key to see more codes: 
ef00 EFI System            ef01 MBR partition scheme  ef02 BIOS boot partition 
fb00 VMWare VMFS           fb01 VMWare reserved       fc00 VMWare kcore crash p
fd00 Linux RAID            
Hex code or GUID (L to show codes, Enter = 8300): 8e00
Changed type of partition to 'Linux LVM'

Command (? for help): n
Partition number (2-128, default 2): 
First sector (34-20971486, default = 6293504) or {+-}size{KMGTP}: 
Last sector (6293504-20971486, default = 20971486) or {+-}size{KMGTP}: +2G
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): 8200
Changed type of partition to 'Linux swap'

Command (? for help): n
Partition number (3-128, default 3): 
First sector (34-20971486, default = 10487808) or {+-}size{KMGTP}: 
Last sector (10487808-20971486, default = 20971486) or {+-}size{KMGTP}: +1G
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): 
Changed type of partition to 'Linux filesystem'

Command (? for help): n
Partition number (4-128, default 4): 
First sector (34-20971486, default = 12584960) or {+-}size{KMGTP}: 
Last sector (12584960-20971486, default = 20971486) or {+-}size{KMGTP}: +1G
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): 
Changed type of partition to 'Linux filesystem'

Command (? for help): p
Disk /dev/sdb: 20971520 sectors, 10.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): F38F67D8-3A73-4CAA-9037-64BB67962B86
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 20971486
Partitions will be aligned on 2048-sector boundaries
Total free space is 6291389 sectors (3.0 GiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048         6293503   3.0 GiB     8E00  Linux LVM
   2         6293504        10487807   2.0 GiB     8200  Linux swap
   3        10487808        12584959   1024.0 MiB  8300  Linux filesystem
   4        12584960        14682111   1024.0 MiB  8300  Linux filesystem

Command (? for help): w

Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!

Do you want to proceed? (Y/N): y
OK; writing new GUID partition table (GPT) to /dev/sdb.
The operation has completed successfully.
[root@192 ~]# 
1.3 parted命令基础
[root@192 ~]# parted --help
Usage: parted [OPTION]... [DEVICE [COMMAND [PARAMETERS]...]...]
Apply COMMANDs with PARAMETERS to DEVICE.  If no COMMAND(s) are given, run in
interactive mode.

OPTIONs:
  -h, --help                      displays this help message
  -l, --list                      lists partition layout on all block devices
  -m, --machine                   displays machine parseable output
  -s, --script                    never prompts for user intervention
  -v, --version                   displays the version
  -a, --align=[none|cyl|min|opt]  alignment for new partitions

COMMANDs:
  align-check TYPE N                        check partition N for TYPE(min|opt)
        alignment
  help [COMMAND]                           print general help, or help on
        COMMAND
  mklabel,mktable LABEL-TYPE               create a new disklabel (partitionM                       # 设置分区类型 详细使用man获取
        table)
  mkpart PART-TYPE [FS-TYPE] START END     make a partition                                         # 创建一个分区 start,end为M,详细信息使用man获取
  name NUMBER NAME                         name partition NUMBER as NAME
  print [devices|free|list,all|NUMBER]     display the partition table,                             # 打印信息
        available devices, free space, all found partitions, or a particular
        partition
  quit                                     exit program                                             # 退出
  rescue START END                         rescue a lost partition near START                       # 救援一个丢失的分区
        and END
  rm NUMBER                                delete partition NUMBER                                  # 删除一个分区
  select DEVICE                            choose the device to edit                                # 选择一个分区去编辑
  disk_set FLAG STATE                      change the FLAG on selected device                       # 改变选择分区的标记
  disk_toggle [FLAG]                       toggle the state of FLAG on selected                     # 切换选择分区的标记
        device
  set NUMBER FLAG STATE                    change the FLAG on partition NUMBER                      # 改变指定分区号的标记
  toggle [NUMBER [FLAG]]                   toggle the state of FLAG on partition                    # 切换指定分区号的标记
        NUMBER
  unit UNIT                                set the default unit to UNIT                             # 设置默认单位
  version                                  display the version number and                           # 显示版本
        copyright information of GNU Parted

Report bugs to bug-parted@gnu.org

例子: 使用parted工具给/dev/sdb(10G)分区满足下面几个要求

  • GPT分区
  • /dev/sdb1分区类型为Linux LVM,大小为3G
  • /dev/sdb2分区类型为swap,大小为2G
  • /dev/sdb3分区类型为Linux, 大小为1G
  • /dev/sdb4分区类型为linux,大小为1G
  • 保留40G留作后用

上面我们对/dev/sdb已经分区了, 使用如下命令清空 

# 清空分区的前512字节,分区表被清空,小心操作
[root@192 ~]# dd if=/dev/zero of=/dev/sdb bs=1 count=512
记录了512+0 的读入
记录了512+0 的写出
512字节(512 B)已复制,0.00178097 秒,287 kB/秒

清空前: 

[root@192 ~]# fdisk -l
磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:gpt
Disk identifier: F38F67D8-3A73-4CAA-9037-64BB67962B86


#         Start          End    Size  Type            Name
 1         2048      6293503      3G  Linux LVM       Linux LVM
 2      6293504     10487807      2G  Linux swap      Linux swap
 3     10487808     12584959      1G  Linux filesyste Linux filesystem
 4     12584960     14682111      1G  Linux filesyste Linux filesystem
[root@192 ~]# 

清空后: 

[root@192 ~]# fdisk -l
磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节

[root@192 ~]# 

 给/dev/sdb硬盘分区 

[root@192 ~]# parted -s /dev/sdb mklabel gpt 
[root@192 ~]# parted -s /dev/sdb unit GB mkpart primary 1 3 set 1 lvm on
[root@192 ~]# parted -s /dev/sdb unit GB mkpart primary 3 5 set 2 swap on
parted: invalid token: swap
# 上一行命令分区为什么会出现 "parted: invalid token: swap" ? 待研究
[root@192 ~]# parted -s /dev/sdb unit GB mkpart primary 5 6
[root@192 ~]# parted -s /dev/sdb unit GB mkpart primary 6 7
[root@192 ~]# parted -s /dev/sdb print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 10.7GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name     标志
 1      1000MB  3000MB  2000MB               primary  lvm
 2      3000MB  5000MB  2000MB               primary
 3      5000MB  6000MB  1000MB               primary
 4      6000MB  7000MB  1000MB               primary
[root@192 ~]# fdisk -l
磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:gpt
Disk identifier: 0EBFF393-9E04-45F9-90A2-D3C85F1F7189


#         Start          End    Size  Type            Name
 1      1953792      5859327    1.9G  Linux LVM       primary
 2      5859328      9764863    1.9G  Microsoft basic primary
 3      9764864     11718655    954M  Microsoft basic primary
 4     11718656     13672447    954M  Microsoft basic primary
1.4 parted命令可用于分区转换
1.4.1 GPT分区方式转换成MBR

查看分区类型 fdisk -l

[root@192 ~]# fdisk -l
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.

磁盘 /dev/sdb:4294 MB, 4294967296 字节,8388608 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:gpt
Disk identifier: 874DCA00-33E5-4249-925A-FC1035FF027B


#         Start          End    Size  Type            Name
 1           34      8388574      4G  Linux filesyste primary

如上图,磁盘/dev/sdb分区类型为gpt。 

parted命令将gpt分区类型转换成mbr分区类型

[root@192 ~]# parted /dev/sdb
GNU Parted 3.1
使用 /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel
新的磁盘标签类型? msdos                                                  
警告: 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                                                         
(parted) quit                                                             
信息: You may need to update /etc/fstab.

[root@192 ~]# fdisk -l                                                    

磁盘 /dev/sdb:4294 MB, 4294967296 字节,8388608 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x0004a2f8

   设备 Boot      Start         End      Blocks   Id  System

1.4.2 MBR分区方式转换成GPT

查看分区类型 fdisk -l

[root@192 ~]# fdisk -l

磁盘 /dev/sdb:4294 MB, 4294967296 字节,8388608 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x0004a2f8

   设备 Boot      Start         End      Blocks   Id  System

 如上图,磁盘/dev/sdb分区类型为mbr。

parted命令将mbr分区类型转换成gpt分区类型

[root@192 ~]# parted /dev/sdb
GNU Parted 3.1
使用 /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel                                                          
新的磁盘标签类型? gpt                                                    
警告: 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                                                         
(parted) quit                                                             
信息: You may need to update /etc/fstab.

[root@192 ~]# fdisk -l
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.

磁盘 /dev/sdb:4294 MB, 4294967296 字节,8388608 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:gpt
Disk identifier: 139F2F15-D4D7-471C-8F5C-2DD9B5887FE8


#         Start          End    Size  Type            Name

2、格式化

格式化命令 mkfs

mkfs是linux的格式化操作的命令,mkfs双按tab键,可以看到它有多个衍生命令

[root@192 ~]# mkfs
mkfs         mkfs.cramfs  mkfs.ext3    mkfs.fat     mkfs.msdos   mkfs.xfs     
mkfs.btrfs   mkfs.ext2    mkfs.ext4    mkfs.minix   mkfs.vfat    

现在linux都是xfs文件系统格式了,所以这里按照 mkfs.xfs 命令执行格式化操作,执行格式为:mkfs.xfs /dev/sdb1 

[root@192 ~]# mkfs.xfs /dev/sdb1
meta-data=/dev/sdb1              isize=512    agcount=4, agsize=122048 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=488192, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@192 ~]# 
3、挂载

挂载命令mount

mount是挂载命令,将分区挂载到某个目录,这样对目录中文件的CRUD操作就作用到了对应的分区上。

mount命令的格式是:mount 分区名 文件夹 或者 mount UUID=分区UUID 文件夹

首先先建立个文件夹:mkdir /mydata,然后将/dev/sdb1挂载到/mydata,挂载命令为:mount /dev/sdb1 /mydata

这样就完成了挂载。

UUID挂载方式需要知道分区的UUID, 获取方式是使用blkid命令。

4、获取分区UUID:blkid

blkid的英文全称是:block id,该命令用于获取每个分区的UUID信息;有时候该命令会受到缓存的影响设设备列表可能不会更新,使用blkid -g命令可以清除缓存。

[root@192 ~]# blkid
/dev/sda1: UUID="1d6735cc-c03e-4320-b79b-625fed572702" TYPE="xfs" 
/dev/sda2: UUID="91bfb5a7-4d6d-465c-b19f-9b827756d1f5" TYPE="swap" 
/dev/sda3: UUID="054d83d4-4be7-4a4e-8c9c-bc3623607b57" TYPE="xfs" 
/dev/sr0: UUID="2020-11-04-11-36-43-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos" 
/dev/sdb1: UUID="85df7bb4-2c0b-4cb6-a7d9-88aa2d0eeee6" TYPE="xfs" PARTLABEL="primary" PARTUUID="d4c15f79-7fa2-4758-9611-93d6d75ff7a5" 
/dev/sdb2: PARTLABEL="primary" PARTUUID="ebb2f992-36e9-4f21-ae2e-9e448ea10299" 
/dev/sdb3: PARTLABEL="primary" PARTUUID="01d1c821-ed7e-49f6-a312-9434e00ca917" 
/dev/sdb4: PARTLABEL="primary" PARTUUID="b0fb913e-d9e3-4f76-a1eb-9f81bedbc8e2" 
[root@192 ~]# 

然后使用命令mount UUID="85df7bb4-2c0b-4cb6-a7d9-88aa2d0eeee6" /mydata 完成挂载。

[root@192 ~]# mount UUID="85df7bb4-2c0b-4cb6-a7d9-88aa2d0eeee6" /mydata
[root@192 ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   20G  0 disk 
├─sda1   8:1    0  200M  0 part /boot
├─sda2   8:2    0    2G  0 part [SWAP]
└─sda3   8:3    0   10G  0 part /
sdb      8:16   0   10G  0 disk 
├─sdb1   8:17   0  1.9G  0 part /mydata
├─sdb2   8:18   0  1.9G  0 part 
├─sdb3   8:19   0  954M  0 part 
└─sdb4   8:20   0  954M  0 part 
sr0     11:0    1  4.4G  0 rom  /run/media/shuai/CentOS 7 x86_64

需要注意的是mount命令只能一次挂载,重启系统之后挂载就会失效,需要将挂载写入/etc/fstab文件,这样才能完成分区的永久性挂载。

 5、永久挂载:/etc/fstab文件

/etc/fstab文件存放着需要永久挂载的数据,系统启动之后会自动读取该文件,并完成文件中的所有挂载。写入格式如下

设备文件  挂载目录  格式类型  权限选项  是否备份  是否自检

[root@192 ~]# cat /etc/fstab

#
# /etc/fstab
# Created by anaconda on Sat Aug 10 16:37:50 2024
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=054d83d4-4be7-4a4e-8c9c-bc3623607b57 /                       xfs     defaults        0 0
UUID=1d6735cc-c03e-4320-b79b-625fed572702 /boot                   xfs     defaults        0 0
UUID=91bfb5a7-4d6d-465c-b19f-9b827756d1f5 swap                    swap    defaults        0 0

[root@192 ~]# 

为了将 /dev/sdb1永远挂载到 /mydata目录,需要将以下信息追加到 /etc/fstab文件 

/dev/sdb1                               /mydata                   xfs     defaults        0 0

写入该文件并不会自动生效,需要使用命令mount -a或者重启系统生效。

已经实现了 /dev/sdb1挂载到 /mydata目录,接下来使用df命令查看挂载状态和硬盘使用量信息。

[root@192 ~]# df -h
文件系统        容量  已用  可用 已用% 挂载点
devtmpfs        975M     0  975M    0% /dev
tmpfs           991M     0  991M    0% /dev/shm
tmpfs           991M   11M  980M    2% /run
tmpfs           991M     0  991M    0% /sys/fs/cgroup
/dev/sda3        10G  4.3G  5.7G   43% /
/dev/sda1       197M  147M   50M   75% /boot
tmpfs           199M   20K  199M    1% /run/user/1000
/dev/sr0        4.4G  4.4G     0  100% /run/media/shuai/CentOS 7 x86_64
/dev/sdb1       1.9G   33M  1.9G    2% /mydata
[root@192 ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   20G  0 disk 
├─sda1   8:1    0  200M  0 part /boot
├─sda2   8:2    0    2G  0 part [SWAP]
└─sda3   8:3    0   10G  0 part /
sdb      8:16   0   10G  0 disk 
├─sdb1   8:17   0  1.9G  0 part /mydata
├─sdb2   8:18   0  1.9G  0 part 
├─sdb3   8:19   0  954M  0 part 
└─sdb4   8:20   0  954M  0 part 
sr0     11:0    1  4.4G  0 rom  /run/media/shuai/CentOS 7 x86_64
[root@192 ~]# 

五. 卸载分区

 卸载分区其实就是逆向操作,首先,删除fstab中的记录

# 删除刚添加的这行
/dev/sdb1				/mydata			  xfs	  defaults	  0 0 

然后umount 命令卸除挂载

umount /dev/sdb1

然后删除分区

[root@192 ~]# fdisk /dev/sdb
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。


命令(输入 m 获取帮助):m
命令操作
   d   delete a partition
   g   create a new empty GPT partition table
   G   create an IRIX (SGI) partition table
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)

命令(输入 m 获取帮助):d
分区号 (1-4,默认 4):1
分区 1 已删除

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@192 ~]# 

之后,再用lsblk命令查看下分区,发现sdb1已经没了,sdb硬盘下只剩下了sdb2,sdb3,sdb4分区。 

[root@192 ~]# df -h
文件系统        容量  已用  可用 已用% 挂载点
devtmpfs        975M     0  975M    0% /dev
tmpfs           991M     0  991M    0% /dev/shm
tmpfs           991M   11M  980M    2% /run
tmpfs           991M     0  991M    0% /sys/fs/cgroup
/dev/sda3        10G  4.3G  5.7G   43% /
/dev/sda1       197M  147M   50M   75% /boot
tmpfs           199M   20K  199M    1% /run/user/1000
/dev/sr0        4.4G  4.4G     0  100% /run/media/shuai/CentOS 7 x86_64
[root@192 ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   20G  0 disk 
├─sda1   8:1    0  200M  0 part /boot
├─sda2   8:2    0    2G  0 part [SWAP]
└─sda3   8:3    0   10G  0 part /
sdb      8:16   0   10G  0 disk 
├─sdb2   8:18   0  1.9G  0 part 
├─sdb3   8:19   0  954M  0 part 
└─sdb4   8:20   0  954M  0 part 
sr0     11:0    1  4.4G  0 rom  /run/media/shuai/CentOS 7 x86_64

参考文档:

https://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_linux_039_fdisk_gdisk_parted.html

https://www.cnblogs.com/kuangdaoyizhimei/p/18311375

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值