LVM

LVM——Logical Volume Manager(逻辑卷管理)

LVM就是动态卷管理,可以将多个硬盘和硬盘分区做成一个逻辑卷,并把这个逻辑卷作为一个整体来统一管理,动态对分区进行扩缩空间大小,安全快捷方便管理。

LVM最大的特点就是可以对磁盘进行动态管理。因为逻辑卷的大小是可以动态调整的,而且不会丢失现有的数据。我们如果新增加了硬盘,其也不会改变现有上层的逻辑卷。作为一个动态磁盘管理机制,逻辑卷技术大大提高了磁盘管理的灵活性!

概念

①PE(Physical Extend) 物理拓展

②PV(Physical Volume) 物理卷

③VG(Volume Group) 卷组

④LV(Logical Volume) 逻辑卷

原理

(1)物理磁盘被格式化为PV,空间被划分为一个个的PE

(2)不同的PV加入到同一个VG中,不同PV的PE全部进入到了VG的PE池内

(3)LV基于PE创建,大小为PE的整数倍,组成LV的PE可能来自不同的物理磁盘

(4)LV现在就直接可以格式化后挂载使用了

(5)LV的扩充缩减实际上就是增加或减少组成该LV的PE数量,其过程不会丢失原始数据

 

PV(物理卷)操作

  创建:pvcreate + 物理设备/分区/raid

[root@localhost ~]# pvcreate /dev/hda{6,7,8,9}
  Physical volume "/dev/hda6" successfully created
  Physical volume "/dev/hda7" successfully created
  Physical volume "/dev/hda8" successfully created
  Physical volume "/dev/hda9" successfully created

  删除pv:pvremove + 物理设备/分区/raid

[root@localhost ~]# pvremove /dev/sdb2
Labels on physical volume "/dev/sdb2" successfully wiped

  扫描:pvscan

[root@localhost ~]# pvscan
No matching physical volumes found    #找不到任何的 PV 存在!

  查看:pvdisplay

[root@localhost ~]# pvdisplay
  "/dev/hda6" is a new physical volume of "1.40 GB"
  --- NEW Physical volume ---
  PV Name               /dev/hda6  #实际的 partition 分区名称
  VG Name                          #因为尚未分配出去,所以空白!
  PV Size               1.40 GB    #就是容量说明
  Allocatable           NO         #是否已被分配,结果是 NO
  PE Size (KByte)       0          #在此 PV 內的 PE 大小
  Total PE              0          #共分割出几个 PE
  free PE               0          #沒被 LV 用掉的 PE
  Allocated PE          0          #尚可分配出去的 PE 数量
  PV UUID               Z13Jk5-RCls-UJ8B-HzDa-Gesn-atku-rf2biN

  移动:pvmove(数据搬迁)

 [root@redhat6 ~]# pvmove /dev/sdb/dev/sdb: Moved: 0.8%
  /dev/sdb: Moved: 28.3%
  /dev/sdb: Moved: 42.5%
  /dev/sdb: Moved: 57.2%
  /dev/sdb: Moved: 72.8%
  /dev/sdb: Moved: 92.6%
  /dev/sdb: Moved: 100.0%

  列出所有pv:pvs

root@ubuntu:/# pvs
  /run/lvm/lvmetad.socket: connect failed: No such file or directory
  WARNING: Failed to connect to lvmetad. Falling back to internal scanning.
  PV         VG   Fmt  Attr PSize PFree
  /dev/sda3  myVG lvm2 a--  7.45g 7.45g
  /dev/sda4  myVG lvm2 a--  4.66g 4.66g

VG(卷组)操作

  创建:vgcreate + 卷组名(自定义) + 物理卷(pv)

root@ubuntu:/# vgcreate myVG /dev/sda{3,4}
  /run/lvm/lvmetad.socket: connect failed: No such file or directory
  WARNING: Failed to connect to lvmetad. Falling back to internal scanning.
  Volume group "myVG" successfully created

  删除:vgremove  

[root@www ~]# vgremove vg1000   #删除卷组"vg1000"
Volume group "vg1000" successfully removed

  扩展:vgextend(新增一个pv到卷组)

root@ubuntu:/# vgextend myVG /dev/sda4
  /run/lvm/lvmetad.socket: connect failed: No such file or directory
  WARNING: Failed to connect to lvmetad. Falling back to internal scanning.
  Volume group "myVG" successfully extended

  缩小:vgreduce(将一个pv从卷组中拿走,在执行之前一定要执行pvmove将该pv数据挪到其他pv)

