基于linux下的lvm逻辑卷管理

LVM可以使硬盘无限扩容:

PV(physical volume):物理卷在逻辑卷管理系统最底层,可为整个物理硬盘或实际物理硬盘上的分区。
VG(volume group):卷组建立在物理卷上,一卷组中至少要包括一物理卷,卷组建立后可动态的添加卷到卷组中,
一个逻辑卷管理系统工程中可有多个卷组。
LV(logical volume):逻辑卷建立在卷组基础上,卷组中未分配空间可用于建立新的逻辑卷,逻辑卷建立后可以动态
扩展和缩小空间。
PE(physical extent):物理区域是物理卷中可用于分配的最小存储单元,物理区域大小在建立卷组时指定,一旦确定
不能更改,同一卷组所有物理卷的物理区域大小需一致,新的pv加入到vg后,pe的大小自动更改为vg中定义的pe大小。
LE(logical extent):逻辑区域是逻辑卷中可用于分配的最小存储单元,逻辑区域的大小取决于逻辑卷所在卷组中的物理
区域的大小。
卷组描述区域:卷组描述区域存在于每个物理卷中,用于描述物理卷本身、物理卷所属卷组、卷组中逻辑卷、
逻辑卷中物理区域的分配等所有信息,它是在使用pvcreate建立物理卷时建立的。

LVM原理图:

基于linux下的lvm逻辑卷管理_第1张图片
还原环境:

[root@localhost ~]# umount /mnt/   解除挂载
[root@localhost ~]# vim /etc/fstab 删除开机自动挂载
[root@localhost ~]# cat /etc/fstab 查看文件内容已经被删除
[root@localhost ~]# fdisk /dev/vdb  删除分区
[root@localhost ~]# partprobe   同步
[root@localhost ~]# fdisk -l    查看硬件信息

解除挂载删除分区:
基于linux下的lvm逻辑卷管理_第2张图片
查看硬件信息:
基于linux下的lvm逻辑卷管理_第3张图片

常用的LVM部署命令:

基于linux下的lvm逻辑卷管理_第4张图片

LVM逻辑卷的管理:

打开两个shell,同时连接server虚拟机将其中一台A进行监控,在另外一台B查看命令效果
A:

[root@localhost ~]# watch -n 1 'pvs;vgs;lvs;df -h /mnt'

B:

[root@localhost ~]# fdisk /dev/vdb   建立三个1G分区并更改类型为8e

Command (m for help): t
Partition number (1-3, default 3): 1
Hex code (type L to list all codes): 8e
Changed type of partition 'Linux' to 'Linux LVM'

Command (m for help): wq
[root@localhost ~]# partprobe   同步
[root@localhost ~]# pvcreate /dev/vdb1 将分区做成物理卷
[root@localhost ~]# vgcreate vg0 /dev/vdb1  创建卷组
[root@localhost ~]# lvcreate -L 300M -n lv0 vg0  创建逻辑卷并指定逻辑卷的大小为300M
[root@localhost ~]# mkfs.xfs /dev/vg0/lv0  将逻辑卷格式化
[root@localhost ~]# mount /dev/vg0/lv0 /mnt/  linux下的文件系统需要挂载才可以使用,将逻辑卷挂载
[root@localhost ~]# df
Filesystem          1K-blocks    Used Available Use% Mounted on
/dev/vda1            10473900 3804420   6669480  37% /
devtmpfs               469344       0    469344   0% /dev
tmpfs                  484932      80    484852   1% /dev/shm
tmpfs                  484932   12788    472144   3% /run
tmpfs                  484932       0    484932   0% /sys/fs/cgroup
/dev/mapper/vg0-lv0    303788   15520    288268   6% /mnt
[root@localhost ~]# ll /dev/vg0/lv0   两个文件内容一样
lrwxrwxrwx. 1 root root 7 May  4 22:54 /dev/vg0/lv0 -> ../dm-0
[root@localhost ~]# ll /dev/mapper/vg0-lv0  lv
ls: cannot access lv: No such file or directory
lrwxrwxrwx. 1 root root 7 May  4 22:54 /dev/mapper/vg0-lv0 -> ../dm-0

B虚拟机中操作,A虚拟机中操作:

建立分区同步建立物理卷:
基于linux下的lvm逻辑卷管理_第5张图片
格式化进行挂载
基于linux下的lvm逻辑卷管理_第6张图片
我们可以看一下A虚拟机监控的最终情况:
如下图所示已经建立了物理卷,物理卷组,逻辑卷。
基于linux下的lvm逻辑卷管理_第7张图片

LVM逻辑卷的扩容:

