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

过滤

下面的过滤器添加所有回路和 IDE,并删除其他所有块设备:
filter =[ "a|loop.*|", "a|/dev/hd.*|", "r|.*|", "r|/dev/sdc1|" ]
下面的过滤器只在第一个 IDE 驱动器中添加分区 8 并删除其他所有块设备:
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)管理,对应的命令程序文件分别以pvvglv开头。

功能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命令进行分区管理(因为创建的硬盘小,每个硬盘分区就只做一个分区),并将分区号修改为8eLinux 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

posted @ 2021-12-21 11:10  redrobot  阅读(157)  评论(0编辑  收藏  举报