root@ubuntu:/# vgreduce myVG /dev/sda4
  /run/lvm/lvmetad.socket: connect failed: No such file or directory
  WARNING: Failed to connect to lvmetad. Falling back to internal scanning.
  Removed "/dev/sda4" from volume group "myVG"

  扫描:vgscan

  显示:vgdisplay

root@ubuntu:/# vgdisplay 
  /run/lvm/lvmetad.socket: connect failed: No such file or directory
  WARNING: Failed to connect to lvmetad. Falling back to internal scanning.
  --- Volume group ---
  VG Name               myVG
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               12.11 GiB
  PE Size               4.00 MiB  //可以修改,在创建时加选项 -s(+单位)
  Total PE              3099
  Alloc PE / Size       0 / 0   
  Free  PE / Size       3099 / 12.11 GiB
  VG UUID               LhGoo2-IZIb-330C-0MQu-HEz1-J97y-BlP7AE

  列出所有vg:vgs

root@ubuntu:/# vgs
  /run/lvm/lvmetad.socket: connect failed: No such file or directory
  WARNING: Failed to connect to lvmetad. Falling back to internal scanning.
  VG   #PV #LV #SN Attr   VSize  VFree 
  myVG   2   0   0 wz--n- 12.11g 12.11g

LV(逻辑卷)操作

  创建:lvcreate  -L (大小) -n(指定名称) VG组名

   1. 同一个卷组上可以创建多个逻辑卷

root@ubuntu:/# lvcreate -L 50M -n myLV myVG
  /run/lvm/lvmetad.socket: connect failed: No such file or directory
  WARNING: Failed to connect to lvmetad. Falling back to internal scanning.
  Rounding up size to full physical extent 52.00 MiB
  Logical volume "myLV" created.

  删除:lvremove  ( 删除前需要先卸载 )

root@ubuntu:/# lvremove /dev/myVG/myLV 
  /run/lvm/lvmetad.socket: connect failed: No such file or directory
  WARNING: Failed to connect to lvmetad. Falling back to internal scanning.
Do you really want to remove and DISCARD active logical volume myLV? [y/n]: y
  Logical volume "myLV" successfully removed

  扩展:lvextend

  缩小:lvreduce

  列出:lvs

root@ubuntu:/#  lvs
  /run/lvm/lvmetad.socket: connect failed: No such file or directory
  WARNING: Failed to connect to lvmetad. Falling back to internal scanning.
  LV   VG   Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  myLV myVG -wi-a----- 52.00m  

  展示:lvdisplay

root@ubuntu:/# lvdisplay 
  /run/lvm/lvmetad.socket: connect failed: No such file or directory
  WARNING: Failed to connect to lvmetad. Falling back to internal scanning.
  --- Logical volume ---
  LV Path                /dev/myVG/myLV
  LV Name                myLV
  VG Name                myVG
  LV UUID                arp8Y1-ThlO-oCas-5XGP-juPF-tB9x-5v2hyS
  LV Write Access        read/write
  LV Creation host, time ubuntu, 2018-05-10 10:20:30 -0700
  LV Status              available
  # open                 0
  LV Size                52.00 MiB
  Current LE             13
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

挂载

 挂载前先创建文件系统

root@ubuntu:/# mke2fs -j /dev/myVG/myLV 
mke2fs用于快速格式化,选项

‘-b’ 分区时设定每个数据区块占用空间大小,目前支持1024, 2048 以及4096 bytes每个块。

‘-i’ 设定inode的大小

‘-N’ 设定inode数量,有时使用默认的inode数不够用,所以要自定设定inode数量。

‘-c’ 在格式化前先检测一下磁盘是否有问题,加上这个选项后会非常慢

‘-L’ 预设该分区的标签label

‘-j’ 建立ext3格式的分区,如果使用mkfs.ext3 就不用加这个选项了

‘-t’ 用来指定什么类型的文件系统,可以是ext2, ext3 也可以是 ext4.

resize2fs重新调整文件系统大小

  -p 当前分区有多大则调整到多大

扩展逻辑卷

   可以在线进行,不需要卸载

   顺序:扩展物理边界 --> 扩展逻辑边界  

    扩展物理边界  lvextend  -L [+]大小  /逻辑卷路径

