LVM 逻辑卷管理

admin
2024-05-24 / 0 评论 / 106 阅读 / 正在检测是否收录...

什么是逻辑卷

LVM是Linux的逻辑卷管理器。它提供了对磁盘空间的管理,与基于主和逻辑分区的标准磁盘分区相比,磁盘空间更灵活,限制更少。LVM受到所有主要Linux发行版的支持,它甚至在Fedora和RHEL上默认使用

在计算机存储中,逻辑卷管理或LVM提供了一种在大容量存储设备上分配空间的方法,这种方法比传统的分区方案更灵活地存储卷。特别是,卷管理器可以连接、条带在一起或以其他方式将分区(或一般块设备)组合成更大的虚拟分区,管理员可以调整大小或移动,可能不会中断系统使用。

LVM是一个用于逻辑卷管理的工具,包括分配磁盘、条带、镜像和调整逻辑卷大小。

使用LVM,硬盘驱动器或一组硬盘驱动器被分配给一个或多个物理卷。LVM物理卷可以放置在可能跨越两个或更多磁盘的其他块设备上.

物理卷被合并成逻辑卷,但/boot分区除外。/boot分区不能在逻辑卷组上,因为引导加载程序无法读取它。如果根(/)分区位于逻辑卷上,请创建一个单独的/boot分区,该分区不是卷组的一部分。

由于物理卷不能跨越多个驱动器,要跨越多个驱动器,请为每个驱动器创建一个或多个物理卷。

用途

LVM用于以下目的:

  • 创建多个物理卷或整个硬盘的单个逻辑卷(有点类似于RAID 0,但更类似于JBOD),允许动态重新调整卷大小。
  • 通过允许添加和更换磁盘,而不会停机或服务中断,结合热交换来管理大型硬盘更换。
  • 在小型系统(如桌面)上,LVM无需在安装时估计分区需要多大,而是允许文件系统根据需要轻松调整大小。
  • 通过拍摄逻辑卷的快照来执行一致的备份。
  • 用一个密码加密多个物理分区

专业术语

lwkn8pcu.png

  1. 物理卷(Physical Volumes 缩写pv)
这是LVM使用的物理存储。它可能是整个磁盘或现有分区。
  1. 卷组(Volume Group vg)

    这是一个或多个物理卷的集合,它包含逻辑卷。
  2. 逻辑卷(Logical Volume lv)

    这是LVM提供的空间,您可以将其用作分区来制作文件系统和存储文件。
  3. PE

    最小存储单元,默认大小(4MB)

逻辑卷的管理

在Linux系统中如果没有LVM的命令(最小化安装)


[root@localhost ~]# dnf search  lvm
======================================================= Name Matched: lvm ========================================================
llvm.i686 : The Low Level Virtual Machine
llvm.x86_64 : The Low Level Virtual Machine
lvm2.x86_64 : Userland logical volume management tools

[root@localhost ~]# dnf  -y install  lvm2.x86_64

一、 物理卷管理

1.1 创建物理卷

命令: pvcreate
描述:初始化磁盘或分区供 LVM 使用。
Ex:

[root@localhost ~]# pvcreate   /dev/vdb 
Wiping dos signature on /dev/vdb.
Physical volume "/dev/vdb" successfully created.

1.2 查看pv

  • 命令: pvdisplay
  • 描述: 显示所有的物理卷
  • 语法: pvdisplay [pv_name]
    Ex:
[root@localhost ~]# pvdisplay  
  "/dev/vdb" is a new physical volume of "20.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/vdb
  VG Name               
  PV Size               20.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               jzEyr7-KheP-2PiZ-G1Pz-b1xq-cZcc-G4gzkb

1.3 删除 PV
命令:pvremove
描述: 移除逻辑卷
Ex:

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

二、 卷组管理

2.1 创建卷组

命令:vgcreate
语法:vgcreate 卷组名称 {物理卷1 物理卷2 物理卷n}
Ex:

[root@localhost ~]# vgcreate  test_vg  /dev/vdb 
  Volume group "test_vg" successfully created

2.2 显示卷组

命令: vgdisplay
Ex:

[root@localhost ~]# vgdisplay  
  --- Volume group ---
  VG Name               test_vg
  System ID             
  Format                lvm2
  Metadata Areas        1
  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                1
  Act PV                1
  VG Size               <20.00 GiB
  PE Size               4.00 MiB
  Total PE              5119
  Alloc PE / Size       0 / 0   
  Free  PE / Size       5119 / <20.00 GiB
  VG UUID               3WGvBc-dyNf-1eYn-gIsi-V2zO-OPND-8YlIBY

