Linux磁盘管理—逻辑卷管理

逻辑卷管理(Logical Volume Manager,LVM)是建立在物理磁盘和分区之上的一个逻辑层,通过它可以将若干个磁盘分区组合为一个整体的卷组,形成一个存储池。在卷组中可以任意创建逻辑卷,并进一步在逻辑卷上创建文件系统,最终在系统中挂载使用的就是逻辑卷。逻辑卷的使用方法与普通的磁盘分区完全一样。

在 LVM 中,主要涉及以下几个概念。

  • 物理卷(Physical Volume, PV)是构建LVM的基础,通常就是指磁盘或磁盘分区。实现LVM的第一步,就是将原先的普通磁盘或磁盘分区转换为LVM物理卷。在转换为物理卷之后,就可以像搭积木一样对它们进行灵活的组合和拆分了。

  • 卷组(Volume Group, VG)是一个存储池,它是LVM逻辑概念上的磁盘设备,可以将多个物理卷组合成卷组。卷组的大小取决于物理卷的容量和个数。

  • 逻辑卷(Logical Volume, LV)是LVM逻辑意义上的磁盘分区,我们可以指定从卷组中提取多少容量来创建逻辑卷,最后对逻辑卷进行格式化并挂载使用。

  • 物理块(Physical Extent, PE)是将物理卷组合为卷组后所划分的最小存储单位,即逻辑意义上磁盘的最小存储单元。PE的大小是可配置的,默认为4MB。

磁盘或磁盘分区转换为LVM的物理卷,多个物理卷组合为卷组,逻辑卷就是从卷组中提取出来的存储空间,最后我们将逻辑卷挂载到某个挂载点目录上。需要注意的是,由于“/boot”目录用于存放系统引导文件,因此不能应用 LVM 机制。

LVM的管理的命令

功能

物理卷管理

卷组管理

逻辑卷管理

Scan 扫描

pvscan

vgscan

lvscan

Create 建立

pvcreate

vgcreate

lvcreate

Display 显示

pvdisplay

vgdisplay

lvdisplay

Remove 删除

pvremove

vgremove

lvremove

Reduce 缩减

vgreduce

lvreduce

Extend 扩展

vgextend

lvextend

1、系统默认LVM设置

在CentOS 7系统中, LVM得到了高度重视。例如,在安装系统的过程中,如果由系统自动进行分区,则系统除创建一个“/boot”引导分区之外,会对剩余的磁盘空间全部采用LVM 机制。

(1)执行pvs命令可以显示系统中目前已有的物理卷简要信息,可以看到硬盘分区/dev/sdc已经变成了物理卷。

[root@mysqldb /]# pvs

  PV         VG     Fmt  Attr PSize   PFree  

  /dev/sdc1  wgroup lvm2 a--  <10.00g      0

  /dev/sdc5  wgroup lvm2 a--  <20.00g      0

  /dev/sdc6  wgroup lvm2 a--  <20.00g <19.99g

(2)执行 vgs 命令可以查看卷组简要信息,系统默认创建了一个名为wgroup的卷组,其中包括 1 个 PV(物理卷),卷组容量为 49GB。

[root@mysqldb /]# vgs

  VG     #PV #LV #SN Attr   VSize   VFree  

  wgroup   3   1   0 wz--n- <49.99g <19.99g

(3)执行lvs命令可以查看逻辑卷简要信息,系统在centos卷组中创建了两个逻辑卷。一个逻辑卷名为root,容量约为17GB;另一个逻辑卷名为swap,容量为2GB。

[root@mysqldb /]# lvs

  LV   VG     Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert

  ftp  wgroup -wi-ao---- 30.00g    

为了便于记忆,系统默认会在/dev/mapper目录中为所有的逻辑卷设备文件创建一个软链接,软链接的命名格式统一为“卷组名称-逻辑卷名称”。假设我们创建了一个名为wgroup 的卷组,然后在该卷组中创建了一个名为ftp的逻辑卷,那么该逻辑卷的设备文件名就是/dev/mapper/wgroup-ftp.

