博文结构
什么是 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 命令: 用于将一个或多个物理卷创建为一个卷组.
- [[email protected] ~]# 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 列出目前备份的信息状态.
- [email protected] ~]# 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
- [[email protected] ~]# xfsdump -I #查看有没有文件被 xfsdump 备份过的数据
2,xfs 文件系统的还原 --xfsrestore 命令:
常用选项如下:
-I: 大写的 "i" 跟 xfsdump 相同的输出! 可查询备份数据, 包括 Label 名称和备份时间等;
-f: 后面接的就是备份文件! 企业中很有可能会接 / dev/st0 等磁带机!
-L: 可用 "-I" 查询到的数据. 在这个选项后输入;
-s: 需要接某特定目录, 也能复原某一文件或目录;
-r: 如果是用文件来存储备份数据, 那这个就不需要使用. 如果是一个磁盘内有多个文件, 需要使用它来达成累积复原;
-i: 进入互动模式(一般不需要)
[[email protected] ~]# xfsrestore -I #查看备份文件数据 [[email protected] ~]# xfsrestore -f /srv/boot.dump -L boot_all /boot# 直接将备份数据覆盖回去
来源: http://www.bubuko.com/infodetail-3280652.html