Z.S.K.'s Records

Linux下使用lvm将多块盘合并

需求: 将vdb vdc这两个500G的盘合并成一个1000G的盘,然后新建一个目录挂载到大盘上,当大盘出现磁盘紧张的时候还可以自动扩容.

由于部门里有基础服务的同事,很少有机会直接接触lvm,刚好最近有几台物理服务器,借这个机会,就尝试自己实践了一番

lsblk

1
2
3
4
5
6
7
8
# 使用lsblk 查看当前挂载的磁盘
lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 253:0 0 50G 0 disk
└─vda1 253:1 0 50G 0 part /
vdb 253:16 0 500G 0 disk /data
vdc 253:32 0 500G 0 disk

这里将vdb vdc这两个500G的盘合并成一个1000G的盘,然后新建一个目录挂载到大盘上

fdisk

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# 使用fdisk进行盘的格式化
fdisk /dev/vdb

# 以下是交互输出结果
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.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0xadfbfcb4.

Command (m for help): n # 新建分区
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p # 待定主分区
Partition number (1-4, default 1): 1 # 序号
First sector (2048-1048575999, default 2048): # 直接回车
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-1048575999, default 1048575999): # 直接回车
Using default value 1048575999
Partition 1 of type Linux and of size 500 GiB is set

Command (m for help): p # 确认分区情况

Disk /dev/vdb: 536.9 GB, 536870912000 bytes, 1048576000 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xadfbfcb4

Device Boot Start End Blocks Id System
/dev/vdb1 2048 1048575999 524286976 83 Linux

Command (m for help): t # 选择系统id
Selected partition 1
Hex code (type L to list all codes): 8e # 8e指定的是使用LVM
Changed type of partition 'Linux' to 'Linux LVM'

Command (m for help): w # 保存
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

上面用注释标注的是需要在交互提示时输入的参数,完成之后使用fdisk -l查看确认

使用相同的办法处理/dev/vdc

LVM

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# pvcreate如果提示命令不存在,则需要安装lvm2
yum install lvm2 -y

# 使用pvcreate 创建物理卷
pvcreate /dev/vdb1
# 提示 Physical volume "/dev/vdb1" successfully created.
# 使用pvs或者 pvdisplay 查看结果
pvs
# PV VG Fmt Attr PSize PFree
# /dev/vdb1 lvm2 --- <500.00g <500.00g
# 使用同样的办法处理/dev/vdc1


# 使用vgcreate创建卷组,用于管理PV以及LV, 这里vgdata是随意的名字
vgcreate vgdata /dev/vdc1 /dev/vdb1
# 使用vgs 查看vg, vgdisplay的信息

# 使用lvcreate创建逻辑卷
# -L 后面是大小, -n 后面是逻辑卷名称, vgdata对应上面的卷组
lvcreate -L 900G -n data vgdata
# 使用lvdisplay 查看结果

Mkfs

完成上述操作后,对该卷组进行格式化,这里格式化成xfs

1
2
# 格式化成xfs, /dev/vgdata/data为上面 LV Path
mkfs.xfs /dev/vgdata/data

再次查看会发现vgdata-data确实是900G了

1
2
3
4
5
6
7
8
9
10
[root@spring-7 /]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 253:0 0 50G 0 disk
└─vda1 253:1 0 50G 0 part /
vdb 253:16 0 500G 0 disk
└─vdb1 253:17 0 500G 0 part
└─vgdata-data 252:0 0 900G 0 lvm
vdc 253:32 0 500G 0 disk
└─vdc1 253:33 0 500G 0 part
└─vgdata-data 252:0 0 900G 0 lvm

Mount

1
2
mkdir -p /data
mount /dev/vgdata/data /data

查看:

1
2
3
4
5
6
7
8
9
10
[root@spring-7 data]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 253:0 0 50G 0 disk
└─vda1 253:1 0 50G 0 part /
vdb 253:16 0 500G 0 disk
└─vdb1 253:17 0 500G 0 part
└─vgdata-data 252:0 0 900G 0 lvm /data
vdc 253:32 0 500G 0 disk
└─vdc1 253:33 0 500G 0 part
└─vgdata-data 252:0 0 900G 0 lvm /data

Auto mount

1
2
# 为了防止机器重启,需要将挂载操作写入到/etc/fstab中,加入下面一行即可
/dev/vgdata/data /data xfs defaults 1 1

整个过程倒是不复杂, 以后有这需要直接上个自动化脚本, 非常方便.

参考文章:

转载请注明原作者: 周淑科(https://izsk.me)

 wechat
Scan Me To Read on Phone
I know you won't do this,but what if you did?