除此之外,系统还为逻辑卷的设备文件采用了另外一种命名方式"/dev/卷组名称/逻辑卷名称”。对于系统中原有的逻辑卷,它的另一个设备文件名为/dev/wgroup/ftp。查看该文件的详细信息,可以看到这也是一个软链接,同样指向源文件/dev/dm-0。当我们去挂载使用逻辑卷时,无论使用哪种命名方式都可以。

2、创建物理卷(PV)

物理卷就是包含有LVM相关管理参数的磁盘或磁盘分区,位于整个LVM体系的最底层。创建物理卷是实现LVM的第一步,用到的命令是pvcreate。

[root@mysqldb ~]# pvcreate /dev/sdc1 /dev/sdc5

  Physical volume "/dev/sdc1" successfully created.

  Physical volume "/dev/sdc5" successfully created.

PV创建完成后,除pvs命令之外,还可以执行命令pvdisplay来查看系统中所有PV的详细信息。从显示的信息中可以看到,系统自动创建的/dev/sda2的每个PE的大小为4MB,而我们创建的两个PV中则没有PE的信息,这是因为只有在将PV加入VG中时,系统才会指定PE的大小,同一个VG中所有PV的PE大小必须是统一的。

[root@mysqldb ~]# pvdisplay

  "/dev/sdc1" is a new physical volume of "10.00 GiB"

  --- NEW Physical volume ---

  PV Name               /dev/sdc1

  VG Name               

  PV Size               10.00 GiB

  Allocatable           NO

  PE Size               0   

  Total PE              0

  Free PE               0

  Allocated PE          0

  PV UUID               Mq0G1x-jDby-B4UF-oWfu-74O2-0P6H-fqjjwT

   

  "/dev/sdc5" is a new physical volume of "20.00 GiB"

  --- NEW Physical volume ---

  PV Name               /dev/sdc5

  VG Name               

  PV Size               20.00 GiB

  Allocatable           NO

  PE Size               0   

  Total PE              0

  Free PE               0

  Allocated PE          0

  PV UUID               DpGqdf-onbM-OgXr-VRp2-aiW5-xqzW-uc1Jak

另外,也可以执行命令"pvdisplay /dev/sdc”来查看指定PV的信息。

3、创建卷组(VG)

卷组是 LVM 的主体,类似于非 LVM 系统中的磁盘,由一个或多个物理卷组成。创建卷组用到的命令是vgcreate,在创建卷组时需要指定卷组的名称,每个卷组都必须是独一无二的,并且不要与/dev中已有的文件名称冲突。

例如,使用物理卷/dev/sdc1和/dev/sdc5创建名为wgroup的卷组。

[root@mysqldb ~]# vgcreate wgroup /dev/sdc1 /dev/sdc5

  Volume group "wgroup" successfully created

在创建卷组时,可以通过“-s”选项指定PE的大小。如果不手工设置,则默认大小为4MB。

用vgdisplay命令可以查看所有卷组或者指定卷组的信息。信息中的"Metadata Areas"表示卷组中共包括几个物理卷。

[root@mysqldb ~]# vgdisplay wgroup

  --- Volume group ---

  VG Name               wgroup

  System ID             

  Format                lvm2

  Metadata Areas        2

  Metadata Sequence No  1

  VG Access             read/write

  VG Status             resizable

  MAX LV                0

  Cur LV                0

  Open LV               0

  Max PV                0

  Cur PV                2

  Act PV                2

  VG Size               29.99 GiB

  PE Size               4.00 MiB

  Total PE              7678

  Alloc PE / Size       0 / 0   

  Free  PE / Size       7678 / 29.99 GiB

  VG UUID               HXJ4h3-0LkB-1uD1-KjoL-VJOJ-5vzE-uRl5Bt

4、创建逻辑卷(LV)

逻辑卷类似于非LVM系统中的磁盘分区,在逻辑卷上可以建立文件系统并进行挂载,它是我们最终所使用的对象。从卷组中创建逻辑卷,用到的命令是Ivcreate,命令基本格式如下。

lvcreate -L 容量大小-n 逻辑卷名 卷组名

例如,从wgroup卷组中创建名为ftp的容量为20GB的逻辑卷。由于在LVM中是以PE为单位来划分存储空间的,因此容量大小不能做到精确表示,这里创建容量为20GB的逻辑卷。

