使用Linux lvm
概览
这次是要给服务器的安装一个MySQL数据库系统,需要一个比较大的空间,而且要能后期灵活增加空间,所以把已有的硬盘做成lvm是最好的选择。逻辑卷是一个很好用的磁盘管理工具,就像它的名字,你操作的是逻辑卷而不是直接使用物理磁盘。我们可以方便的调整逻辑卷的大小而不会损坏数据,随时把新磁盘加入逻辑卷管理来拓展存储空间。lvm的结构如下图所示
如图所示,磁盘和磁盘的分区可以加入一个物理卷(PV),一个或者多个物理卷组成一个卷组(VG),在卷组的基础上可以创建逻辑卷(LV)。
本例中有12块4T大小的硬盘,我们把这12块硬盘都加入lvm,切分出其中的一部分创建lv并挂在到/app。大致过程是:
- 给每个硬盘分一个区
- 把所有的分区创建为物理卷
- 把物理卷加入卷组
- 在卷组的基础上创建逻辑卷
- 格式化逻辑卷
- 挂载逻辑卷
操作过程
安装parted
使用parted给硬盘分区,因为是大于2T的硬盘,所以我们采用parted划分硬盘而不是传统的fdisk。大部分Linux系统会有parted的安装,如果没有请使用各自的方法安装,此处仅示范centos和Ubuntu的安装
$ sudo apt install parted
$ sudo yum install parted
给硬盘分区
我们这次把整块硬盘作一个分区全部加入一个物理卷中(或许物理磁盘不分区也能直接加入物理卷,但我没有试验成功,所以这次我把整个磁盘分到一个分区中),使用parted进行分区
$ sudo parted /dev/sdb
GNU Parted 3.1
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted)
查看已有的分区信息
(parted) print
Model: QEMU QEMU HARDDISK (scsi)
Disk /dev/sdb: 4001GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: pmbr_boot
Number Start End Size File system Name Flags
1 17.4kB 4001GB 4001GB sdb1
这是一个分好的硬盘分区信息一共4T,分区表类型是的gpt,把所有空间分到一个分区里了。如果是一个新硬盘需要创建分区表和分区:
(parted) mkpart
Partition name? []? sdb1
File system type? [ext2]? xfs
Start? 0
End? 4001G
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel? i
(parted) quit
退出保存分区信息,我们这里应为业务需要把整个盘放到一个分区里了,当然你也可以分多个区,计算好开始和结束的区间就行。后面11块硬盘相同的操作方式做好分区准备,盘符大致:sdb1, sdc1,sdd1...sdm1
把分区加入物理卷
把12个分区都加入物理卷
$ sudo pvcreate /dev/sdb1
$ sudo pvcreate /dev/sdc1
...
$ sudo pvcreate /dev/sdm1
创建完物理卷后,运行pvdisplay查看一下建好的物理卷,执行完pvdisplay后显示的结果大致如下,我只显示了一个pv的。
$ sudo pvdisplay
--- Physical volume ---
PV Name /dev/sdb1
VG Name
PV Size <3.64 TiB / not usable 3.80 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 953861
Free PE 0
Allocated PE 953861
PV UUID 70p52P-TafB-YkwL-YG8P-Bo0x-3C0i-coKJMu
当然如果有问题,也可以使用 pvremove删除物理卷
$ sudo pvremove /dev/sdb1
加入卷组
把建好的12个物理卷加入一个卷组,这是我们的业务需求,把12个物理卷加到一个卷组中,你也可以根据自己的需求灵活配置。下列命令就是把12个物理卷加入一个名称为vgapp的卷组里。
$ sudo vgcreate vgapp /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1 /dev/sdg1 /dev/sdh1 /dev/sdi1 /dev/sdj1 /dev/sdk1 /dev/sdl1 /dev/sdm1
使用vgdisplay查看已建的卷组
$ sudo vgdisplay
--- Volume group ---
VG Name vgapp
System ID
Format lvm2
Metadata Areas 12
Metadata Sequence No 2
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 12
Act PV 12
VG Size 43.66 TiB
PE Size 4.00 MiB
Total PE 11446332
Alloc PE / Size 0 / 0
Free PE / Size 6203452 / 23.66 TiB
VG UUID Kc9ybM-8ZTw-OOPY-opX5-Azgc-dbgB-HMCeIs
从输出中,我们可以看见卷组的使用量/总量。只要在这个卷组中还有可用空间,我们就可以随意创建逻辑卷。
如果卷组分配不合理也可以使用vgremove删除卷组重新建
$ sudo vgremove vgapp
创建逻辑卷
上一步我们已经建好了一个名称为vgapp的卷组,现在我们就可以在这个卷则上建一个逻辑卷了。我们需要用到大概20T空间在名为vgapp的卷组上建立一个名为lvapp的逻辑卷.
sudo lvcreate -L 20T -n lvapp vgapp
这里的是创建了一个默认的Linear逻辑卷,其实还支持其他的方式建立逻辑卷,比如条带化卷(类似raid0),镜像卷(类似raid1)或者它们的集中组合,这些我以后再研究。创建完成后使用lvdisplay查看刚建好的逻辑卷
$ sudo lvdisplay
结果如下
$ sudo lvdisplay
--- Logical volume ---
LV Path /dev/vgapp/lvapp
LV Name lvapp
VG Name vgapp
LV UUID 1CpWwd-b4Wf-fdqP-gMPO-1Jb8-0w0h-idvXBo
LV Write Access read/write
LV Creation host, time xjwlmq-16f-c07-sev-hw2288v3-02u10, 2019-02-28 13:25:34 +0800
LV Status available
# open 1
LV Size 20.00 TiB
Current LE 5242880
Segments 6
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
使用逻辑卷
逻辑卷建好了就可以把它格式化并挂在到系统的某个目录开始使用了
$ sudo mkfs.xfs /dev/vgapp/lvapp
$ sudo mkdir /app
$ sudo mount /dev/vgapp/lvapp /app/
挂载完成后就可以看看我们的劳动成果
$ sudo df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 1.0T 1.2G 1023G 1% /
devtmpfs 63G 0 63G 0% /dev
tmpfs 63G 0 63G 0% /dev/shm
tmpfs 63G 553M 63G 1% /run
tmpfs 63G 0 63G 0% /sys/fs/cgroup
/dev/sda1 509M 128M 381M 26% /boot
/dev/mapper/vgapp-lvapp 20T 33M 20T 1% /app
tmpfs 13G 0 13G 0% /run/user/1001
其中20T那个/app目录挂载的就是我们刚建的逻辑卷。最后别忘记把这放到/etc/fstab中实现开机挂载
$ sudo cat /etc/fatab
#
# /etc/fstab
# Created by anaconda on Sun Oct 14 10:36:44 2018
#
# 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=a7f90806-f11c-41ca-8210-2a758d38aed8 / xfs defaults 0 0
UUID=ca13fb4a-64a6-4a2b-9847-c309145ae3b4 /boot xfs defaults 0 0
/dev/vgapp/lvapp /app xfs defaults 1 2
后记
lvm的功能强大的很,以后可以多研究一下,除了支持类似raid的逻辑卷外,还有快照等功能。
参考文档
- https://linux.cn/article-3218-1.html
- https://linux.cn/article-9536-1.html
- https://www.computerhope.com/unix/parted.htm
- https://blog.csdn.net/Man_In_The_Night/article/details/86575198
- http://www.cnblogs.com/onlybobby/p/7018788.html