Linux 高级文件系统管理之LVM 逻辑卷管理

目录

LVM 逻辑卷管理

LVM 逻辑卷简介

建立 LVM 的步骤

物理卷管理

硬盘分区

建立物理卷

查看物理卷

删除物理卷

卷组管理

建立卷组

查看卷组

增加卷组容量

减小卷组容量

删除卷组

逻辑卷管理

建立逻辑卷

查看逻辑卷

调整逻辑卷大小

删除逻辑卷


LVM 逻辑卷管理

LVM 逻辑卷简介

  • LVM 是 Logical Volume Manager 的简称,中文就是逻辑卷管理。
Linux 高级文件系统管理之LVM 逻辑卷管理_第1张图片
  • 物理卷(PV,Physical Volume):就是真正的物理硬盘或分区。
  • 卷组(VG,Volume Group):将多个物理卷合起来就组成了卷组,组成同一个卷组的物理卷可以是同一个硬盘的不同分区,也可以是不同硬盘上的不同分区。我们可以把卷组想象为一个逻辑硬盘。
  • 逻辑卷(LV,Logical Volume):卷组是一个逻辑硬盘,硬盘必须分区之后才能使用,这个分区我们称作逻辑卷。逻辑卷可以格式化和写入数据。我们可以把逻辑卷想象成为分区。
  • 物理扩展(PE,Physical Extend):PE 是用来保存数据的最小单元,我们的数据实际上都是写入 PE 当中,PE 的大小是可以配置的,默认是 4MB。

建立 LVM 的步骤

  • 首先需要把物理硬盘分成分区,当然也可以是整块物理硬盘。
  • 然后把物理分区建立成为物理卷(PV),也可以直接把整块硬盘都建立为物理卷。
  • 接下来把物理卷整合成为卷组(VG)。卷组就已经可以动态的调整大小了,可以把物理分区加入卷组,也可以把物理分区从卷组中删除。
  • 最后就是把卷组再划分成为逻辑卷(LV),当然逻辑卷也是可以直接调整大小的。我们说逻辑卷可以想象成为分区,所以也需要格式化和挂载。

Linux 高级文件系统管理之LVM 逻辑卷管理_第2张图片

Linux 高级文件系统管理之LVM 逻辑卷管理_第3张图片

Linux 高级文件系统管理之LVM 逻辑卷管理_第4张图片

Linux 高级文件系统管理之LVM 逻辑卷管理_第5张图片

Linux 高级文件系统管理之LVM 逻辑卷管理_第6张图片

Linux 高级文件系统管理之LVM 逻辑卷管理_第7张图片

Linux 高级文件系统管理之LVM 逻辑卷管理_第8张图片

Linux 高级文件系统管理之LVM 逻辑卷管理_第9张图片

物理卷管理

硬盘分区

  • 创建方式就是使用 fdisk 交互命令,不过需要注意的是分区的系统 ID 不再是 Linux 默认的分区ID 号 83 了,而要改成 LVM 的 ID 号 8e。

建立物理卷

[root@localhost ~]# pvcreate [设备文件名]
  • 建立物理卷时,我们说即可以把整块硬盘都建立成物理卷,也可以把某个分区建立成物理卷。如果要把整块硬盘都建立成物理卷,命令如下
[root@localhost ~]# pvcreate /dev/sdb
  • 在使用时,是要把分区建立成为物理卷,所以执行以下命令:
[root@localhost ~]# pvcreate /dev/sdb5

查看物理卷

[root@localhost ~]# pvscan 
 PV /dev/sdb5 lvm2 [1.01 GiB]
 PV /dev/sdb6 lvm2 [1.01 GiB]
 PV /dev/sdb7 lvm2 [1.01 GiB]
 Total: 3 [3.03 GiB] / in use: 0 [0 ] / in no VG: 3 [3.03 GiB]
  • 可以看到在系统中,/dev/sdb5-7 这三个分区是物理卷。最后一行的意思是:总共 3 个物理卷[大小] / 使用了 0 个卷[大小] / 空闲 3 个卷[大小]。
  • 第二个查询命令是 pvdisplay,它可以查看到更详细的物理卷状态,命令如下:

Linux 高级文件系统管理之LVM 逻辑卷管理_第10张图片

删除物理卷

[root@localhost ~]# pvremove /dev/sdb7

卷组管理

建立卷组

[root@localhost ~]# vgcreate [选项] 卷组名 物理卷名
  • 选项:
    • -s PE 大小:指定 PE 的大小,单位可以是 MB,GB,TB 等。如果不写默认 PE 大小事 4MB
  • 有三个物理卷/dev/sdb5-7,先把/dev/sdb5 和/dev/sdb6 加入卷组,留着/dev/sdb7 一会实验调整卷组大小,命令如下:
[root@localhost ~]# vgcreate -s 8MB scvg /dev/sdb5 /dev/sdb6
 Volume group "scvg" successfully created

查看卷组

  • 查看卷组的命令同样是两个,vgscan 主要是查看系统中是否有卷组,而 vgdisplay 则是查看卷组的详细状态的。命令如下:
[root@localhost ~]# vgscan

Linux 高级文件系统管理之LVM 逻辑卷管理_第11张图片

增加卷组容量

Linux 高级文件系统管理之LVM 逻辑卷管理_第12张图片

Linux 高级文件系统管理之LVM 逻辑卷管理_第13张图片

减小卷组容量

[root@localhost ~]# vgreduce scvg /dev/sdb7 
 Removed "/dev/sdb7" from volume group "scvg"
#在卷组中删除/dev/sdb7 物理卷
[root@localhost ~]# vgreduce -a
#删除所有的未使用物理卷

删除卷组