[root@mysqldb ~]# lvcreate -L 20G -n ftp wgroup

  Logical volume "ftp" created.

逻辑卷创建好之后,其设备文件名为"/dev/wgroup/ftp"或"/dev/mapper/wgroup-ftp",用lvdisplay命令可以查看逻辑卷的详细信息。

这样,我们就可以像使用正常的磁盘分区一样使用逻辑卷了。

[root@mysqldb ~]# ll /dev/wgroup/ftp

lrwxrwxrwx. 1 root root 7 Jul 25 13:42 /dev/wgroup/ftp -> ../dm-0

[root@mysqldb ~]#  ll /dev/mapper/wgroup-ftp

lrwxrwxrwx. 1 root root 7 Jul 25 13:42 /dev/mapper/wgroup-ftp -> ../dm-0

5、使用逻辑卷

逻辑卷相当于是一个磁盘分区,要使用它首先要将其格式化。

[root@mysqldb ~]# mkfs.xfs  /dev/wgroup/ftp

meta-data=/dev/wgroup/ftp        isize=512    agcount=4, agsize=1310720 blks

         =                       sectsz=512   attr=2, projid32bit=1

         =                       crc=1        finobt=0, sparse=0

data     =                       bsize=4096   blocks=5242880, imaxpct=25

         =                       sunit=0      swidth=0 blks

naming   =version 2              bsize=4096   ascii-ci=0 ftype=1

log      =internal log           bsize=4096   blocks=2560, version=2

         =                       sectsz=512   sunit=0 blks, lazy-count=1

realtime =none                   extsz=4096   blocks=0, rtextents=0

然后创建挂载点目录,将逻辑卷挂载。

[root@mysqldb /]# mkdir /ftp

[root@mysqldb /]# mount /dev/wgroup/ftp /ftp

修改/etc/fstab文件,实现永久挂载。

[root@localhost ~]# vim /etc/fstab

/dev/wgroup/ftp /var/ftp xfs defaults 0 0

查看已挂载的分区信息,这里看到的逻辑卷设备文件名为/dev/mapper/wgroup-ftp。

[root@mysqldb /]#  df -hT | grep -v tmpfs

Filesystem             Type      Size  Used Avail Use% Mounted on

/dev/sda2              xfs        50G  7.3G   43G  15% /

/dev/sdb5              xfs       8.0G   33M  8.0G   1% /data2

/dev/sda1              xfs      1014M  174M  841M  18% /boot

/dev/sda3              xfs        46G  4.5G   42G  10% /mysql

/dev/sdb1              xfs        10G  130M  9.9G   2% /data1

/dev/mapper/wgroup-ftp xfs        20G   33M   20G   1% /ftp

6、扩展逻辑卷空间

虽然我们创建的卷组是由两块硬盘设备共同组成的,但用户使用存储资源时感知不到底层硬盘的结构,也不用关心底层是由多少块硬盘组成的。这是由于逻辑卷是位于物理磁 盘和分区之上的一个逻辑层,因此逻辑卷可以跨越物理磁盘。

当需要扩充逻辑卷的空间时,首先应保证它所在的卷组有可分配的空余空间。我们可以按照前面的步骤,先添加一块硬盘,将其初始化成物理卷之后,再加入卷组中,这样就可以任意地调整逻辑卷的容量。

在调整容量之前应先卸载设备和挂载点的关联。

[root@mysqldb /]# umount /ftp

下面将硬盘/dev/sdc6转化为物理卷并加入逻辑卷中。

首先将硬盘转换成物理卷。

[root@mysqldb /]# pvcreate /dev/sdc6

  Physical volume "/dev/sdc6" successfully created.

然后将物理卷添加到卷组wgroup中,扩展卷组需要使用vgextend命令。

[root@mysqldb /]# vgextend wgroup /dev/sdc6

  Volume group "wgroup" successfully extended

扩展逻辑卷的空间需要用到Ivextend命令,通过“-L”选项可以指定要扩展的空间大小,“-L +10G”表示将空间增加 10GB, “-L 10G”则表示将空间增加到10GB,因而在使用是要注意区分。