2.3 删除卷组

命令: vgremove
Ex:

[root@localhost ~]# vgremove  test_vg
  Volume group "test_vg" successfully removed

三、 逻辑卷管理

3.1 创建逻辑卷
命令: lvcreate
语法: lvcreate [选项] 逻辑卷的名称 VG
选项:

-L #指定逻辑卷的大小,单位G M K
-i #指定raid的级别,磁盘阵列
-l #以逻辑扩展为单位指定新 LV 的大小
-n #指定逻辑卷的名称

Ex:

[root@localhost ~]# lvcreate  -L5G  test_vg
WARNING: ext4 signature detected on /dev/test_vg/lvol0 at offset 1080. Wipe it? [y/n]: y
  Wiping ext4 signature on /dev/test_vg/lvol0.
  Logical volume "lvol0" created.

3.2 查看逻辑卷

[root@localhost ~]# lvdisplay 
  --- Logical volume ---
  LV Path                /dev/test_vg/lvol0
  LV Name                lvol0
  VG Name                test_vg
  LV UUID                FZ32YS-sg2B-etWG-Y84C-hqyR-gaHG-9TCYnj
  LV Write Access        read/write
  LV Creation host, time localhost, 2024-05-18 15:34:06 +0800
  LV Status              available
  # open                 0
  LV Size                5.00 GiB
  Current LE             1280
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           252:0

3.3 移除逻辑卷

[root@localhost ~]# lvremove  /dev/test_vg/lvol0
Do you really want to remove active logical volume test_vg/lvol0? [y/n]: y
  Logical volume "lvol0" successfully removed.

3.4 扩容

命令: lvextend
描述:Add space to a logical volume 为逻辑卷添加空间
Ex:

[root@bogon ~]# lvextend   -L 10G  /dev/test_vg/test_lv 
  Size of logical volume test_vg/test_lv changed from 5.00 GiB (1280 extents) to 10.00 GiB (2560 extents).
  Logical volume test_vg/test_lv successfully resized.
[root@bogon ~]# lvdisplay 
  --- Logical volume ---
  LV Path                /dev/test_vg/test_lv
  LV Name                test_lv
  VG Name                test_vg
  LV UUID                9c1tLT-Dyul-qvWp-QdsN-pAYA-oyba-XeyKeW
  LV Write Access        read/write
  LV Creation host, time localhost, 2024-05-18 15:46:39 +0800
  LV Status              available
  # open                 1
  LV Size                10.00 GiB
  Current LE             2560
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           252:0

#刷新文件系统

- resize2fs   支持`ext2,3,4` 不支持xfs
- xfs_growfs  支持xfs文件系统

[root@bogon ~]# xfs_growfs /dev/mapper/test_vg-test_lv 
meta-data=/dev/mapper/test_vg-test_lv isize=512    agcount=4, agsize=327680 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1    bigtime=0 inobtcount=0
data     =                       bsize=4096   blocks=1310720, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 1310720 to 2621440
[root@bogon ~]# df -h
Filesystem                   Size  Used Avail Use% Mounted on
devtmpfs                     1.8G     0  1.8G   0% /dev
tmpfs                        1.8G     0  1.8G   0% /dev/shm
tmpfs                        1.8G   25M  1.8G   2% /run
tmpfs                        1.8G     0  1.8G   0% /sys/fs/cgroup
/dev/vda3                     17G  5.1G   12G  30% /
/dev/vda2                    2.0G   47M  2.0G   3% /home
/dev/vda1                   1014M  212M  803M  21% /boot
/dev/mapper/test_vg-test_lv   10G  104M  9.9G   2% /test_lv
tmpfs                        367M     0  367M   0% /run/user/0

四、 格式化逻辑卷(创建文件系统)

[root@localhost ~]# mkfs.xfs  /dev/test_vg/test_lv
meta-data=/dev/test_vg/test_lv   isize=512    agcount=4, agsize=327680 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1    bigtime=0 inobtcount=0
data     =                       bsize=4096   blocks=1310720, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

五、 挂载使用

5.1 临时挂载