[root@localhost ~]# df  查看挂载
Filesystem          1K-blocks    Used Available Use% Mounted on
/dev/vda1            10473900 3804380   6669520  37% /
devtmpfs               469344       0    469344   0% /dev
tmpfs                  484932      80    484852   1% /dev/shm
tmpfs                  484932   12816    472116   3% /run
tmpfs                  484932       0    484932   0% /sys/fs/cgroup
/dev/mapper/vg0-lv0    303788   15520    288268   6% /mnt
[root@localhost ~]# lvextend -L 500M /dev/vg0/lv0 扩展,但是文件系统不会更改
[root@localhost ~]# xfs_growfs /dev/vg0/lv0 将文件系统扩展
[root@localhost ~]# pvcreate /dev/vdb2 将分区做成物理卷
  Physical volume "/dev/vdb2" successfully created
[root@localhost ~]# vgextend vg0 /dev/vdb2  创建卷组
  Volume group "vg0" successfully extended
[root@localhost ~]# lvextend -L 1500M /dev/vg0/lv0 因为1.5G不够我们扩容,所以要另外增加vdb2,扩容。
  Extending logical volume lv0 to 1.46 GiB
  Logical volume lv0 successfully resized
[root@localhost ~]# xfs_growfs /dev/vg0/lv0  从监控来看文件系统依旧没有扩展所以需要这个命令扩展文件系统

B虚拟机,对逻辑卷和文件系统进行扩容:
基于linux下的lvm逻辑卷管理_第8张图片
不够扩容了,所以需要建立物理卷2来进行扩容。
基于linux下的lvm逻辑卷管理_第9张图片
A虚拟机的监控来看效果已经扩容成功:
基于linux下的lvm逻辑卷管理_第10张图片

xfs文件系统不支持缩容操作,LVM逻辑卷的扩容(逻辑卷格式为ext4)

[root@localhost ~]# umount /mnt/  解除挂载
[root@localhost ~]# mkfs.ext4 /dev/vg0/lv0 将逻辑卷格式化成ext4格式
[root@localhost ~]# mount /dev/vg0/lv0 /mnt 将逻辑卷挂载到/mnt下
[root@localhost ~]# ls /mnt   查看/mnt
lost+found
[root@localhost ~]# lvextend -L 1800M /dev/vg0/lv0  扩展逻辑卷
  Extending logical volume lv0 to 1.76 GiB
  Logical volume lv0 successfully resized
[root@localhost ~]# resize2fs /dev/vg0/lv0  更新逻辑卷信息
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/vg0/lv0 is mounted on /mnt; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/vg0/lv0 is now 460800 blocks long.

B虚拟机进行扩容操作,A虚拟机查看效果:
1,格式化成ext4格式
基于linux下的lvm逻辑卷管理_第11张图片
2,将文件系统和逻辑卷均进行扩容:
基于linux下的lvm逻辑卷管理_第12张图片
A虚拟机查看效果,已经成功扩容:;
基于linux下的lvm逻辑卷管理_第13张图片

LVM缩容操作:(很少使用,xfs文件系统不支持,ext文件系统支持)

[root@localhost ~]# umount /mnt/  卸载
[root@localhost ~]# e2fsck -f /dev/vg0/lv0  检查是否有错误
[root@localhost ~]# resize2fs /dev/vg0/lv0 1000M  进行缩容操作
[root@localhost ~]# mount /dev/vg0/lv0 /mnt  挂载
[root@localhost ~]# lvreduce -L 1000M /dev/vg0/lv0  更新逻辑卷信息

在B虚拟机操作,A虚拟机进行监控:
B进行缩容:
基于linux下的lvm逻辑卷管理_第14张图片
A进行查看已经缩容成功:
基于linux下的lvm逻辑卷管理_第15张图片

如何缩减卷组:

[root@localhost ~]# pvmove /dev/vdb1 /dev/vdb2 将vdb1移到闲置的vdb2中
[root@localhost ~]# vgreduce vg0 /dev/vdb1  从vg中移除vdb1
[root@localhost ~]# pvremove /dev/vdb1   删除/vdb1

pvremove  [选项] [参数]
pvremove指令用于删除一个存在的物理卷
主要参数:
-d	调试模式
-f	强制删除
-y	对提问回答“yes”
[root@localhost ~]# pvs    查看设备容量
  PV         VG   Fmt  Attr PSize    PFree 
  /dev/vdb2  vg0  lvm2 a--  1020.00m 20.00m
[root@localhost ~]# df -H   查看设备信息
Filesystem           Size  Used Avail Use% Mounted on
/dev/vda1             11G  3.9G  6.9G  37% /
devtmpfs             481M     0  481M   0% /dev
tmpfs                497M   82k  497M   1% /dev/shm
tmpfs                497M   14M  484M   3% /run
tmpfs                497M     0  497M   0% /sys/fs/cgroup
/dev/mapper/vg0-lv0  999M  3.9M  933M   1% /mnt