下面将逻辑卷的空间在原有的基础之上增加 10GB。

[root@mysqldb /]# lvextend -L +10G /dev/wgroup/ftp

  Size of logical volume wgroup/ftp changed from 20.00 GiB (5120 extents) to 30.00 GiB (7680 extents).

  Logical volume wgroup/ftp successfully resized.

另外需要注意的是,Ivextend 只是扩大了逻辑卷的物理边界,除此之外,还需要扩大逻辑边界,也就是要更新文件系统的大小。只有这样,才能使逻辑卷的容量真正发生变化。 不同类型的文件系统,在更新时所采用的命令也不一样。对于 XFS 类型的文件系统,需要使用 xfs_growfs 命令更新大小;对于 EXT 类型的文件系统,则需要使用resize2fs 命令更新大小。由于我们之前将逻辑卷格式化成了XFS 文件系统,因此这里采用xfs_growfs命令进行更新。现将逻辑卷挂载,然后再更新逻辑卷文件系统的大小。

[root@mysqldb /]# mount /dev/wgroup/ftp  /ftp

[root@mysqldb /]# xfs_growfs /dev/wgroup/ftp

meta-data=/dev/mapper/wgroup-ftp isize=512    agcount=4, agsize=1310720 blks

         =                       sectsz=512   attr=2, projid32bit=1

         =                       crc=1        finobt=0 spinodes=0

data     =                       bsize=4096   blocks=5242880, imaxpct=25

         =                       sunit=0      swidth=0 blks

naming   =version 2              bsize=4096   ascii-ci=0 ftype=1

log      =internal               bsize=4096   blocks=2560, version=2

         =                       sectsz=512   sunit=0 blks, lazy-count=1

realtime =none                   extsz=4096   blocks=0, rtextents=0

data blocks changed from 5242880 to 7864320

重新查看文件系统的空间大小,可以看到/ftp 的容量已经变成了 30GB,而文件系统中原有的数据仍然保持完好无损。

[root@mysqldb /]# df -hT | grep -v tmpfs

Filesystem             Type      Size  Used Avail Use% Mounted on

/dev/sda2              xfs        50G  7.3G   43G  15% /

/dev/sdb5              xfs       8.0G   33M  8.0G   1% /data2

/dev/sda1              xfs      1014M  174M  841M  18% /boot

/dev/sda3              xfs        46G  4.5G   42G  10% /mysql

/dev/sdb1              xfs        10G  130M  9.9G   2% /data1

/dev/mapper/wgroup-ftp xfs        30G   33M   30G   1% /ftp

7、删除LVM分区

当我们想要重新部署或者不再需要逻辑卷分区时,通过相关命令也可以轻松地删除之前创建的物理卷、卷组和逻辑卷。删除的顺序应该与创建时的顺序相反,也就是应按照卸载文件系统→删除逻辑卷→删除卷组→删除物理卷这样的顺序。另外,在卸载文件系统时需要注意,应同步更新/etc/fstab文件,并且一定要提前备份好重要的数据信息。

卸载文件系统,并将/etc/fstab文件中的相关条目删除。

[root@localhost ~]# umount /var/ftp

删除逻辑卷,需要手工输入“y”来确认操作。

[root@mysqldb /]# lvremove /dev/wgroup/ftp

Do you really want to remove active logical volume ftp? [y/n]: y

Logical volume "ftp" successfully removed

删除卷组,此处只需写卷组名称即可,而不需要设备文件的完整路径。

[root@mysqldb /]# vgremove wgroup

Volume group "wgroup" successfully removed

删除物理卷。

[root@mysqldb /]# pvremove /dev/sd{b,c,d,e}

Labels on physical volume "/dev/sdb" successfully wiped.

Labels on physical volume "/dev/sdc" successfully wiped.

Labels on physical volume "/dev/sdd" successfully wiped.

Labels on physical volume "/dev/sde" successfully wiped.

执行以上操作后可以再分别执行Ivdisplay,vgdisplay和pvdisplay命令来查看逻辑卷管理器信息,操作正确的话就不会再看到逻辑卷设备信息了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ben@dw

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值