Linux存储管理之LVM

 LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制。Linux用户安装Linux操作系统时遇到的一个常见的难以决定的问题就是如何正确地评估各分区大小,以分配合适的硬盘空间。普通的磁盘分区管理方式在逻辑分区划分好之后就无法改变其大小,当一个逻辑分区存放不下某个文件时,这个文件因为受上层文件系统的限制,也不能跨越多个分区来存放,所以也不能同时放到别的磁盘上。而遇到出现某个分区空间耗尽时,解决的方法通常是使用符号链接,或者使用调整分区大小的工具,但这只是暂时解决办法,没有从根本上解决问题。随着Linux的逻辑卷管理功能的出现,这些问题都迎刃而解,用户在无需停机的情况下可以方便地调整各个分区大小。
LVM术语:
物理存储介质(PhysicalStorageMedia)
 指系统的物理存储设备:磁盘,如:/dev/hda、/dev/sda等,是存储系统最底层的存储单元。
物理卷(Physical Volume,PV)
 指磁盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。
物理卷组(Volume Group,VG)
 类似于非LVM系统中的物理磁盘,其由一个或多个物理卷PV组成。可以在卷组上创建一个或多个LV(逻辑卷)。
逻辑卷(Logical Volume,LV)
 类似于非LVM系统中的磁盘分区,逻辑卷建立在卷组VG之上。在逻辑卷LV之上可以建立文件系统(比如/home或者/usr等)。
物理块(Physical Extent,PE)
 每一个物理卷PV被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。所以物理卷(PV)由大小等同的基本单元PE组成。
在操作之前可以使用以下命令对物理卷,物理卷组,逻辑卷及挂载点进行监控:
1.逻辑卷的创建

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

在这里插入图片描述

pvs #查看物理卷
vgs #查看物理卷组
lvs #查看逻辑卷组
df -h #查看挂载信息

 创建挂载点及分区:

[root@localhost ~]# mkdir /westosdata	#创建挂载点
[root@localhost ~]# fdisk /dev/vdb 
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0xe4cd2b84.

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): 
Using default response p
Partition number (1-4, default 1): 
First sector (2048-20971519, default 2048): 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519): +100M
Partition 1 of type Linux and of size 100 MiB is set

Command (m for help): t	#更改标签
Selected partition 1
Hex code (type L to list all codes): 8e	#8e代表Linux LVM
Changed type of partition 'Linux' to 'Linux LVM'

Command (m for help): wq
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

 如果创建分区时磁盘正在使用,必须手动同步分区表:

[root@localhost ~]# partprobe 

创建物理卷

 [root@localhost ~]# pvcreate /dev/vdb1
  Physical volume "/dev/vdb1" successfully created

在这里插入图片描述
创建物理卷组westosgroup

  [root@localhost ~]# vgcreate westosgroup /dev/vdb1
  Volume group "westosgroup" successfully created

在这里插入图片描述
创建大小为50M的逻辑卷westosdata

 [root@localhost ~]# lvcreate -L 50M -n westosdata westosgroup 
  Rounding up size to full physical extent 52.00 MiB
 Logical volume "westosdata" created

在这里插入图片描述
格式化逻辑卷westosdata的文件系统为xfs格式并将westosdata挂载到/westosdata目录下

[root@localhost ~]# mkfs.xfs /dev/westosgroup/westosdata 
[root@localhost ~]# mount /dev/westosgroup/westosdata /westosdata/

在这里插入图片描述
2.xfs文件系统的逻辑卷拉伸
emsp;由上图可知物理卷组westosgroup的大小为100m,划分的逻辑卷westosdata的大小为50m。要扩展westosdata的大小为80m时,只需要从物理卷中划分存储单元就可以:

[root@localhost ~]# lvextend -L 80M /dev/westosgroup/westosdata 	#拉伸westosdata为80M
[root@localhost ~]# xfs_growfs /dev/westosgroup/westosdata 	#拉伸westosdata的文件系统,将所有空间铺满

在这里插入图片描述

 如果要拉伸到150M,物理卷组中的存储空间不够,所以必须向westosgroup中继续添加物理卷,与vdb1的划分相同,创建出vdb2,同步分区表,然后如下操作:

[root@localhost ~]# pvcreate /dev/vdb2
[root@localhost ~]# vgextend westosgroup /dev/vdb2	#将物理卷vdb2添加到westosgroup物理卷组中
[root@localhost ~]# lvextend -L 150M /dev/westosgroup/westosdata 	#拉伸westosdata为150M
[root@localhost ~]# xfs_growfs /dev/westosgroup/westosdata #拉伸文件系统

在这里插入图片描述
 westosdata被拉伸为150M:
在这里插入图片描述
3.ext4文件系统的逻辑卷的拉伸及压缩
 xfs格式的文件系统只能拉伸,不能压缩。ext4格式的文件系统即可以拉伸也可以压缩。
 将westosdata卸载之后,重新格式化为ext4格式,要注意的是格式化之后westosdata中的数据就会被刷掉,所以请慎重格式化文件系统:

[root@localhost ~]# umount /westosdata/
[root@localhost ~]# mkfs.ext4 /dev/westosgroup/westosdata 

在这里插入图片描述
 blkid命令可以查看:
在这里插入图片描述
 然后重新挂载westosdata,并将其拉伸为180M:

[root@localhost ~]# mount /dev/westosgroup/westosdata /westosdata/
[root@localhost ~]# lvextend -L 180M /dev/westosgroup/westosdata 
[root@localhost ~]# resize2fs /dev/westosgroup/westosdata #ext4文件系统的拉伸方式

在这里插入图片描述
 拉伸后,westosdata就为150M:
在这里插入图片描述
 ext4文件系统的设备在压缩时要注意两点,首先是必须在卸载之后再压缩,然后是在压缩时必须先压缩文件系统,再压缩设备:

[root@localhost ~]# umount /westosdata/
[root@localhost ~]# e2fsck -f /dev/westosgroup/westosdata 	#在压缩文件系统之前,必须经过扫描
[root@localhost ~]# resize2fs /dev/westosgroup/westosdata 50M	#压缩westosdata为50M
[root@localhost ~]# mount /dev/westosgroup/westosdata /westosdata/

在这里插入图片描述
 文件系统压缩为50M之后,再将设备压缩为50M:

[root@localhost ~]# lvreduce -L 50M /dev/westosgroup/westosdata 	#压缩westosdata设备

在这里插入图片描述
 压缩之后,westosdata和文件系统都变为50M:
在这里插入图片描述
4.数据的转移
 由上图可知,现在有两个pv,分别是vdb1和vdb2,并且数据保存在vdb1上。下来我要将vdb1上的数据迁移到vdb2上,并将vdb1从lvm中去除。

[root@localhost ~]# pvmove /dev/vdb1 /dev/vdb2	#将vdb1上的数据迁移到vdb2上
[root@localhost ~]# vgreduce westosgroup /dev/vdb1	#将vdb1从westosgroup中移除
[root@localhost ~]# pvremove /dev/vdb1	#将vdb1从pv中移除

在这里插入图片描述
 成功将vdb1移除掉:
在这里插入图片描述
5.创建逻辑卷快照
 LVM可以像虚拟机一样制作块照,读取母分区的内容,修改快照的内容,当块照坏掉之后可以将块照删掉重新创建,并且母分区的内容不做更改。创建分区命令如下:

[root@localhost ~]# lvcreate -L 20 -n westosdata_back -s /dev/westosgroup/westosdata	#以westosdata作为模板,创建20M的westosdata_back分区快照

 将westosdata_back挂载到/westosdata目录下就可以使用:

[root@localhost ~]# mount /dev/westosgroup/westosdata_back /westosdat

在这里插入图片描述
在这里插入图片描述
6.错误处理
 如果设备正在lvm中没有数据写入,直接删除设备会出现错误。如下图,vdb1正在lvm中被使用并没有数据写入:
在这里插入图片描述
 此时直接删除vdb1在vgs查看时会出错:
在这里插入图片描述
 执行以下命令将westosgroup物理卷组中无效的pv移除,再次用vgs查看物理卷组westosgroup时就不会再出现错误。

[root@localhost ~]# vgreduce --removemissing westosgroup 

在这里插入图片描述
7.错误处理
 默认情况下物理块PE为4MiB,如下图的vg0,使用vgdisplay查看物理卷westosgroup的信息其PE为4MiB:
在这里插入图片描述
 在创建物理卷时可以指定PE,如下图在创建vg0时指定PE为16M:
在这里插入图片描述
8.删除
 删除lvm时根据以下顺序删除,先删除逻辑卷,再删除物理卷组,最后删除物理卷:

[root@localhost ~]# pvmove /dev/vdb1 /dev/vdb2
[root@localhost ~]# vgreduce westosgroup /dev/vdb1
[root@localhost ~]# pvremove /dev/vdb1

在这里插入图片描述
 删除vdb1分区:
在这里插入图片描述
9.分区方式修改
 linux中默认的分区格式为msdos,如《Linux_管理系统存储》文章中讲解的分区方式。除次之外还有别的分区方式,下文将分区方式修改为gpt方式:
在这里插入图片描述
 再次划分分区时如下图,不会询问创建主分区还是扩展分区:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值