[root@localhost ~]# vgremove scvg
 Volume group "scvg" successfully removed
  • 卷组删除之后,才能删除删除物理卷。
  • 还要注意的是 scvg 卷组还没有添加任何的逻辑卷,那如果拥有了逻辑卷,记得先删除逻辑卷再删除卷组。
  • 删除就是安装的反过程,每一步都不能跳过

逻辑卷管理

建立逻辑卷

[root@localhost ~]# lvcreate [选项] [-n 逻辑卷名] 卷组名
  • 选项:
    • -L 容量:指定逻辑卷大小,单位 MB,GB,TB 等
    • -l 个数:按照 PE 个数指定逻辑卷大小,这个参数需要换算容量,太麻烦
    • -n 逻辑卷名:指定逻辑卷名
  • 就建立一个 1.5GB 的 userlv 逻辑卷,建立命令如下:
[root@localhost ~]# lvcreate -L 1.5G -n userlv scvg
 Logical volume "userlv" created
#在 scvg 卷组中建立 1.5GB 的 userlv 逻辑卷
  • 建立完逻辑卷之后,还要格式化和挂载之后逻辑卷才能正常使用
  • 格式化和挂载命令和操作普通分区时是一样的,不过需要注意的是逻辑卷的设备文件名是/dev/卷组名/逻辑卷名,如我们的 userlv的设备文件名就是“/dev/scvg/userlv”,具体命令如下:
[root@localhost ~]# mkfs -t ext4 /dev/scvg/userlv
#格式化
[root@localhost ~]# mkdir /disklvm
[root@localhost ~]# mount /dev/scvg/userlv /disklvm/
#建立挂载点,并挂载
[root@localhost ~]# mount 
…省略部分输出…
/dev/mapper/scvg-userlv on /disklvm type ext4 (rw)
#已经挂载了
  • 当然如果需要开机自动挂载,也要修改/etc/fstab 文件

查看逻辑卷

  • 同样的查看命令是两个,第一个命令 lvscan 只能看到系统中是否拥有逻辑卷,命令如下:
[root@localhost ~]# lvscan 
 ACTIVE '/dev/scvg/userlv' [1.50 GiB] inherit
#能够看到激活的逻辑卷,大小为 1.5GB
  • 第二个命令是 lvdisplay 可以看到逻辑卷的详细信息,命令如下:
Linux 高级文件系统管理之LVM 逻辑卷管理_第14张图片

调整逻辑卷大小

[root@localhost ~]# lvresize [选项] 逻辑卷设备文件名
  • 选项:
    • -L 容量:安装容量调整大小,单位 KB,GB,TB 等。使用+代表增加空间,-号代表减少空间。如果直接写容量,代表设定逻辑卷大小为指定大小。
    • -l 个数:按照 PE 个数调整逻辑卷大小
  • 先在/disklvm 中建立点文件,一会调整完大小,看看数据是否会丢失:
[root@localhost ~]# cd /disklvm/
[root@localhost disklvm]# touch testf
[root@localhost disklvm]# mkdir testd
[root@localhost disklvm]# ls
lost+found testd testf
之前的 userlv 的大小是1.5GB, scvg 中还有 1.5GB 的空闲空间,那么增加的userlv 逻辑卷的大小到 2.5GB
[root@localhost disklvm]# lvresize -L 2.5G /dev/scvg/userlv 
 Extending logical volume userlv to 2.50 GiB
 Logical volume userlv successfully resized
#增加 userlv 逻辑卷的大小到 2.5GB
#当然命令也可以这样写 [root@localhost disklvm]# lvresize -L +1G /dev/scvg/userlv
[root@localhost disklvm]# lvdisplay 
 --- Logical volume ---
 LV Path /dev/scvg/userlv
 LV Name userlv
 VG Name scvg
 LV UUID 2kyKmn-Nupd-CldB-8ngY-NsI3-b8hV-QeUuna
 LV Write Access read/write
 LV Creation host, time localhost, 2013-04-18 03:36:39 +0800
 LV Status available
 # open 1
 LV Size 2.50 GiB  #大小改变了
 Current LE 320
 Segments 3
 Allocation inherit
 Read ahead sectors auto
 - currently set to 256
 Block device 253:0
  • 逻辑卷的大小已经改变了,但是好有些问题:

  • 怎么/disklvm 分区的大小还是 1.5GB ?
    • 刚刚只是逻辑卷的大小改变了,如果需要让分区使用这个新逻辑卷,还要使用 resize2fs 命令来调整分区的大小。不过这里就体现了 LVM 的优势,我们不需要卸载分区,直接就能调整分区的大小。resize2fs 命令如下:
[root@localhost ~]# resize2fs [选项] [设备文件名] [调整的大小]
  • 选项:
    • -f: 强制调整
    • 设备文件名:指定调整哪个分区的大小
    • 调整的大小:指定把分区调整到多大,要加 M,G 等单位。如果不加大小,会使用整个分区
  • 已经把逻辑卷调整到了 2.5GB,这时就需要把整个逻辑卷都加入/disklvm 分区,命令如下:
[root@localhost ~]# resize2fs /dev/scvg/userlv 
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/scvg/userlv is mounted on /disklvm; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/scvg/userlv to 655360 (4k) blocks.
The filesystem on /dev/scvg/userlv is now 655360 blocks long.
#已经调整了分区大小

Linux 高级文件系统管理之LVM 逻辑卷管理_第15张图片

删除逻辑卷

[root@localhost ~]# lvremove 逻辑卷设备文件名
  • 删除 userlv 这个逻辑卷,记得删除时要先卸载。命令如下:
[root@localhost ~]# umount /dev/scvg/userlv 
[root@localhost ~]# lvremove /dev/scvg/userlv

【注】:参考尚硅谷沈超老师教程

你可能感兴趣的:(Linux基础)