lvm 操作
fdisk -l
pvcreate /dev/xvdb1
vgcreate vg_group /dev/xvdb1
lvcreate -L 60G -n vg_usr vg_group
创建lvm:
pvcreate /dev/sdc
vgcreate vg1 /dev/sdc
lvcreate -L 1G -n data1 vg1
lvcreate -L 1G -n data2 vg1
lvcreate -L 1G -n data3 vg1
lvcreate -L 1G -n data4 vg1
pvcreate /dev/sdb
vgcreate vg2 /dev/sdb
lvcreate -L 1G -n data1 vg2
盘全部划 : lvcreate -l +100%FREE -n vg_usr vg_group
分配剩余的所有空间给lv: lvcreate -l 100%FREE -n lv名 vg名
Physical volume
# vgdisplay
--- Volume group ---
VG Name lvm_test
System ID
Format lvm2
/etc/lvm/lvm.conf
过滤
filter =[ "a|loop.*|", "a|/dev/hd.*|", "r|.*|", "r|/dev/sdc1|" ]
filter = [ "a|^/dev/hda8$|", "r/.*/" ]
dmsetup remove /dev/map/vg_gruop-lvtest
lvm:
LV 时有两种模式可以选择, 分别是线性(linear)和条带(striped), 默认情况下使用线性模式。还有镜像。
LVM 逻辑卷的读写策略有两种:
linear:线性方式,一块块盘来读写,写完一块盘再写第二块盘、第 N 块盘,性能低striped:条带方式,多块盘一起并行读写,性能高
查看 LVM 逻辑卷的读写策略的方式:lvdisplay -m "LV Path"
看到 --- Segments --- 的 Type linear,所以这里的 LVM 逻辑卷读写策略是 linear 线性方式
root@node-1:~# lvdisplay
--- Logical volume ---
LV Path /dev/cache_vg00/cache_lv00
LV Name cache_lv00
VG Name cache_vg00
LV UUID SxIt27-kH9m-2lzb-yOGJ-vYVn-xwi2-qY30PK
LV Write Access read/write
LV Creation host, time 10-1-2-159, 2021-06-04 15:05:32 +0800
LV Status available
# open 1
LV Size 2.72 TiB
Current LE 713820
Segments 6
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0
root@node-1:~# lvdisplay -m /dev/cache_vg00/cache_lv00
--- Logical volume ---
LV Path /dev/cache_vg00/cache_lv00
LV Name cache_lv00
VG Name cache_vg00
LV UUID SxIt27-kH9m-2lzb-yOGJ-vYVn-xwi2-qY30PK
LV Write Access read/write
LV Creation host, time node-1, 2021-06-07 15:05:32 +0800
LV Status available
# open 1
LV Size 2.72 TiB
Current LE 713820
Segments 6
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0
--- Segments ---
Logical extents 0 to 118969:
Type linear
Physical volume /dev/sdb1
Physical extents 0 to 118969
省略其他信息……
链接:http://events.jianshu.io/p/f1d83b103f9e
===============================================================================================================================
来自:https://www.modb.pro/db/408286
1. 概念
LVM是将很多物理设备逻辑成为一个逻辑组,这个逻辑组的大小是所有物理磁盘的容量之和,我们可以在这个逻辑组上面划分多个逻辑卷,这个逻辑卷的块可能是存在于多个磁盘的。
1.1 物理卷
lvm要使用必须要初始化物理卷pv,将块设备初始化为物理卷会在该设备的起始扇区附近放置一个标 签。默认情况下lvm标签放在第二个512字节扇区。lvm标签可以为物理设备提供正确的识别和设备排序。包含随意标识符UUID。它以字节为单位记录块设备的大小,并且记录lvm元数据在设备中的存储位置。现在,LVM 允许在每个物理卷中保存 0、1 或者 2 个元数据副本。默认是保存一个副本。一旦设置了在物理卷 中保存的元数据备份数目之后就无法再更改。第一个副本保存在设备的起始位置,紧挨着标签。如果有第二个 副本,会将其放在设备的末尾。如果不小心写入了不同于想要写入的磁盘,从而覆盖了磁盘的起始部分,那么 可以使用在设备末尾的元数据第二个副本恢复元数据。
PV物理卷的数据布局
1.2 卷组
物理卷合为卷组,在卷组中磁盘空间被划分为固定大小的单元,我们称为扩展,扩展是vg分配的最小的空间单元,称为物理扩展
1.2.1 PE
卷组中逻辑卷的扩展大小也是相同的,称为逻辑扩展(PE),PE只有在卷组创建出来之后,才可以显示,否则为0,PE默认为4MB
1.3 逻辑卷
1.3.1 线性卷
线性卷将一个或者多个物理卷整合称为一个逻辑卷。物理存储是连续的,物理扩展为4MB的卷组,pv1为800MB,就有200个物理扩展(PE),线性卷是按照顺序写数据,lv有200PE的话,会按顺序写数据,所以数据会先写入一个盘。
1.3.2 条带逻辑卷
和raid0一样,可以条带化存储,条带化数据,可以通过round-robin模式预定数目的物理卷写入数据,提高性能。使用条带模式,I/O可以平行执行。
1.3.4 RAID逻辑卷
lvm支持raid1/4/5/6/10:
- 通过利用MD内核驱动程序的lvm创建和管理raid逻辑卷
- raid1影响可以临时从阵列中分离,并且稍后可以合并回该阵列
- lvm raid卷支持快照
1.3.5 精简配置逻辑卷
逻辑卷可以通过精简配置,可以创建出超出可用扩展的逻辑卷。可以动态扩展精简池。如果有10位用户,为其程序分配100GB文件系统,则存储管理员可以为每个用户创建看似是100GB的文件系统,但是实际存储小于100GB,但要要监控卷的使用情况,如果块满的时候,为其添加更多容量。
1.3.6 快照卷
lvm支持在某个特定时刻,在不导致服务终端的情况下创建设备的虚拟镜像功能,在提取快照后,当对原始设备进行修改,快照功能可生成变化的数据区域的副本。如果一个快照要生成一个和原始卷相同大小,则快照应该至少要和原始卷同样大小才可以保存更改。如果一个卷是用来读的,则空间要比写的数据要大。
1.3.7 精简配置快照卷
精简快照可以将很多虚拟设备存储到一个数据卷中。语序快照中共享数据。
1.3.8 缓存卷
在redhat 7.1发行版本开始,lvm支持使用快速的块设备作为较大慢速块设备的回写和写入加速,用户创建缓存逻辑卷可以改进现有的逻辑卷的性能,或者创建又小且快速的设备作为慢设备的缓存加速,具体命令为lvmcache
2. lvm管理命令
- 创建lvm卷一般有几步
- 将分区作为物理卷进行管理
- 创建卷组
- 创建逻辑卷
2.1 创建物理卷
2.1.1 创建pvcreate
[root@ceph-node2 ~]# pvcreate /dev/sdb /dev/sdc
Physical volume "/dev/sdb" successfully created.
Physical volume "/dev/sdc" successfully created.
2.1.2 pvscan
pvscan在系统中物理卷扫描所有支持的lvm块设备。可以在lvm.conf中定义过滤,方便这个命令可以避免扫描特定物理卷。pvscan需要读取磁盘的lvm元数据来识别是否为pv,但是在使用lvmetad守护进程的时候,pvscan命令会有优化,lvmetad会lv的元数据进行缓存,那么pvscan就不需要重复的读取磁盘的元数据信息了。
The pvscan --cache command is typically run automatically by system services when a new device appears. Users do not generally need to run this command if the system and lvmetad are running properly
pvscan --cache
2.1.3 限制pv不被分配PE
一般pv故障,会做这种操作,执行下面语句会禁止分配PE
pvchange -x n /dev/sdk1
2.1.4 删除pv
pvremove会将lv的元数据归0,如果要删除的卷组是某个卷组的一部分,要先执行vgreduce将pv从卷组中删除出去。
### 如果在卷组中使用,想从卷组中删除
vgreduc myvg /dev/sdb
### 然后从pv中进行删除
pvremove /dev/sdb
2.2 创建卷组
2.2.1 创建卷组vgcreate
[root@ceph-node2 ~]# vgcreate myvgl /dev/sdb /dev/sdc
Volume group "myvgl" successfully created
2.2.2 vgscan扫描vg和lv信息
vgscan 命令扫描系统中的所有支持的磁盘设备以查找 LVM 物理卷和卷组。这样可在/etc/lvm/cache/.cache 文件中构建缓存,以保持当前 LVM 设备列表。
2.2.3 从vg中删除pv
2.2.3.1 非mirror
- 正常删除
vgreduce my_volume_group /dev/hda1
2.3 创建逻辑卷
[root@ceph-node2 ~]# lvcreate -L 10G -n mulv myvgl
Logical volume "mulv" created.
- 扩展卷的大小
扩容卷卷空间
lvextend [-L +size \ -l size] 逻辑卷名称
### 如果使用xfs文件系统
xfs_growfs /test
### 如果使用ext4
resize2fs /test
2.3.1 缩小卷空间
lvreduce [-L -size \ -l size] 逻辑卷名称
2.3.2 删除物理卷,如果上层有挂载的卷要先umount掉
$ umount /mulv
$ lvremove /dev/myvg/mylv
### 将/dev/sdb从vg中删除出去
$ vgreduce myvg /dev/sdb
2.3.3 逻辑卷备份
元数据备份和归档会在每次修改卷组和逻辑卷配置时候自动进行,除非在lvm.conf中禁用这个功能,默认情况下元数据备份是在/etc/lvm/backup文件中,元数据归档在/etc/lvm/archive文件中,这个保存时间备份在/etc/lvm目录中内容。也可以手动进行备份,使用vgcfgbackup,将元数据备份到/etc/lvm/backup文件中,可以使用vgcfgrestore恢复元数据。
2.3.4 元数据管理服务
元数据守护进程有两个主要目的,1、提高lvm命令性能。2、允许udev自动激活逻辑卷或者整个卷组中使用。元数据管理服务lvm2-lvmetad服务名称 lvmetad服务可以配置自动激活逻辑卷,等于lvchange -ay lvname。lvm.conf配置文件中为activation/auto_activation_volume_list选项配置。
[root@ceph-node2 ~]# systemctl status lvm2-lvmetad
● lvm2-lvmetad.service - LVM2 metadata daemon
Loaded: loaded (/usr/lib/systemd/system/lvm2-lvmetad.service; disabled; vendor preset: enabled)
Active: active (running) since Thu 2019-04-04 20:49:19 EDT; 17h ago
Docs: man:lvmetad(8)
Main PID: 504 (lvmetad)
CGroup: /system.slice/lvm2-lvmetad.service
└─504 /usr/sbin/lvmetad -f
Apr 04 20:49:19 ceph-node2 systemd[1]: Started LVM2 metadata daemon.
Apr 04 20:49:19 ceph-node2 systemd[1]: Starting LVM2 metadata daemon...
2.3.5 查看lvm命令
- 显示载入 etc/lvm/lvm.conf 文件及其他任何配置文件后的 LVM 配置信息。
lvm dumpconfig
- 显示可识别的内建块设备类型(Red Hat Enterprise Linux 发行本 6.6及之后的产品)
lvm devtypes
- 显示可识别元数据格式。
lvm formats
- 显示 LVM 帮助信息。
lvm help
- 显示可识别逻辑卷片段类型。
lvm segtypes
- 显示这个主机中定义的标签。有关 LVM 对象标签的详情, LVM 对象标签。
lvm tags
- 显示当前版本信息
lvm version
3. lv mirror
创建lv mirror
如果镜像卷比较大的话,创建时候不需要恢复镜像卷,可以使用--nosync参数,便是不需要根据第一个设备进行初始化,因为如果镜像卷很大的话,同步需要很长的时间。
lvcreate --type mirror -L 50G -m 1 -n mirrorlv vg0
LVM 将要复制的设备分成默认为 512KB 大小的区域。可使用 lvcreate 命令的 -R 参数以 MB 为单位指定区 域大小
注意 - 需要验证
由于集群架构的限制,无法使用默认的 512KB 区域大小创建大于 1.5TB 的镜像。需要较大镜像的用户应 将该区域大小从默认值调整为较大的值。无法增大区域大小将造成 LVM 创建操作停滞,同时还可能造 成其他 LVM 命令挂起。
为超过 1.5TB 的镜像指定区域大小的一般方法是取镜像的 TB 数,并四舍五入到 2 的下一次幂,使用该 数字作为 lvcreate 命令的 -R 参数值。例如:如果镜像大小为 1.5TB,则可以指定 -R 2。如果镜像 大小为3TB,则指定-R 4。如果镜像大小为5TB,则指定-R 8。
下面的命令创建区域大小为 2MB 的镜像逻辑卷:
lvcreate --type mirror -m 1 -L 2T -R 2 -n mirror vol_group
3.1
查看lv mirror信息,raid_sync_action和raid_mismatch_count两个参数表示同步状态和镜像卷数据不一致的情况。
[root@zhanghao ogg]# lvs -o +raid_sync_action,raid_mismatch_count vgmirror/lvmirror
WARNING: Not using lvmetad because a repair command was run.
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert SyncAction Mismatches
lvmirror vgmirror rwi-aor--- 5.00g 100.00 idle 0
- SyncAction字段理解
-
idle:已完成所有同步操作(什么也不做)
-
resync:初始化阵列或在机器失败后恢复
-
recover:替换阵列中的设备
-
check:查找阵列不一致的地方
-
repair:查找并修复阵列不一致的地方
故障模拟
原来状态
sdc 8:32 0 10G 0 disk
├─vgmirror-lvmirror_rmeta_0 253:2 0 4M 0 lvm
│ └─vgmirror-lvmirror 253:6 0 5G 0 lvm /ogg
└─vgmirror-lvmirror_rimage_0 253:3 0 5G 0 lvm
└─vgmirror-lvmirror 253:6 0 5G 0 lvm /ogg
sde 8:64 0 10G 0 disk
sdf 8:80 0 10G 0 disk
├─vgmirror-lvmirror_rmeta_1 253:4 0 4M 0 lvm
│ └─vgmirror-lvmirror 253:6 0 5G 0 lvm /ogg
└─vgmirror-lvmirror_rimage_1 253:5 0 5G 0 lvm
└─vgmirror-lvmirror 253:6 0 5G 0 lvm /ogg
删除lv mirror中的一块物理盘。
[root@zhanghao ogg]# lvs
WARNING: Not using lvmetad because a repair command was run.
Couldn't find device with uuid 5MM63i-87fQ-2xhO-E1vB-M0Op-5Lnb-fvgXeZ.
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root rhel -wi-ao---- 49.80g
lvmirror vgmirror rwi-aor-p- 5.00g 100.00
#### 删除镜像中已经丢失的pv
vgreduce --removemissing --mirrorsonly --force vgmirror
恢复,不需要umount
#### 背景,三块盘做lv mirror,一块盘出现问题,执行repair可以自动恢复,故障盘被排除,因为元数据是分散配置的
#### 在磁盘没有丢元数据的情况下
#### 1. 将pv重新添加到vg中
vgextend vgmirror /dev/sdc
#### 2. 执行repair操作,可以根据元数据自动恢复
lvconvert --repair /dev/vgmirror/lvmirror
#### lvs观察同步进度
#### 如果另外一块磁盘恢复,需要手动将磁盘添加到lv中,将重新平衡数据。
lvconvert -m1 /dev/vgmirror/lvmirror /dev/sdc /dev/sde /dev/sdf
===============================================================================================================================
https://www.cnblogs.com/SiceLc/p/11657931.html
LVM 逻辑卷管理
LVM 概述
LVM 是 Linux 操作系统中对磁盘分区进行管理的一种逻辑机制,它是建立在硬盘和分区之上、文件系统之下的一个逻辑层,在建立文件系统时屏蔽了下层的磁盘分区布局,因此能够在保持现有数据不变的情况下动态调整磁盘容量,从而增强磁盘管理的灵活性。
要建立 LVM 分区管理机制,首先,将普通分区或整个硬盘创建为物理卷;然后,将物理上比较分散的各物理卷的存储空间组成一个逻辑整体,即卷组;最后,基于卷组这个整体,分割出不同的数据存储空间,形成逻辑卷。逻辑卷才是最终用户可以格式化并挂载使用的存储单位。