A虚拟机中监控到将/vdb1移到/vdb2中时:
基于linux下的lvm逻辑卷管理_第16张图片
B虚拟机中进行vg的缩减:
基于linux下的lvm逻辑卷管理_第17张图片
A虚拟机查看最后的vg缩减查看:
基于linux下的lvm逻辑卷管理_第18张图片
LVM的快照指令:

[root@localhost ~]# df   查看挂载
Filesystem          1K-blocks    Used Available Use% Mounted on
/dev/vda1            10473900 3808456   6665444  37% /
devtmpfs               469344       0    469344   0% /dev
tmpfs                  484932      80    484852   1% /dev/shm
tmpfs                  484932   12788    472144   3% /run
tmpfs                  484932       0    484932   0% /sys/fs/cgroup
/dev/mapper/vg0-lv0    975128    3764    910288   1% /mnt
[root@localhost ~]# cd /mnt
[root@localhost mnt]# ls
[root@localhost mnt]# touch westos{1..7}
[root@localhost mnt]# cd
[root@localhost ~]# umount /mnt/  解除挂载
[root@localhost ~]# ls /mnt/
[root@localhost ~]# lvcreate -L 50M -n lv0backup -s /dev/vg0/lv0 拍照,-s代表拍照到指定路径,-n后面接照片名字,报错是因为大小不够,-L指定大小
[root@localhost ~]# pvcreate /dev/vdb1  将分区做成物理卷
[root@localhost ~]# vgextend vg0 /dev/vdb1  创建卷组
[root@localhost ~]# lvcreate -L 50M -n lv0backup -s /dev/vg0/lv0拍照
[root@localhost ~]# mount /dev/vg0/lv0backup /mnt/  挂载
[root@localhost ~]# cd /mnt/
[root@localhost mnt]# ls
westos1  westos2  westos3  westos4  westos5  westos6  westos7
[root@localhost mnt]# rm -fr *
[root@localhost mnt]# ls
[root@localhost mnt]# cd
[root@localhost ~]# lvremove /dev/vg0/lv0backup   删除照片报错是因为没有解除挂载
  Logical volume vg0/lv0backup contains a filesystem in use.
[root@localhost ~]# umount /mnt/  解除挂载
[root@localhost ~]# lvremove /dev/vg0/lv0backup 删除照片成功
Do you really want to remove active logical volume lv0backup? [y/n]: y
  Logical volume "lv0backup" successfully removed
[root@localhost ~]# lvcreate -L 50M -n lv0backup -s /dev/vg0/lv0拍照
  Rounding up size to full physical extent 52.00 MiB
  Logical volume "lv0backup" created
[root@localhost ~]# mount /dev/vg0/lv0backup /mnt/ 挂载
[root@localhost ~]# ls /mnt/  查看文件还在证明我们仅仅删除了快照本来文件不受影响
westos1  westos2  westos3  westos4  westos5  westos6  westos7

虚拟机的快照同样可以借助监控,然后可以更好的进行快照命令的效果查看:
可以看到只剩下20M的可用空间:
基于linux下的lvm逻辑卷管理_第19张图片
首先在/mnt中建立七个文件为了让我们懂得快照的真实含义,读取的时候是读取本来的,写入时操作的是照片。
基于linux下的lvm逻辑卷管理_第20张图片
将/vdb1做成物理卷解决磁盘空间不够的问题,进行快照指令然后挂载查看就可以看到我们建立的七个文件。
基于linux下的lvm逻辑卷管理_第21张图片
A虚拟机监控看到的将/vdb1做成物理卷之后就解决了磁盘空间不够的问题,也就可以弄成快照。
基于linux下的lvm逻辑卷管理_第22张图片
删除照片重新做快照进行查看文件还在,就是证明有了快照本来文件不会受到影响。
基于linux下的lvm逻辑卷管理_第23张图片

删除逻辑卷:

[root@localhost ~]# umount /mnt/   卸载
[root@localhost ~]# lvremove /dev/vg0/lv0backup   删除快照
Do you really want to remove active logical volume lv0backup? [y/n]: y
  Logical volume "lv0backup" successfully removed
[root@localhost ~]# lvremove /dev/vg0/lv0   删除逻辑卷
Do you really want to remove active logical volume lv0? [y/n]: y
  Logical volume "lv0" successfully removed
[root@localhost ~]# vgremove vg0     删除卷组
  Volume group "vg0" successfully removed
[root@localhost ~]# pvremove /dev/vdb{1..2}   删除物理卷
  Labels on physical volume "/dev/vdb1" successfully wiped
  Labels on physical volume "/dev/vdb2" successfully wiped

在B虚拟机操作:
分别卸载设备,删除快照,物理卷,物理卷组,逻辑卷,还原原本状态。
基于linux下的lvm逻辑卷管理_第24张图片
A虚拟机监控情况,发现已经还原到原来:
基于linux下的lvm逻辑卷管理_第25张图片

你可能感兴趣的:(基于linux下的lvm逻辑卷管理)