LVM

逻辑卷管理器(LVM)

  • 允许对卷进行方便操作的抽象层,包括重新设定文件系统的大小
  • 允许在多个物理设备间重新组织文件系统
  • 将设备指定为物理卷
  • 用一个或者多个物理卷来创建一个卷组
  • 物理卷是用固定大小的物理区域(Physical Extent ,PE )来定义的
  • 在物理卷上创建的逻辑卷是由物理区域(PE )组成
  • 可以在逻辑卷上创建文件系统

LVM简介:

LVM: Logical Volume Manager,Version: 2      
dm: device mapper:将一个或多个底层块设备组织成一个逻辑设备的模块     
设备名:/dev/dm-#
软链接:
    /dev/mapper/VG_NAME-LV_NAME
        /dev/mapper/vol0-root
    /dev/VG_NAME/LV_NAME
        /dev/vol0/root
  • LVM 更改文件系统的容量

LVM 可以弹性的更改LVM 的容量
通过交换PE来进行资料的转换,将原来LV 内的PE 转移到其他的设备中以降低LV的容量,或将其他设备中的PE 加到LV 中以加大容量

  • 删除逻辑卷

删除逻辑卷必须先删除LV ,再删除VG

pv 管理工具

  • 显示pv 信息
    pvs :简要pv 信息显示
    pvdisplay
  • 创建pv

pvcreate /dev/DEVICE

-f:强制创建物理卷,不需要用户确认;
-u:指定设备的UUID;
-y:所有的问题都回答“yes”;
-Z:是否利用前4个扇区。

pvremove /dev/DEVICE

-d:调试模式; 
-f:强制删除; 
-y:对提问回答“yes”

pvchange 允许管理员改变物理卷的分配许可

pvchange(选项)(参数)

选项 
    -u:生成新的UUID;
    -x:是否允许分配PE。

参数为物理卷

pvdisplay(选项)(参数)

-s:以短格式输出;
-m:显示PE到LE的映射
  • pvs
选项     
    --noheadings:不输出标题头;      
    --nosuffix:不输出空间大小的单位。
  • **pvscan **
pvscan(选项) 
    选项
        -d:调试模式;
        -e:仅显示属于输出卷组的物理卷;
        -n:仅显示不属于任何卷组的物理卷;
        -s:短格式输出; 
        -u:显示UUID。

