现在设置Linux挂载时,除了/boot
启动项挂载点直接使用格式化后的物理分区进行挂载,其他分区一般都使用逻辑卷管理(Logical Volume Manager,LVM),即使用逻辑卷轴(Logical Volume,LV) 挂载文件路径,其最大的优点在于后期能够进行弹性扩容。本次主要演示如何使用磁盘剩余空间创建分区,进而对某逻辑卷轴LV(挂载点)进行扩容,挂载点扩容的前提是其挂载设备为逻辑卷轴LV类型。
扩展逻辑卷轴(Logical Volume,LV) 时,需要先使用未格式化的分区创建实体卷轴(Physical Volume, PV) ,然后再将其添加到卷轴群组(Volume Group, VG) 中,最后实现此VG对应的逻辑卷轴(Logical Volume,LV) 扩容。大致过程如下图所示:
lsblk
查看本系统内所有磁盘及其分区信息lsblk
[root@localhost ~]# 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 12G 0 part
├─centos-root 253:0 0 10G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sr0 11:0 1 1024M 0 rom
parted
查看磁盘分区类型与分区信息parted /dev/sda print # /dev/sda为需要创建分区的磁盘设备
[root@localhost ~]# parted /dev/sda print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sda: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system 标志
1 1049kB 211MB 210MB primary xfs 启动
2 211MB 13.1GB 12.9GB primary lvm
查看Partition Table
一行的输出内容,其中msdos
指的是MBR
分区表,gpt
指的是GPT
分区表
fdisk/gdisk
工具创建分区MBR分区表使用fdisk
工具创建分区,GPT分区表使用gdisk
工具创建分区。这里因为原有磁盘的分区表格式为MBR,因此此处使用fdisk
来在指定磁盘上创建新分区。
fdisk /dev/sda
命令(输入 m 获取帮助):m
命令操作
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
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
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
使用fdisk
创建分区的过程总大致需要进行以下几个过程:
1)查看分区情况: 输入命令p
2)创建分区: 输入命令n
,表示创建分区
Primary
,即选择主分区类型enter
,即选择默认分区号,紧接上一个分区号enter
,即选择默认起始扇区,紧接上一个已使用扇区enter
选择默认则是将磁盘中所有剩余空间都分配给当前分区,建议使用+size{K,M,G}
的方式手动选择需要分配给此分区的磁盘空间,如+5G
则表示分配给当前分区5G磁盘空间,分区工具会自动计算其对应的扇区数量3)修改分区system id: 输入命令t
8e
4)再次查看分区情况: 输入命令p
,其中新建分区Id
为8e,System
为Linux LVM
5)写入分区: 输入命令w
,表示将内存中的修改在磁盘中实现。
注意: 在写入分区之前,任何操作都可以使用q
命令直接退出,如果修改错误直接退出即可,写入命令w
使用之前需要三思!!!如果分区创建错误,则可以参考>1.5 删除分区
由于本次扩容中,创建分区的磁盘正在使用,因此磁盘分区表并未被即使更新,因此需要将磁盘分区表更新后才能继续后续操作。
更新磁盘分区表的方式主要有二,此处使用后者:
①万能重启
②使用partprobe -s
命令
如果因为不小心创建了错误分区,则依旧可以使用fdisk/gdisk
工具来删除分区,注意删除时也千万不要搞错分区号,删除前需要保证分区没有在使用中。以fdisk
工具删除分区表格式为MBR
的磁盘分区为例,只需要几步即可完成分区删除:
fdisk /dev/sda
1)查看所有分区: 输入命令p
2)删除分区: 输入命令d
3)再次查看分区: 输入命令p
4)写入修改: 输入命令w
最后更新磁盘分区表信息即可,更新磁盘分区表方式同>1.4 更新Linux磁盘分区表信息
与PV操作相关的命令工具有:
pvcreate
:将实体partition创建成为PV;pvscan
:搜寻目前系统中任何具有PV的磁盘;pvdisplay
:显示出目前系统上的PV的状态;pvremove
:将PV属性移除,使得指定分区Partition不再作为PV;要创建实体卷轴PV其实很简单,只要直接使用pvcreate
工具即可,本次用于创建PV的分区为/dev/sda3。
pvscan
[root@localhost ~]# pvscan
PV /dev/sda2 VG centos lvm2 [12.00 GiB / 4.00 MiB free]
Total: 1 [12.00 GiB] / in use: 1 [12.00 GiB] / in no VG: 0 [0 ]
pvcreate /dev/sda3
[root@localhost ~]# pvcreate /dev/sda3
Physical volume "/dev/sda3" successfully created.
pvscan
[root@localhost ~]# pvscan
PV /dev/sda2 VG centos lvm2 [12.00 GiB / 4.00 MiB free]
PV /dev/sda3 lvm2 [5.00 GiB]
Total: 2 [17.00 GiB] / in use: 1 [12.00 GiB] / in no VG: 1 [5.00 GiB]
pvdisplay /dev/sda3
[root@localhost ~]# pvdisplay /dev/sda3
"/dev/sda3" is a new physical volume of "5.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sda3
VG Name
PV Size 5.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID 1dzbp0-d8ed-fyrp-OkN2-A9gv-uF1l-4jkLVB
操作卷轴群组(Volume Group, VG)的相关工具指令有:
vgcreate
:创建VG;vgscan
:搜寻当前系统上的VG;vgdisplay
:目前系统上面的VG状态;vgextend
:VG内增加额外的PV;vgreduce
:VG内移除PV;vgchange
:设置VG是否启动(active)vgremove
:删除一个VGvgdisplay
[root@localhost ~]# vgdisplay
--- Volume group ---
VG Name centos
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size 12.00 GiB
PE Size 4.00 MiB
Total PE 3073
Alloc PE / Size 3072 / 12.00 GiB
Free PE / Size 1 / 4.00 MiB
VG UUID eWCibX-KG8w-2OGl-A4N2-sfIW-v4hO-cIV1TT
df -Th
[root@localhost ~]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root xfs 10G 9.2G 853M 92% /
devtmpfs devtmpfs 894M 0 894M 0% /dev
tmpfs tmpfs 910M 0 910M 0% /dev/shm
tmpfs tmpfs 910M 82M 829M 9% /run
tmpfs tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/sda1 xfs 197M 157M 41M 80% /boot
tmpfs tmpfs 182M 0 182M 0% /run/user/1000
/
lsblk -ip
[root@localhost ~]# lsblk -ip
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
/dev/sda 8:0 0 20G 0 disk
|-/dev/sda1 8:1 0 200M 0 part /boot
|-/dev/sda2 8:2 0 12G 0 part
| |-/dev/mapper/centos-root 253:0 0 10G 0 lvm /
| `-/dev/mapper/centos-swap 253:1 0 2G 0 lvm [SWAP]
`-/dev/sda3 8:3 0 5G 0 part
/dev/sr0 11:0 1 1024M 0 rom
/dev/mapper/centos-root
lvdisplay /dev/mapper/centos-root
[root@localhost ~]# lvdisplay /dev/mapper/centos-root
--- Logical volume ---
LV Path /dev/centos/root
LV Name root
VG Name centos
LV UUID IAyAr7-NCfw-zOKq-8SNl-6cYJ-3CgN-dedM38
LV Write Access read/write
LV Creation host, time localhost, 2020-02-02 06:48:11 +0800
LV Status available
# open 1
LV Size 10.00 GiB
Current LE 2560
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
vgdisplay centos
[root@localhost ~]# vgdisplay centos
--- Volume group ---
VG Name centos
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size 12.00 GiB
PE Size 4.00 MiB
Total PE 3073
Alloc PE / Size 3072 / 12.00 GiB
Free PE / Size 1 / 4.00 MiB
VG UUID eWCibX-KG8w-2OGl-A4N2-sfIW-v4hO-cIV1TT
VG Name
一行可以知道需要扩容的挂载点对应LV的所属VG为centos
,因此之后针对其进行扩容,即将新建的PV添加到此VG中此处将之前新建的PV对应的分区/dev/sda3
添加到需要扩容的VG中,本次需要扩容的VG为centos
vgextend centos /dev/sda3
[root@localhost ~]# vgextend centos /dev/sda3
Volume group "centos" successfully extended
vgdisplay
[root@localhost ~]# vgdisplay
--- Volume group ---
VG Name centos
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 4
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 2
Act PV 2
VG Size 17.00 GiB
PE Size 4.00 MiB
Total PE 4352
Alloc PE / Size 3072 / 12.00 GiB
Free PE / Size 1280 / 5.00 GiB
VG UUID eWCibX-KG8w-2OGl-A4N2-sfIW-v4hO-cIV1TT
根据上一小节中>3.2 确定需要扩容的LV及其所在的VG中找到的需要扩容的挂载点对应的LV,来对其进行扩容
lvdisplay /dev/centos/root
[root@localhost ~]# lvdisplay /dev/centos/root
--- Logical volume ---
LV Path /dev/centos/root
LV Name root
VG Name centos
LV UUID IAyAr7-NCfw-zOKq-8SNl-6cYJ-3CgN-dedM38
LV Write Access read/write
LV Creation host, time localhost, 2020-02-02 06:48:11 +0800
LV Status available
# open 1
LV Size 10.00 GiB
Current LE 2560
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
lvresize -L +1G /dev/centos/root
[root@localhost ~]# lvresize -L +1G /dev/centos/root
Size of logical volume centos/root changed from 10.00 GiB (2560 extents) to 11.00 GiB (2816 extents).
Logical volume centos/root successfully resized.
lvdisplay /dev/centos/root
[root@localhost ~]# lvdisplay /dev/centos/root
--- Logical volume ---
LV Path /dev/centos/root
LV Name root
VG Name centos
LV UUID IAyAr7-NCfw-zOKq-8SNl-6cYJ-3CgN-dedM38
LV Write Access read/write
LV Creation host, time localhost, 2020-02-02 06:48:11 +0800
LV Status available
# open 1
LV Size 11.00 GiB
Current LE 2816
Segments 3
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
df -Th
[root@localhost ~]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root xfs 10G 9.2G 852M 92% /
devtmpfs devtmpfs 894M 0 894M 0% /dev
tmpfs tmpfs 910M 0 910M 0% /dev/shm
tmpfs tmpfs 910M 82M 829M 9% /run
tmpfs tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/sda1 xfs 197M 157M 41M 80% /boot
tmpfs tmpfs 182M 0 182M 0% /run/user/1000
df -Th /
[root@localhost ~]# df -Th /
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root xfs 10G 9.2G 865M 92% /
注意:因为上一步已经确定挂载点对应的文件系统为xfs
类型,因此使用xfs_growfs
工具对其进行扩容,若是其他文件系统类型,需要使用对应的工具
xfs_growfs /
[root@localhost ~]# xfs_growfs /
meta-data=/dev/mapper/centos-root isize=512 agcount=4, agsize=655360 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=2621440, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 2621440 to 3145728
df -Th /
[root@localhost ~]# df -Th /
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root xfs 12G 9.2G 2.9G 77% /
《鸟哥的Linux私房菜基础学习篇》14.3.3 放大LV容量