[root@localhost ~]# mkdir  /lv_tst
[root@localhost ~]# mount /dev/test_vg/test_lv   /lv_tst/
[root@localhost ~]# df -h
Filesystem                   Size  Used Avail Use% Mounted on
devtmpfs                     1.8G     0  1.8G   0% /dev
tmpfs                        1.8G     0  1.8G   0% /dev/shm
tmpfs                        1.8G   17M  1.8G   1% /run
tmpfs                        1.8G     0  1.8G   0% /sys/fs/cgroup
/dev/vda3                     17G  5.1G   12G  30% /
/dev/vda2                    2.0G   47M  2.0G   3% /home
/dev/vda1                   1014M  212M  803M  21% /boot
tmpfs                        367M     0  367M   0% /run/user/0
/dev/sr0                      12G   12G     0 100% /mnt
/dev/mapper/test_vg-test_lv  5.0G   68M  5.0G   2% /lv_tst

5.2 永久挂载

实现永久挂载,需要修改主配置文件 /etc/fstab

[root@localhost ~]# cat /etc/fstab 

UUID=787a972d-9811-42a3-b57b-8ecb567e23a4 /                       xfs     defaults        0 0
UUID=2ccfb650-c2b0-4822-bea5-b8da75434b52 /boot                   xfs     defaults        0 0
UUID=0541f6b0-a7f4-4566-8e63-30b87aa83a01 /home                   xfs     defaults        0 0

# 挂载的目录     挂载点       文件系统    defaults  0 0
UUID=9c1tLT-Dyul-qvWp-QdsN-pAYA-oyba-XeyKeW /test_lv              xfs     defaults        0 0 
或者使用文件的路径
/dev/test_vg/test_lv  /test_lv     xfs  defaults   0 0


# 获取UUID

[root@localhost ~]# blkid 

/dev/vdb: UUID="V6TrIv-Aip2-gyat-kxAa-6mK0-3zPL-zzRWEY" TYPE="LVM2_member"
/dev/mapper/test_vg-test_lv: UUID="f4366c5b-231b-47d8-a39a-41fc0b55c8b9" BLOCK_SIZE="512" TYPE="xfs"

切记:不能写错

5.2.1 测试文件是否输入正确

[root@localhost ~]# mount  -a   #读取/etc/fastab文件中的所有内容
[root@localhost ~]# df -h
Filesystem                   Size  Used Avail Use% Mounted on

/dev/mapper/test_vg-test_lv  5.0G   68M  5.0G   2% /test_lv

案例

lwknklzq.png

[root@localhost ~]# pvcreate   /dev/vd{c..e}
  Physical volume "/dev/vdc" successfully created.
  Physical volume "/dev/vdd" successfully created.
  Physical volume "/dev/vde" successfully created.
# 创建卷组
vgcreate   my_test_vg  /dev/vdc /dev/vdd
#创建逻辑卷
lvcreate   -L 10G  -n  test_lv_test   my_test_vg
#创建文件系统
 mkfs.ext4   /dev/my_test_vg/test_lv_test 
#创建挂载点
mkdir  /test_lv_1
#挂载测试
mount  /dev/my_test_vg/test_lv_test  /test_lv_1/
#扩容
lvextend   -L 15G  /dev/my_test_vg/test_lv_test

#刷新文件系统
[root@localhost ~]# resize2fs  /dev/my_test_vg/test_lv_test 
resize2fs 1.45.6 (20-Mar-2020)
Filesystem at /dev/my_test_vg/test_lv_test is mounted on /test_lv_1; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 2
The filesystem on /dev/my_test_vg/test_lv_test is now 3932160 (4k) blocks long.
#验证
[root@localhost ~]# df -h
Filesystem                           Size  Used Avail Use% Mounted on

/dev/mapper/my_test_vg-test_lv_test   15G   24K   14G   1% /test_lv_1

# 添加物理卷到卷组中
[root@localhost ~]# vgextend  my_test_vg  /dev/vd
vda   vda1  vda2  vda3  vdb   vdc   vdd   vde   
[root@localhost ~]# vgextend  my_test_vg  /dev/vde 
  Volume group "my_test_vg" successfully extended
[root@localhost ~]# vgdisplay  my_test_vg
  --- Volume group ---
  VG Name               my_test_vg
  System ID             
  Format                lvm2
  Metadata Areas        3
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                3
  Act PV                3
  VG Size               <29.99 GiB
  PE Size               4.00 MiB
  Total PE              7677
  Alloc PE / Size       2560 / 10.00 GiB
  Free  PE / Size       5117 / <19.99 GiB
  VG UUID               a5wcDK-0edK-LzGd-BV5a-GaSk-wuk3-iVEfct
0

评论 (0)

取消