Linux当前磁盘扩容及新磁盘环境下逻辑卷扩容的操作指南(CentOS7)

LVM 磁盘扩容

查看分区情况

1
fdisk -l

查看磁盘使用情况

1
df -h

结果中可以找到需要扩展的 LV, 名称是/dev/mapper/centos_localhost-root

1
2
3
4
5
6
7
8
文件系统                           容量  已用  可用 已用% 挂载点
devtmpfs 3.9G 0 3.9G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 3.9G 8.9M 3.9G 1% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/mapper/centos_localhost-root 222G 8.8G 213G 4% /
/dev/sda1 1014M 182M 833M 18% /boot
tmpfs 783M 0 783M 0% /run/user/0

查看分区使用情况

1
lsblk 

结果

1
2
3
4
5
6
7
8
9
10
11
12
NAME                      MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda 8:0 0 200G 0 disk
├─sda1 8:1 0 1G 0 part /boot
├─sda2 8:2 0 99G 0 part
│ ├─centos_localhost-root 253:0 0 221.1G 0 lvm /
│ └─centos_localhost-swap 253:1 0 7.9G 0 lvm [SWAP]
└─sda3 8:3 0 50G 0 part
└─centos_localhost-root 253:0 0 221.1G 0 lvm /
sdb 8:16 0 80G 0 disk
└─sdb1 8:17 0 80G 0 part
└─centos_localhost-root 253:0 0 221.1G 0 lvm /
sdc 8:32 0 50G 0 disk

场景一:虚拟磁盘追加空间

通过 lsblk 命令,可以查询到 sda 磁盘有200G,其中有三块分区 sda1、sda2、sda3,三块分区一共150G,剩余 50G,现在就把剩余的 50G 加入到 LVM 中,并分配给逻辑卷 centos_localhost-root

sda剩余空间创建分区

分区sda4:因为现在已经存在 sda1、sda2、sda3,所以创建的下一个分区为 sda4.

记住此次示例的分区编号:4

下面是具体步骤:

1、输入:fdisk /dev/sda

1
2
3
4
5
6
欢迎使用 fdisk (util-linux 2.23.2)。

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

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

2、输入:n,并回车

1
2
3
4
命令(输入 m 获取帮助):n
Partition type:
p primary (3 primary, 0 extended, 1 free)
e extended

3、输入:p,并回车

1
2
3
4
Partition type:
p primary (3 primary, 0 extended, 1 free)
e extended
Select (default e): p

4、这里会出现两种情况:

情况一:如果为第4个分区,则这里直接回车

1
2
已选择分区 4
起始 扇区 (314572800-419430399,默认为 314572800):

直接回车会选择所有剩余的磁盘空间创建当前分区

情况二:出现下面文字,直接回车

1
分区号(1-3,默认 3):

回车

1
起始 扇区 (314572800-419430399,默认为 314572800):

5、4步骤后,会出现下面文字,再次回车

1
Last 扇区, +扇区 or +size{K,M,G} (314572800-419430399,默认为 419430399):

回车后会出现

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

6、输入:t,并回车

7、输入分区号:4,并回车

8、输入:8e,并回车

9、输入:w,并回车

如果提醒 设备或资源忙

1
2
3
WARNING: Re-reading the partition table failed with error 16: 设备或资源忙.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)

则执行:

1
partprobe

查看分区结果

1
lsblk

结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
NAME                      MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda 8:0 0 200G 0 disk
├─sda1 8:1 0 1G 0 part /boot
├─sda2 8:2 0 99G 0 part
│ ├─centos_localhost-root 253:0 0 221.1G 0 lvm /
│ └─centos_localhost-swap 253:1 0 7.9G 0 lvm [SWAP]
├─sda3 8:3 0 50G 0 part
│ └─centos_localhost-root 253:0 0 221.1G 0 lvm /
└─sda4 8:4 0 50G 0 part
sdb 8:16 0 80G 0 disk
└─sdb1 8:17 0 80G 0 part
└─centos_localhost-root 253:0 0 221.1G 0 lvm /
sdc 8:32 0 50G 0 disk