vg 管理工具

  • 显示卷组
    vgs
    vgdisplay

  • 创建卷组
    vgcreate [-s #[kKmMgGtTpPeE]] VolumeGroupName
    PhysicalDevicePath [PhysicalDevicePath...]

  • 管理卷组
    vgextend Vo lumeGroupName PhysicalDevicePath
    [PhysicalDevicePath...]
    vgreduce VolumeGroupName PhysicalDevicePath
    [PhysicalDevicePath...]

  • 删除卷组
    先做pvmove ,再做vgremove

  • vgcreate

vgcreate命令用于创建LVM卷组

vgcreate(选项)(参数)

选项
    -l:卷组上允许创建的最大逻辑卷数;
    -p:卷组中允许添加的最大物理卷数;
    -s:卷组上的物理卷的PE大小。
  • vgconvert

vgconvert命令用于转换指定LVM卷组的元数据格式,通常将“LVM1”格式的卷组转换为“LVM2”格式。转换卷组元数据前必须保证卷组处于非活动状态,否则无法完成转换操作。

vgconvert(选项)(参数)

选项 
    -M:要转换的卷组格式。 
参数 
    卷组:指定要转换格式的卷组
  • vgchange

vgchange命令用于修改卷组的属性,经常被用来设置卷组是处于活动状态或非活动状态。处于活动状态的卷组无法被删除,必须使用vgchange命令将卷组设置为非活动状态后才能删除

vgchange(选项)(参数)

选项 
    -a:设置卷组的活动状态。 
    -ay:激活卷组的活动状态
    -an:关闭卷组的活动状态
参数 
    卷组:指定要设置属性的卷组。
  • vgextend命令磁盘管理 >vgextend命令用于动态扩展LVM卷组,它通过向卷组中添加物理卷来增加卷组的容量。LVM卷组中的物理卷可以在使用vgcreate命令创建卷组时添加,也可以使用vgextend命令动态的添加。

vgextend(选项)(参数)

选项 
    -d:调试模式; 
    -t:仅测试
参数 
    卷组:指定要操作的卷组名称; 物理卷列表:指定要添加到卷组中的物理卷列表。
  • vgremove命令用于用户删除LVM卷组

vgremove(选项)(参数)

选项 
    -f:强制删除
  • vgdisplay

vgdisplay命令用于显示LVM卷组的信息

vgdisplay(选项)(参数)

选项 
    -A:仅显示活动卷组的属性; 
    -s:使用短格式输出的信息。 
参数 
    卷组:要显示属性的卷组名称。
  • vgreduce

vgreduce命令通过删除LVM卷组中的物理卷来减少卷组容量。不能删除LVM卷组中剩余的最后一个物理卷。

vgreduce(选项)(参数)

选项
    -a:如果命令行中没有指定要删除的物理卷,则删除所有的空物理卷;
    --removemissing:删除卷组中丢失的物理卷,使卷组恢复正常状态。
参数
    卷组:指定要操作的卷组名称; 物理卷列表:指定要删除的物理卷列表。
  • vgrename 修改vg卷组的名称

  • vgimport 导入vg设备

  • vgexport 导出vg设备

lv 管理工具

  • 显示逻辑卷
    lvs
    Lvdisplay

  • 创建逻辑卷
    lvcreate -L #[mMgGtT] -n NAME VolumeGroup
    lvcreate -l 60%VG -n mylv testvg
    lvcreate -l 100%FREE -n yourlv testvg

  • 删除逻辑卷
    lvremove /dev/VG_NAME/LV_NAME

  • 重设文件系统大小
    fsadm [options] resize device [new_size[BKMGTEP]]
    resize2fs [-f] [-F] [-M] [-P] [-p] device [new_size]

  • lvscan

lvscan命令用于扫描当前系统中存在的所有的LVM逻辑卷。使用lvscan指令可以发现系统中的所有逻辑卷,及其对应的设备文件。

lvscan(选项)

选项 
    -b:显示逻辑卷的主设备和次设备号。
  • lvextend

lvextend命令用于在线扩展逻辑卷的空间大小,而不中断应用程序对逻辑卷的访问。使用lvextend命令动态在线扩展磁盘空间.

lvextend(选项)(参数)

选项 
    -L:指定逻辑卷的大小,单位为“kKmMgGtT”字节;
    -l:指定逻辑卷的大小(LE数)。 
参数 
    逻辑卷:指定要扩展空间的逻辑卷。
  • lvcreate

lvcreate命令用于创建LVM的逻辑卷。

lvcreate(选项)(参数)

选项 
    -L:指定逻辑卷的大小,单位为“kKmMgGtT”字节;
    -l:指定逻辑卷的大小(LE数)。 
    -n:指定逻辑卷的名称  
    -s:创建逻辑卷的快照  
    -p 指定快照挂载的属性
        r:只读属性 
参数 
    逻辑卷:指定要创建的逻辑卷名称。
  • lvreduce

lvreduce命令用于减少LVM逻辑卷占用的空间大小

lvreduce(选项)(参数)

选项 
    -L:指定逻辑卷的大小,单位为“kKmMgGtT”字节;
    -l:指定逻辑卷的大小(LE数)。 
参数 
    逻辑卷:指定要操作的逻辑卷对应的设备文件。
  • lvresize

lvresize命令用于调整LVM逻辑卷的空间大小,可以增大空间和缩小空间

lvresize(选项)(参数)

选项 
    -L:指定逻辑卷的大小,单位为“kKmMgGtT”字节;
    -l:指定逻辑卷的大小(LE数)。 
参数 
    逻辑卷:指定要删除的逻辑卷。
  • lvrename 更改lv逻辑卷设备名

  • lvchange

    参数:
    -a:设置逻辑卷的活动状态。
    -ay:激活逻辑卷的活动状态
    -an:关闭逻辑卷的活动状态

  • lvconvert --merge /dev/vg0/snap-data 由快照回复逻辑卷数据

扩展和缩减逻辑卷

  • 扩展逻辑卷:
    lvextend -L [+]#[mMgGtT]
    /dev/VG_NAME/LV_NAME
    resize2fs /dev/VG_NAME/LV_NAME
    lvresize -r -l +100%FREE /dev/ VG_NAME/LV_NAME
  • 缩减逻辑卷:
    umount /dev/VG_NAME/LV_NAME
    e2fsck -f /dev/VG_NAME/LV_NAME
    resize2fs /dev/VG_NAME/LV_NAME

[mMgGtT]

lvreduce -L [-]#[mMgGtT] /dev/VG_NAME/LV_NAME
mount

- 迁移卷组 到新系统

  • 源计算机上
  1. 在旧系统中,umount 所有卷组上的逻辑卷
  2. vgchange –a n vg0
    lvdisplay
  3. vgexport vg0

pvscan
vgdisplay
拆下旧硬盘

  • 在目标计算机上
  1. 在新系统中安装旧硬盘,并vgimport vg0.
  2. vgchange –ay vg0
  3. mount

创建逻辑卷示例

  • 创建物理卷
    pvcreate /dev/sda3
  • 为卷组分配物理卷
    vgcreate vg0 /dev/sda3
  • 从卷组创建逻辑卷
    lvcreate -L 256M -n data vg0
    mke2fs -j /dev/vg0/data
  • mount /dev/vg0/data /mnt/data

逻辑卷管理器快照

快照的空间大小小于或等于逻辑卷的空间大小,不能超过逻辑卷空间

快照是特殊的逻辑卷,它是在生成快照时存在的逻辑卷的准确拷贝

对于需要备份或者复制的现有数据集临时拷贝以及其它操作来说,
快照是最合适的选择

快照只有在它们和原来的逻辑卷不同时才会消耗空间

在生成快照时会分配给它一定的空间,但只有在原来的逻辑卷或者快照有所改变才会使用这些空间
当原来的逻辑卷中有所改变时,会将旧的数据复制到快照中。

快照中只含有原来的逻辑卷中更改的数据或者自生成快照后的快照中更改的数据

建立快照的卷大小只需要原始逻辑卷的15% ~20% 就够了,也可以使用lvextend放大快照

快照就是将当时的系统信息记录下来,就好像照相一般,若将来有任何数据改动了,则原始数据会被移动到快照区,没有改动的区域则由快照区和文件系统共享

由于快照区与原本的LV 共用很多PE的区块,因此快照去与被快照的LV必须在同一个VG. 系统恢复的时候的文件数量不能高于快照区的实际容量

使用LVM快照

  • 为现有逻辑卷创建快照
lvcreate -l 64 -s -n snap-data -p r /dev/vg0/data
  • 挂载快照
mkdir -p /mnt/snap
mount -o ro /dev/vg0/snap-data /mnt/snap
  • 恢复快照
umount /dev/vg0/snap-data
umount /dev/vg0/data
lvconvert --merge /dev/vg0/snap-data
  • 删除快照
umount /mnt/databackup
lvremove /dev/vg0/databackup

实验:

  • 创建LV
  1. fdisk /dev/sda 创建分区类型为8e

t 8e

  1. pvcreate /dev/sd{a7,b} 创建PV

  2. vgcreate -s 16M vg0 /dev/sd{a7,b} 创建VG

  3. lvcreate -n lv0 -l 100%vg vg0 创建LV

  4. mkfs.ext4 /dev/vg0/lv0 文件系统格式化

  5. mount 挂载

  • 扩展LV
  1. pvcreate /dev/sdc
  2. vgextend vg0 /dev/sdc
  3. lvextend -l +1000 /dev/vg0/lv0
  4. resize2fs /dev/vg0/lv0 (ext系统)
    xfs_growfs /mnt/lv0 (xfs系统)
  5. lvextend -r -l +1000 /dev/vg0/lv0 或者3,4合成一步
  • 缩减LV
  1. 建议:数据备份
  2. umount /mnt/lv0/
  3. fsck -f /dev/vg0/lv0
  4. resize2fs /dev/vg0/lv0 30G
  5. lvreduce -L 30G /dev/vg0/lv0
  6. mount /dev/vg0/lv0 /mnt/lv0
  • 移除PV
  1. vgdisplay 空闲空间
    pvdisplay
  2. pvmove /dev/sdb
  3. vgreduce vg0 /dev/sdb
  4. pvremove /dev/sdb
  5. 卸载硬盘
  • 跨主机迁移LV
  1. 查看LV对应的卷组是由几个PV组合的
    /dev/sdc /dev/sdd
  2. 查看下VG名称,确保在目标主机上的名称不要冲突
    vgrename vg0 newvg0
    lvrename /dev/vg0/lv0 /dev/newvg0/newlv0
  3. 在源主机
    umount /dev/newvg0/lv0
    vgchange -an newvg0
    vgexport newvg0
  4. 将对应所有PV,接入到目标主机
  5. 在目标主机
    pvscan
    vgimport newvg0
    vgchange -ay newvg0 激活
    mount /dev/newvg0/newlv0 /mnt/newlv0

你可能感兴趣的:(LVM)