root@ubuntu:/# lvextend -L 100M /dev/myVG/myLV 
  /run/lvm/lvmetad.socket: connect failed: No such file or directory
  WARNING: Failed to connect to lvmetad. Falling back to internal scanning.
  Size of logical volume myVG/myLV changed from 52.00 MiB (13 extents) to 100.00 MiB (25 extents).
  Logical volume myLV successfully resized.

   扩展逻辑边界  resize2fs  /逻辑卷路径  大小(扩展到多大)

root@ubuntu:/mnt# resize2fs -p /dev/myVG/myLV 
resize2fs 1.42.13 (17-May-2015)
Filesystem at /dev/myVG/myLV is mounted on /mnt/test; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/myVG/myLV is now 155648 (1k) blocks long.

缩小逻辑卷

  顺序:缩小逻辑边界 --> 缩小物理边界

   注意

   1. 不能在线缩减,需要先卸载

root@ubuntu:/mnt# df -h
Filesystem             Size  Used Avail Use% Mounted on
udev                   481M     0  481M   0% /dev
tmpfs                  100M  6.5M   94M   7% /run
/dev/sda1               19G  4.8G   13G  27% /
tmpfs                  500M  252K  500M   1% /dev/shm
tmpfs                  5.0M  4.0K  5.0M   1% /run/lock
tmpfs                  500M     0  500M   0% /sys/fs/cgroup
tmpfs                  100M   44K  100M   1% /run/user/1000
/dev/mapper/myVG-myLV  144M  1.6M  135M   2% /mnt/test
root@ubuntu:/# umount /mnt/test 

   2. 确保缩减后的空间依然能够存下当前数据

   3. 在缩减之前应该先强行检查文件,确保文件系统处于一致性状态

root@ubuntu:/# e2fsck -f  #强行检查

  缩小逻辑边界

    resize2fs  /逻辑卷路径  大小(扩展到多大)

root@ubuntu:/# resize2fs /dev/myVG//myLV 100M
resize2fs 1.42.13 (17-May-2015)
Resizing the filesystem on /dev/myVG//myLV to 102400 (1k) blocks.
The filesystem on /dev/myVG//myLV is now 102400 (1k) blocks long.

  缩小物理边界

    lvreduce 

root@ubuntu:/# lvreduce -L 100M /dev/myVG/myLV 
  /run/lvm/lvmetad.socket: connect failed: No such file or directory
  WARNING: Failed to connect to lvmetad. Falling back to internal scanning.
  WARNING: Reducing active logical volume to 100.00 MiB
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce myLV? [y/n]: y
  Size of logical volume myVG/myLV changed from 152.00 MiB (38 extents) to 100.00 MiB (25 extents).
  Logical volume myLV successfully resized.
重新挂载
root@ubuntu:/# mount /dev/myVG/myLV /mnt/test
检查磁盘情况
root@ubuntu:/# df -h
Filesystem             Size  Used Avail Use% Mounted on
udev                   481M     0  481M   0% /dev
tmpfs                  100M  6.5M   94M   7% /run
/dev/sda1               19G  4.8G   13G  27% /
tmpfs                  500M  252K  500M   1% /dev/shm
tmpfs                  5.0M  4.0K  5.0M   1% /run/lock
tmpfs                  500M     0  500M   0% /sys/fs/cgroup
tmpfs                  100M   44K  100M   1% /run/user/1000
/dev/mapper/myVG-myLV   93M  1.6M   87M   2% /mnt/test

   

现实快照卷

注意:

  1. 声明周期为整个数据时长,在这段时间内,增长数据不能超过快照卷大小

  2. 快照卷是只读

  3. 和原卷在同一卷组内

eg:对 / dev / myVG / myLV 创建快照卷 

root@ubuntu:/# lvcreate -L 50M -n myLV_snap -s -p r /dev/myVG/myLV
  /run/lvm/lvmetad.socket: connect failed: No such file or directory
  WARNING: Failed to connect to lvmetad. Falling back to internal scanning.
  Rounding up size to full physical extent 52.00 MiB
  Logical volume "myLV_snap" created.

然后挂载就可以使用

root@ubuntu:/# mount /dev/myVG/myLV_snap /mnt/test2

最后对test2目录进行备份即可

#备份完成后进行卸载,然后删除快照卷
root@ubuntu:/mnt# umount /mnt/test2
root@ubuntu:/mnt# lvremove /dev/myVG/myLV_snap
原文地址:https://www.cnblogs.com/xiaoliwang/p/9022685.html