经常搞后台开发的人员,总是会涉及到系统磁盘的管理,例如创建裸设备,自定义磁盘分区,使用了一阵子后为某个分区扩展逻辑卷等等。那么,Linux系统中,有这么三个的系列命令可以完成这些事情:
PV(Physical volume):pvdisplay,pvcreate...
VG(Volume group):vgdisplay,vgcreate...
LV(Logical volume):lvdisplay,lvcreate...
这些命令属于Linux的逻辑盘卷管理(LVM,Logical Volume Manager)功能,想要使用这些命令,首先需要安装LVM,用下面这个命令查看是否已安装LVM
rpm -qa | grep lvm
如果还没有安装LVM,用rpm -ivh安装,配有yum源的话可以用yum install
创建和管理LVM
一般情况下,有两种方式
-
基于分区的方式
基于分区的方式,需要事先通过fdisk或者其他方式对磁盘分区,分区之后不格式化文件系统,然后再用pvcreate来创建物理卷 -
基于磁盘的方式
基于磁盘的方式,直接对磁盘创建物理卷(PV),然后分配卷组(VG),再在卷组里面添加逻辑卷(LV)
本次着重描述第二种方式,一般适用于专属服务器,比如数据库服务器,整个磁盘都是为数据库服务而设的,可以根据数据库服务的需求,直接划分出数据盘,备份盘,归档盘等等,相对简单易行
查看物理盘
查看机器上挂在的磁盘,一般是/dev/sda或者/dev/vda这种名字,这些就是实际的物理磁盘目录,也是之后pv命令操作的对象
[root@sndsdevdb01 ~]# fdisk -l
Disk /dev/vda: 53.7 GB, 53687091200 bytes
16 heads, 63 sectors/track, 104025 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0001eed7
...
创建物理卷
# 格式:pvcreate 物理磁盘目录
[root@sndsdevdb01 ~]#pvcreate /dev/vda
# 查看已创建的物理卷
[root@sndsdevdb01 ~]#pvdisplay
--- Physical volume ---
PV Name /dev/vda # 物理卷名
VG Name datavg # 这个是之后创建的卷组名
PV Size 500.00 GiB / not usable 4.00 MiB # 物理卷大小
Allocatable yes
PE Size 4.00 MiB # 单个extend的大小,默认4M
Total PE 127999
Free PE 2559
Allocated PE 125440
PV UUID TAFUmM-bn0x-nMmu-WSYc-sRW2-gXFd-AdByK5
创建卷组
# 格式:vgcreate 卷组名 物理磁盘目录
[root@sndsdevdb01 ~]#vgcreate datavg /dev/vda
# 查看已经创建的卷组
[root@sndsdevdb01 ~]#vgdisplay
--- Volume group ---
VG Name datavg # 卷组名
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 9
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 500.00 GiB # 卷组的总大小
PE Size 4.00 MiB
Total PE 127999
Alloc PE / Size 125440 / 490.00 GiB # 已分配的大小(已创建有LV)
Free PE / Size 2559 / 10.00 GiB # 未分配的大小
VG UUID twmovy-yiJ3-F6vq-SxCK-sIg9-oreK-psnpb9
...
创建逻辑卷
# 格式: lvcreate -n 逻辑卷名 -L 逻辑卷大小 卷组名
[root@sndsdevdb01 ~]#lvcreate -n data_lv_name -L data_size datavg
# 查看已经创建的逻辑卷
[root@sndsdevdb01 ~]#lvdisplay
--- Logical volume ---
LV Path /dev/datavg/datalv
LV Name datalv
VG Name datavg
LV UUID x7xW4c-QahO-Mapv-hu5h-6hXw-c6K9-1zZrWA
LV Write Access read/write
LV Creation host, time sndsdevdb01, 2017-07-14 15:32:14 +0800
LV Status available
# open 1
LV Size 450.00 GiB
Current LE 115200
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:7
...
至此,LVM的创建就完成了
此时,上述LV还没有被格式化文件系统,属于裸设备
如需要存储数据,还需要对LV进行mkfs操作
格式化文件系统
以ext3类型为例
# 格式: mkfs.ext3 LV名
# 也可以使用mkfs -t ext3 的方式
[root@sndsdevdb01 ~]# mkfs.ext3 device
扩展LV的大小
系统使用一段时间后,可能LV的空间已经满了,或者一开始操作有误,空间给小了,需要扩展大小,可以使用lvextend命令
首先先确认卷组中是否有剩余空间
[root@sndsdevdb01 ~]#vgdisplay
--- Volume group ---
VG Name datavg
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 9
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 500.00 GiB
PE Size 4.00 MiB
Total PE 127999
Alloc PE / Size 125440 / 490.00 GiB # 已分配的大小(已创建有LV)
Free PE / Size 2559 / 10.00 GiB # 未分配的大小
VG UUID twmovy-yiJ3-F6vq-SxCK-sIg9-oreK-psnpb9
如果上面的“Free PE / Size”还有空间,并且剩余的空间能满足扩展需求,那么可以直接用lvextend命令
# 格式: lvextend -L +10G lv绝对路径
# 注意要有加号,否则就表示将该lv扩展至10G
[root@sndsdevdb01 ~]#lvextend -L +10G lv_path
扩展完成后,还需补充格式化新扩展的卷的文件系统,否则df -hl是看不到扩展的大小的
[root@sndsdevdb01 ~]#resize2fs lv_path
那么,如果VG中已经没有剩余空间了,那么就需要追加挂载磁盘,然后重新创建新的PV,然后加到当前的VG中(vgextend),然后才是LV的扩展
网友评论