将分区sda4加入逻辑卷

分区名:sda4

逻辑卷名:centos_localhost-root

1
2
3
4
5
6
7
8
9
10
# 这里输入分区地址
CURRENT_PARTITION=/dev/sda4
# 这里输入 LV 名称
CURRENT_LV_NAME=centos_localhost-root
pvcreate $CURRENT_PARTITION
CURRENT_VG_NAME=`vgdisplay |grep Name|awk '{print $3}' `
vgextend $CURRENT_VG_NAME $CURRENT_PARTITION
lvextend -l +100%FREE /dev/mapper/$CURRENT_LV_NAME
xfs_growfs /dev/mapper/$CURRENT_LV_NAME
df -h

场景二:新增磁盘

通过 lsblk 命令,可以查询到 新磁盘sdc 磁盘有50G,现在就把 50G 加入到 LVM 中,并分配给逻辑卷 centos_localhost-root

sdc创建分区

分区sdc1:当前磁盘第一个分区为1

记住此次示例的分区编号:1

下面是具体步骤:

1、输入:fdisk /dev/sdc

1
2
3
4
5
6
欢迎使用 fdisk (util-linux 2.23.2)。

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

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

2、输入:n,并回车

3、直接输入回车,再回车,再回车,再回车

直到出现

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

4、输入:t,并回车,再回车

5、输入:8e,并回车

6、输入:w,并回车

如果提醒 设备或资源忙

1
2
3
WARNING: Re-reading the partition table failed with error 16: 设备或资源忙.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)

则执行:

1
partprobe

查看分区结果

1
lsblk

结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
NAME                      MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda 8:0 0 200G 0 disk
├─sda1 8:1 0 1G 0 part /boot
├─sda2 8:2 0 99G 0 part
│ ├─centos_localhost-root 253:0 0 221.1G 0 lvm /
│ └─centos_localhost-swap 253:1 0 7.9G 0 lvm [SWAP]
├─sda3 8:3 0 50G 0 part
│ └─centos_localhost-root 253:0 0 221.1G 0 lvm /
└─sda4 8:4 0 50G 0 part
sdb 8:16 0 80G 0 disk
└─sdb1 8:17 0 80G 0 part
└─centos_localhost-root 253:0 0 221.1G 0 lvm /
sdc 8:32 0 50G 0 disk

将分区sdc1加入逻辑卷

分区名:sdc1

逻辑卷名:centos_localhost-root

1
2
3
4
5
6
7
8
9
10
# 创建PV
pvcreate /dev/sdc1
# PV 加入 VG
CURRENT_VG_NAME=`vgdisplay |grep Name|awk '{print $3}' `
vgextend $CURRENT_VG_NAME $/dev/sdc1
# 给 LV 扩容
lvextend -l +100%FREE /dev/mapper/centos_localhost-root
# 刷新文件系统
xfs_growfs /dev/mapper/centos_localhost-root
df -h

将分区加入逻辑卷的详细说明

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 创建分区的 pv
pvcreate /dev/sda4
# Physical volume "/dev/sda4" successfully created.
# 查看 vg 名
vgdisplay |grep Name|awk '{print $3}'
# VG Name centos_localhost
# pv 加入 vg
vgextend centos_localhost /dev/sda4
# Volume group "centos_localhost" successfully extended
# 扩展 lv
lvextend -l +100%FREE /dev/mapper/centos_localhost-root
# Size of logical volume centos_localhost/root changed from 221.11 GiB (56605 extents) to <271.11 GiB (69404 extents).
# Logical volume centos_localhost/root successfully resized.
# 扩展文件系统,
xfs_growfs /dev/mapper/centos_localhost-root
# 查询磁盘容量
df -h

xfs_growfs用于扩展 xfs 文件系统

resize2fs 是用户扩展ext系统

查询文件系统

1
2
lsblk -f
df -Th

切换文件系统

1
mkfs -t xfs /dev/sdb1

文件系统有 ext2ext3ext4

本文地址: https://github.com/maxzhao-it/blog/post/cc5b4532/