PV,VG及LV的使用

经常搞后台开发的人员,总是会涉及到系统磁盘的管理,例如创建裸设备,自定义磁盘分区,使用了一阵子后为某个分区扩展逻辑卷等等。那么,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

一般情况下,有两种方式

  1. 基于分区的方式
    基于分区的方式,需要事先通过fdisk或者其他方式对磁盘分区,分区之后不格式化文件系统,然后再用pvcreate来创建物理卷

  2. 基于磁盘的方式
    基于磁盘的方式,直接对磁盘创建物理卷(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的扩展

你可能感兴趣的:(PV,VG及LV的使用)