zhongcanw 2019-11-10
博文结构
什么是LVM
LVM中PV、VG、PE、LV
扩大LV容量
LVM的磁盘快照
LVM 相关指令汇整
什么是LVM:
LVM 的重点在于“可以弹性的调整 filesystem 的容量!而并非在于性能与数据保全上面。
若需要文件的读写性能或者是数据的可靠性,应该用RAID磁盘阵列
LVM 可以整合多个实体 partition 在一起,让这些 partitions 看起来就像是一个磁盘一样!而且,还可以在未来新增或移除其他的实体 partition 到这个 LVM 管理的磁盘当中
LVM中PV、VG、PE、LV:
LVM 的全名是 Logical Volume Manager,中文可以翻译作逻辑卷轴管理员。
LVM 的作法是将几个实体的 partitions (或 disk)通过软件组合成为一块看起来是独立的大磁盘(VG),然后将这块大磁盘再经过分区成为可使用分区(LV),最终就能够挂载使用了。
Physical Volume, PV, 实体卷轴
我们实际的 partition (或 Disk)需要调整系统识别码(system ID)成为 8e (LVM 的识别码),然后再经过pvcreate 的指令将他转成 LVM 最底层的实体卷轴(PV),之后才能够将这些 PV 加以利用!调整 system ID 的方是就是通过gdisk
Volume Group, VG, 卷轴群组
由一个或多个物理卷组成一个整体,即称为卷组,在卷组中可以动态的添加或移除物理卷。许多个物理卷可以分别组成不同的卷组,卷组的名称由用户自行定义。
所谓的 LVM 大磁盘就是将许多 PV 整合成这个 VG 的东西就是啦!所以 VG 就是 LVM 组合起来的大磁盘!
那么这个大磁盘最大可以到多少容量呢?(PE 以及 LVM 的格式版本有关)
在默认的情况下,使用 32位的 Linux 系统时,基本上 LV 最大仅能支持到 65534 个 PE 而已,若使用默认的 PE 为 4MB 的情况下,最大容量则仅能达到约 256GB 而已~不过,这个问题在 64位的 Linux 系统上面已经不存在了!LV 几乎没有啥容量限制
Physical Extent, PE, 实体范围区块
LVM 默认使用 4MB 的 PE 区块,而 LVM 的 LV 在 32 位系统上最多仅能含有 65534 个 PE (lvm1 的格式),因此默认的 LVM 的 LV 会有4M*65534/(1024M/G)=256G。
他是整个 LVM 最小的储存区块,也就是说,其实我们的文件数据都是借由写入PE 来处理的。(类似文件系统的block大小)
Logical Volume, LV, 逻辑卷轴
逻辑卷建立子啊卷组之上,与物理卷没有直接关系,对于逻辑卷来说,每一个卷组就是一个整体,从这个整体中“切出”一小块空间,作为用户创建文件系统的基础,这一小块空间就称为逻辑卷,使用mkfs等工具在逻辑卷上创建文件系统以后,就可以直接挂载到Linux操作系统中目录下使用。
最终的 VG 还会被切成 LV,这个 LV 就是最后可以被格式化使用的类似分区
那么 LV 是否可以随意指定大小呢?(否)
既然 PE 是整个 LVM 的最小储存单位,那么 LV 的大小就与在此 LV 内的 PE 总数有关。
为了方便使用者利用 LVM 来管理其系统,因此 LV 的设备文件名通常指定为“/dev/vgname/lvname ”的样式!
VG阶段 vgcreate :就是主要创建 VG 的指令 vgscan :搜寻系统上面是否有 VG 存在 vgdisplay :显示目前系统上面的 VG 状态 vgextend :在 VG 内增加额外的 PV vgreduce :在 VG 内移除 PV vgchange :设置 VG 是否启动(active) vgremove :删除一个 VG
LV 阶段 lvcreate :创建 LV lvscan :查询系统上面的 LV lvdisplay :显示系统上面的 LV 状态 lvextend :在 LV 里面增加容量 lvreduce :在 LV 里面减少容量 lvremove :删除一个 LV lvresize :对 LV 进行容量大小的调整
创建逻辑卷并使用的顺序:创建物理卷→创建卷组→创建逻辑卷→格式化挂载
常用的LVM逻辑卷与文件系统管理的命令:
pvscan命令:用于扫描系统中所有的物理卷,并输出相关信息
pvcreate命令:用于将分区或整个硬盘转换为物理卷,主要是添加LVM属性信息并划分PE存储单位(该命令需要使用硬盘或分区的设备文件作为参数,可以是多个)
pvdisplay命令:用于显示物理卷的详细信息,需要使用指定的物理卷作为命令参数,默认时将显示所有物理卷的信息
pvremove命令:用于将物理卷还原成普通分区或磁盘,不再用于LVM体系,被移除的物理卷将无法被pvscan识别。
卷组管理命令:
vgscan命令:用于扫描系统中以建立的LVM卷组及相关信息。通过执行命令可以列出cl卷组。
vgcreate命令:用于将一个或多个物理卷创建为一个卷组。
[ ~]# vgcreate web_document /dev/sdb1 /dev/sdb2 #使用物理卷/dev/sdb1、/dev/sdb2创建名为web_document的卷组。
vgdisplay命令:用于显示系统中个卷组的详细信息,需要使用指定卷组名作为命令参数(未指定卷组名时将显示所有卷组的信息)
vgremove命令:用于删除指定的卷组,将指定卷组名作为参数即可。
vgextend命令:用于扩展卷组的磁盘空间,当创建新的物理卷,并需要将其添加到已有卷组中时,就可以使用vgextend命令,该命令的第一个参数为需要扩展容量的卷组名称,后面是为需要添加到该卷组中的物理卷。
逻辑卷管理命令:
lvscan命令:用于扫描系统中已建立的逻辑卷及相关信息。通过命令可以可以列出cl卷组中的逻辑卷。
lvcreate命令:用于从指定的卷组中分割空间,以创建新的逻辑卷,需要指定逻辑卷大小、名称及所在的卷组名作为参数
lvdisplay命令:用于显示逻辑卷的详细信息,可以指定逻辑卷的设备文件作为参数,也可以使用卷组名作为参数,以显示该卷组中所有逻辑卷的信息
lvextend命令:用于动态扩展逻辑卷的空间,当目前使用的逻辑卷空间不足时,可以从所在卷组中分割额外的空间进行扩展。只要指定需增加的容量大小及逻辑卷设备文件位置即可,前提条件是该卷组中还有尚未分配的磁盘空间,否则需要先扩展卷组容量。
vcreate命令:用于删除指定的逻辑卷,直接使用逻辑卷的设备文件作为参数即可。
配置案例
创建逻辑卷
格式化逻辑卷,创建XFS文件系统。
挂载
如果添加逻辑卷或删除后,使用命令“ xfs_growfs 挂载点”来更新逻辑卷!
1、xfs文件系统的备份——xfsdump命令:
xfsdump命令的限制: xfsdump不支持没有挂载的文件系统,所以只能备份已挂载的; Xfsdump必须使用root的权限才能操作(涉及文件系统的关系); Xfsdump只能备份xfs文件系统; Xfsdump备份下来的数据(文件或存储媒体)只能让xfsrestore解压; Xfsdump是通过文件系统的UUID来分辨各个备份文件的,因此不能备份两个具有相同UUID的文件系统。
常用选项: -L:xfsdump会记录每次备份的session标头,这里可以填写针对此文件系统的简易说明; -M:xfsdump可以记录存储媒体的标头,这里可以填写此媒体的简易说明。 -l:是L的小写,就是指定等级,有0~9共10个等级,默认为0,即完整备份,1~9是指增量备份。 -f:有点类似tar,后面接产生的文件,也可以接例如/dev/st0设备文件名或其他一般文件文件名; -I:大写的“i”,从/var/lib/xfsdump/inventory 列出目前备份的信息状态。
~]# xfsdump -l O -L boot_all -Mboot_all -f /srv/boot.dump /boot #将完整备份的文件名记录成为/srv/boot.dump #如果不加-L和-M选项进入互动模式 xfsdump: using file dump (drive_simple) strategy xfsdump: version 3.1.4 (dump format 3.0) - type ^C for status and control xfsdump: WARNING: most recent level 0 dump was interrupted, but not resuming that dump since resume (-R) option not specified xfsdump: level 0 dump of localhost.localdomain:/boot #开始备份本机的/boot系统 xfsdump: dump date: Wed Aug 21 00:04:00 2019 #备份的时间 xfsdump: session id: 2ab52f27-54d8-4cb3-b99f-5f78601afeed #这次dump的ID xfsdump: session label: "boot_all" #简单给予一个名字记忆 #开始备份程序 xfsdump: ino map phase 1: constructing initial dump list xfsdump: ino map phase 2: skipping (no pruning necessary) xfsdump: ino map phase 3: skipping (only one dump stream) xfsdump: ino map construction complete xfsdump: estimated dump size: 146934272 bytes xfsdump: creating dump session media file 0 (media 0, file 0) xfsdump: dumping ino map xfsdump: dumping directories xfsdump: dumping non-directory files xfsdump: ending media file xfsdump: media file size 146605160 bytes xfsdump: dump size (non-dir files) : 146370000 bytes xfsdump: dump complete: 1 seconds elapsed xfsdump: Dump Summary: xfsdump: stream 0 /srv/boot.dump OK (success) xfsdump: Dump Status: SUCCESS [ ~]# xfsdump -I #查看有没有文件被xfsdump备份过的数据
2、xfs文件系统的还原——xfsrestore命令:
常用选项如下: -I:大写的“i”跟xfsdump相同的输出!可查询备份数据,包括Label名称和备份时间等; -f:后面接的就是备份文件!企业中很有可能会接/dev/st0等磁带机! -L:可用“-I”查询到的数据。在这个选项后输入; -s:需要接某特定目录,也能复原某一文件或目录; -r:如果是用文件来存储备份数据,那这个就不需要使用。如果是一个磁盘内有多个文件,需要使用它来达成累积复原; -i:进入互动模式(一般不需要)
[ ~]# xfsrestore -I #查看备份文件数据 [ ~]# xfsrestore -f /srv/boot.dump -L boot_all /boot# 直接将备份数据覆盖回去