1、PV(Physical Volume,物理卷)
物理卷是 LVM 机制的基本存储设备,通常对应为一个普通分区或整个硬盘,。创建物理卷时,会在分区或硬盘的头部创建一个保留区块,用于记录 LVM 的属性,并把存储空间分割成默认大小为4MB 的基本单元(Physical Extent,PE),从而构成物理卷。
对用于转换成物理卷的普通分区,建议先使用 fdisk 工具将分区类型的ID 标记号改为8e。若是整块硬盘,可以将所有磁盘空间划分为一个主分区后再做相应调整。
2、VG(Volume Group,卷组)
由一个或多个物理卷组成一个整体,即称为卷组,在卷组中可以动态地添加或移除物理卷,许多个物理卷可以分别组成不同的卷组,卷组的名称由用户自行定义。
3、LV(Logical Volume,逻辑卷)
逻辑卷建立在卷组之上,与物理卷没有直接关系。对于逻辑卷来说,每一个卷组就是一个整体,从这个整体中“切出”一小块空间,作为用户创建文件系统的基础,这一小块空间就称为逻辑卷,
LVM的管理命令
LVM 管理命令主要包括三大类:物理卷(PV)管理、卷组(VG)管理、逻辑卷(LV)管理,对应的命令程序文件分别以pv、vg、lv开头。
| 功能 | PV管理命令 | VG管理命令 | LV管理命令 |
|---|---|---|---|
Scan(扫描) |
pvscan |
vgscan |
lvscan |
Create(建立) |
pvcreate |
vgcreate |
lvcreate |
Display(显示) |
pvdisplay |
vgdisplay |
lvdisplay |
Remove(移除) |
pvremove |
vgremove |
lvremove |
Extend(扩展) |
vgextend |
lvextend |
|
Reduce(减少) |
vgreduce |
lvreduce |
下面分别介绍这写命令的使用;首先,我们现在VMware虚拟机中添加三块硬盘每块硬盘20G,并重启Linux操作系统,识别新添加的硬盘;然后,把新添加的磁盘使用fdisk命令进行分区管理(因为创建的硬盘小,每个硬盘分区就只做一个分区),并将分区号修改为8e(Linux LVM)。
===============================================================================================================================
参考:
https://blog.csdn.net/wind19/article/details/7354132
https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_linux/7/html/logical_volume_manager_administration/lvm_filters
https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_linux/8/html/configuring_and_managing_logical_volumes/applying-an-lvm-device-filter-configuration_troubleshooting-duplicate-physical-volume-warnings-for-multipathed-lvm-devices
http://linux.51yip.com/search/dmsetup
https://www.cnblogs.com/drgcaosheng/p/5010042.html lvm修复
https://www.modb.pro/db/408286
