1. 基本概念
1.1. 引导分区
系统的引导分为两种模式:MBR(主引导记录)和GPT(GUID Partition Table)。
- MBR分区表存储在硬盘的第一个扇区上,兼容性较好,但不支持管理大容量硬盘结构。
- GUID(全局唯一标识符)分区表,硬盘没有分区数量和分区大小的限制。
MBR和GPT两者的区别:
- MBR分区表最多只能识别2TB左右的空间,大于限制的容量无法识别。
- MBR分区表最多只能支持4个主分区,或3个主分区+1个扩展分区(逻辑分区不限制)。
- 在MBR中,分区表的大小是固定的,在GPT分区表头中可自定义分区数量的最大值。
1.2. 文件系统
在安装 Linux 的过程中,通常倾向于使用列出的默认文件系统而不探索其他可用选项。对于 Windows主要的文件系统是 NTFS。
最广泛使用的文件系统是 Ext4 和 XFS,后者是基于 RHEL 的发行版中的默认文件系统,而 Ext4 是 Debian 和 Ubuntu 发行版中的标准文件系统。在选择文件系统时,需要考虑的一些因素包括可扩展性、稳定性和数据完整性。
- Ext4 完美地管理了许多小文件并确保元数据被正确写入,即使写入缓存断电。
- XFS 以提供高 I/O 线程的可扩展性以及在处理大文件方面的出色性能而广为人知。
1.3. 卷管理
逻辑卷管理(LVM),是 Logical Volume Manager(逻辑卷管理)的简写,lvm是卷的一种管理方式,并不是分区工具,之前我们在 Centos8-Boot镜像安装 提到系统磁盘分区的模式,分别为标准分区和LVM分区。
LVM管理卷的思路是:将多个物理卷重新组合成逻辑卷组,通过逻辑卷组管理硬盘空间。
LVM扩容的思路是:新增加一个物理分区并创建物理卷,将物理卷添加到扩展的卷组中,逻辑卷组扩展的空间再次分配给逻辑卷(挂载目录的卷)。
以下查询的命令只能在LVM管理的硬盘才能使用,查看硬盘的物理分区可以使用 fdisk -l
命令查看。
#1、查看物理卷
[root@localhost ~]# pvdisplay
#2、查看逻辑卷组
[root@localhost ~]# vgdisplay
#3、查看逻辑卷
[root@localhost ~]# lvdisplay
2. 扩容分区
测试环境:虚拟机的硬盘动态拓展存储空间
虚拟机环境:Vmware Workstation
将Centos 8操作系统关闭后,在虚拟机设置中拓展硬盘容量至50G(+10G存储容量)。
首先我们先来看两种模式的分区有那些区别,命令df-Th
查看文件系统磁盘使用情况统计。
# 1.在标准分区下,查看文件系统的情况,不会显示swap分区。
[root@localhost ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda4 xfs 32G 3.3G 29G 11% /
/dev/sda2 xfs 507M 211M 296M 42% /boot
/dev/sda1 vfat 256M 7.3M 249M 3% /boot/efi
# 2.在LVM分区下,查看文件系统的情况,不会显示swap分区。
[root@localhost ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/centos-root xfs #32G 3.1G 29G 8% /
/dev/sda1 xfs 507M 220M 287M 44% /boot
命令lsblk
查看列出所有可用块设备的信息以及它们的依赖关系,可以更加直观的发现两种分区模式的区别,LVM分区将块设备组成一个逻辑卷组,在逻辑卷组中划分 root
和 swap
分区。
# 1.在标准分区下,查看列出所有可用块设备的信息。
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 259:0 0 50G 0 disk # 块设备sda已经扩容至50G
├─sda1 259:1 0 256M 0 part /boot/efi
├─sda2 259:2 0 512M 0 part /boot
├─sda3 259:3 0 8G 0 part [SWAP]
└─sda4 259:4 0 31.3G 0 part
# 2.在LVM分区下,查看列出所有可用块设备的信息。
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 259:0 0 50G 0 disk # 块设备sda已经扩容至50G
├─sda1 259:1 0 512M 0 part /boot
└─sda2 259:2 0 39.5G 0 part
├─centos-root 253:0 0 31.5G 0 lvm /
└─centos-swap 253:1 0 8G 0 lvm [SWAP]
2.1. 扩容标准分区
需求:扩容 root
根分区的存储容量(+10G)。
思路:删除 root
根分区的扇区,创建相同节点的一个分区,设置扇区时将之前的扇区位置往后拓展到最大的位置,保存分区信息后相当于只是拓展了分区的扇区信息。
#1.命令fdisk进入硬盘分区操作
[root@localhost ~]# fdisk /dev/sda
Welcome to fdisk (util-linux 2.32.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
GPT PMBR size mismatch (83886079 != 104857599) will be corrected by write.
#2.查看分区表的信息,p命令查看
Command (m for help)#: p
Device Start End Sectors Size Type
/dev/sda1 2048 526335 524288 256M EFI System
/dev/sda2 526336 1574911 1048576 512M Linux filesystem
/dev/sda3 1574912 18352127 16777216 8G Linux swap
/dev/sda4 18352128 83884031 65531904 31.3G Linux filesystem
#3.删除分区4(根目录挂载的分区),d命令删除,切记不能保存!!!
Command (m for help)#: d
Partition number (1-4, default 4): 4
Partition 4 has been deleted.
#4.再次查看分区信息,已删除(未保存)
Command (m for help)#: p
Device Start End Sectors Size Type
/dev/sda1 2048 526335 524288 256M EFI System
/dev/sda2 526336 1574911 1048576 512M Linux filesystem
/dev/sda3 1574912 18352127 16777216 8G Linux swap
#5.重新创建分区4(根目录挂载的分区),n命令新建
Command (m for help)#: n
Partition number (4-128, default 4)#: 4
First sector (18352128-104857566, default 18352128): #设置扇区的起始位置,默认回车
Last sector, +sectors or +size{K,M,G,T,P} (18352128-104857566, default 104857566)#: 设置扇区的末尾位置,默认回车
Created a new partition 4 of type 'Linux filesystem' and of size 41.3 GiB.
Partition #4 contains a xfs signature.
Do you want to remove the signature? [Y]es/[N]o#: no # 是否移除签名
#6.保存所有的修改,W命令保存(此时分区的扇区范围往后拓展,此前数据不受影响)
Command (m for help): # w
The partition table has been altered.
Syncing disks.
#7.刷新硬盘分区信息
[root@localhost ~]# partprobe /dev/sda
[root@localhost ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda4 xfs #32G 3.2G 29G 11% /
#8.挂载目录在线扩容,命令resize2fs 或 xfs_growfs
#resize2fs 针对文件系统ext2、3、4
#xfs_growfs 针对文件系统xfs
[root@localhost ~]# xfs_growfs /dev/sda4
[root@localhost ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda4 xfs #42G 3.3G 38G 8% /
2.2. 扩容LVM分区
需求:扩容 root
根分区的存储容量(+10G)。
思路:创建一个新的物理分区并创建物理卷,再将物理卷添加到LVM逻辑卷组中;从LVM逻辑卷划分空闲的空间到 root
根分区。
#1.命令fdisk进入硬盘分区操作
[root@localhost ~]# fdisk /dev/sda
Welcome to fdisk (util-linux 2.32.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
#2.查看分区表的信息,p命令查看
Command (m for help)#: p
Device Boot Start End Sectors Size Id Type
/dev/sda1* 2048 1050623 1048576 512M 83 Linux
/dev/sda2 1050624 83886079 82835456 39.5G 8e Linux LVM
#3.创建一个分区,n命令新建
Command (m for help)#: n
Partition type
p primary (2 primary, 0 extended, 2 free)
e extended (container for logical partitions)
#4.设置为主分区,P命令选择节点位置
Select (default p)#: p
Partition number (3,4, default 3)#: 3
First sector (83886080-104857599, default 83886080):
Last sector, +sectors or +size{K,M,G,T,P} (83886080-104857599, default 104857599):
Created a new partition 3 of type 'Linux' and of size 10 GiB.
#5.再次查看分区信息(未保存)
Command (m for help)#: p
Device Boot Start End Sectors Size Id Type
/dev/sda1* 2048 1050623 1048576 512M 83 Linux
/dev/sda2 1050624 83886079 82835456 39.5G 8e Linux LVM
/dev/sda3 83886080 104857599 20971520 10G 83 Linux
#6.保存所有的修改,W命令保存(新增加一个物理分区)
Command (m for help): w
The partition table has been altered.
Syncing disks.
#7.刷新硬盘的分区信息(扩容的这块硬盘)
[root@localhost ~]# partprobe /dev/sda
#8.为新分区创建物理卷
[root@localhost ~]# pvcreate /dev/sda3
Physical volume "/dev/sda3" successfully created.
#9.查看现有的lvm卷组名称,以及卷组使用情况
[root@localhost ~]# vgdisplay
--- Volume group ---
VG Name centos
VG Size <39.50 GiB
#10.将/dev/sda3物理卷添加到逻辑卷组中
[root@localhost ~]# vgextend centos /dev/sda3
Physical volume "/dev/sda3" successfully created.
Volume group "centos" successfully extended
#11.查看当前逻辑卷的空间状态(这里为了方便理解,省略其他信息的输出)
[root@localhost ~]# lvdisplay
--- Logical volume ---
LV Path /dev/centos/swap
LV Name swap
VG Name centos
LV Size 8.00 GiB
--- Logical volume ---
LV Path /dev/centos/root
LV Name root
VG Name centos
LV Size <31.50 GiB
#12.将逻辑卷组中的空闲空间扩展到根分区逻辑卷
[root@localhost ~]# lvextend -l +100%FREE /dev/centos/root
Size of logical volume centos/root changed from <31.50 GiB (8063 extents) to 41.49 GiB (10622 extents).
Logical volume centos/root successfully resized.
#13.刷新根分区
#resize2fs 针对文件系统ext2、3、4
#xfs_growfs 针对文件系统xfs
[root@localhost ~]# xfs_growfs /dev/centos/root
meta-data=/dev/mapper/centos-root isize=512 agcount=4, agsize=2064128 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1 bigtime=0 inobtcount=0
data = bsize=4096 blocks=8256512, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=4031, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 8256512 to 10876928
#14.查看系统各分区的大小
[root@localhost ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/centos-root xfs 42G 3.2G 39G 8% /
/dev/sda1 xfs 507M 220M 287M 44% /boot
3. 挂载新磁盘
2.1. 创建分区
#1.命令fdisk进入硬盘分区操作(新添加的硬盘/dev/sdb)
[root@localhost ~]# fdisk /dev/sdb
#2.新建分区
Command (m for help):# n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
#3.选择节点并配置扇区位置信息
Select (default p):# p
Partition number (1-4, default 1):
First sector (2048-209715199, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-209715199, default 209715199):
Created a new partition 1 of type 'Linux' and of size 100 GiB.
#4.保存变更的设置(此时分区名应该为:/dev/sdb1)
Command (m for help):# w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
2.2. 格式化分区
#1.将分区格式化为xfs文件系统
[root@localhost ~]# mkfs -t xfs /dev/sdb1
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=6553536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1 bigtime=0 inobtcount=0
data = bsize=4096 blocks=26214144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=12799, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
2.3. 挂载目录
#1.创建data目录
[root@localhost ~]# mkdir /data
#2.将分区挂载至data目录
[root@localhost ~]# mount /dev/sdb1 /data
#3.查询新分区的uuid
[root@localhost centos]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sdb
└─sdb1 xfs 516d20fa-0551-4348-a348-c81f4879b00e /data
#4.配置centos自动挂载目录,添加一条挂载配置(否则重启会发现分区未挂载至目录)
[root@localhost ~]# vim /etc/fstab
UUID=516d20fa-0551-4348-a348-c81f4879b00e /data xfs defaults 0 0