LVM的原理详解
  9TvUyQZvC81H 2023年11月02日 48 0


1.LVM

LVM实战场景: 服务器磁盘存储数据, 分区磁盘空间不足了

LVM解决: 动态扩容

1.2raid vs LVM

raid: 冗余和数据加速

LVM: 数据加速和扩展方面

2.LVM的原理

lvm : 磁盘和文件系统之间增加一个逻辑层, 来动态的调整文件系统的大小,从而实现对磁盘的管理

相关概念:

PE : 物理拓展,LVM的最小单元,一般默认4M,是4M的倍数 ,(类似于硬盘的一个扇区:一般默认512字节 )

PV :逻辑上的一个 物理卷 ,不能存储文件,基础逻辑存储块

VG : 逻辑上的一个 卷组,不能存储文件,由多个PV组成

LV : 最终的 逻辑卷可以存储文件

LVM的物理存储介质:分区,整个磁盘,radi或存储


组成关系:

多个磁盘/分区/raid-->多个物理卷PV-->合成卷组VG-->从VG划出逻辑卷LV-->格式化LV挂载使用

LVM的原理详解_文件系统

优点:

使用卷组: 使用多个硬盘空间,看起来像一块大的硬盘

使用逻辑卷,可以跨多个硬盘空间的分区 sdb1 sdb2 sdc1 sdd2 sdf

在使用逻辑卷时,它可以在空间不足时动态调整它的大小

可以在线对LV,VG 进行创建,删除,调整大小等操作。LVM上的文件系统也需要重新调整大小。

LVM的原理详解_4G_02

指定PE的大小

-s 存储文件比较大文件, PE 调大一下,读取快

[root@localhost lv01]# vgcreate -s 16M vg03 /dev/sdb4
  Volume group "vg03" successfully created
[root@localhost lv01]# vgs
  VG               #PV #LV #SN Attr   VSize   VFree
  centos_anonymous   1   2   0 wz--n- <19.00g    0 
  vg01               1   2   0 wz--n-  <4.00g 3.96g
  vg02               2   0   0 wz--n-   7.99g 7.99g
  vg03               1   0   0 wz--n-   3.98g 3.98g
[root@localhost lv01]# vgdisplay vg03
  --- Volume group ---
  VG Name               vg03
  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               3.98 GiB
  PE Size               16.00 MiB
  Total PE              255
  Alloc PE / Size       0 / 0   
  Free  PE / Size       255 / 3.98 GiB
  VG UUID               MU9NLn-IIJG-Immq-h2DK-s1B9-BESR-OAA40w

扩容: extend

-L +30M 20M --50M

-L 30M 30M

扩容文件系统:

方法一:

ext4 resize2fs

XFS xfs_growfs

[root@localhost lv01]# lvs
  LV   VG               Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root centos_anonymous -wi-ao---- <17.00g                                                    
  swap centos_anonymous -wi-ao----   2.00g                                                    
  lv01 vg01             -wi-ao----  16.00m                                                    
  lv02 vg01             -wi-a-----  16.00m                                                        
[root@localhost lv01]# lvextend -L +30M /dev/vg01/lv01
  Rounding size to boundary between physical extents: 32.00 MiB.					##PE必须是4M的倍数
  Size of logical volume vg01/lv01 changed from 16.00 MiB (4 extents) to 48.00 MiB (12 extents).
  Logical volume vg01/lv01 successfully resized.
[root@localhost lv01]# lvs
  LV   VG               Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root centos_anonymous -wi-ao---- <17.00g                                                    
  swap centos_anonymous -wi-ao----   2.00g                                                    
  lv01 vg01             -wi-ao----  48.00m                                                    
  lv02 vg01             -wi-a-----  16.00m  
[root@localhost lv01]# df -Th /lv01/
文件系统              类型  容量  已用  可用 已用% 挂载点
/dev/mapper/vg01-lv01 xfs    13M  896K   12M    7% /lv01
[root@localhost lv01]# xfs_
xfs_admin      xfs_db         xfs_fsr        xfs_io         xfs_metadump   xfs_quota      
xfs_bmap       xfs_estimate   xfs_growfs     xfs_logprint   xfs_mkfile     xfs_repair     
xfs_copy       xfs_freeze     xfs_info       xfs_mdrestore  xfs_ncheck     xfs_rtcp       
[root@localhost lv01]# xfs_growfs /dev/vg01/lv01
meta-data=/dev/mapper/vg01-lv01  isize=512    agcount=1, agsize=4096 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=4096, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=855, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 4096 to 12288
[root@localhost lv01]# df -Th /lv01/
文件系统              类型  容量  已用  可用 已用% 挂载点
/dev/mapper/vg01-lv01 xfs    45M  960K   44M    3% /lv01
[root@localhost lv01]#

方法二:

[root@localhost lv01]# df -Th /lv01/
文件系统              类型  容量  已用  可用 已用% 挂载点
/dev/mapper/vg01-lv01 xfs    45M  960K   44M    3% /lv01
[root@localhost lv01]# df -Th /lv01/
文件系统              类型  容量  已用  可用 已用% 挂载点
/dev/mapper/vg01-lv01 xfs    45M  960K   44M    3% /lv01
[root@localhost lv01]# lvextend -L 80M -r /dev/vg01/lv01
  Size of logical volume vg01/lv01 changed from 48.00 MiB (12 extents) to 80.00 MiB (20 extents).
  Logical volume vg01/lv01 successfully resized.
meta-data=/dev/mapper/vg01-lv01  isize=512    agcount=3, agsize=4096 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=12288, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=855, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 12288 to 20480
[root@localhost lv01]# df -Th /lv01/
文件系统              类型  容量  已用  可用 已用% 挂载点
/dev/mapper/vg01-lv01 xfs    77M  1.0M   76M    2% /lv01

lvm的删除

[root@localhost ~]# lsblk
NAME                      MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                         8:0    0   20G  0 disk 
├─sda1                      8:1    0    1G  0 part /boot
└─sda2                      8:2    0   19G  0 part 
  ├─centos_anonymous-root 253:0    0   17G  0 lvm  /
  └─centos_anonymous-swap 253:1    0    2G  0 lvm  [SWAP]
sdb                         8:16   0   20G  0 disk 
├─sdb1                      8:17   0    4G  0 part 
│ ├─vg01-lv01             253:2    0   80M  0 lvm  /lv01
│ └─vg01-lv02             253:3    0   16M  0 lvm  
├─sdb2                      8:18   0    4G  0 part 
│ └─vg02-lv03             253:4    0  100M  0 lvm  /lv03
├─sdb3                      8:19   0    4G  0 part 
└─sdb4                      8:20   0    4G  0 part 
sr0                        11:0    1  4.2G  0 rom  /run/media/root/CentOS 7 x86_64
[root@localhost ~]# umount /dev/vg01/lv01
[root@localhost ~]# df -h !$
df -h /dev/vg01/lv01
文件系统        容量  已用  可用 已用% 挂载点
devtmpfs        1.9G     0  1.9G    0% /dev
[root@localhost ~]# lvremove /dev/vg01/lv01
Do you really want to remove active logical volume vg01/lv01? [y/n]: y
  Logical volume "lv01" successfully removed
[root@localhost ~]# lvremove /dev/vg01/lv02
Do you really want to remove active logical volume vg01/lv02? [y/n]: y
  Logical volume "lv02" successfully removed
[root@localhost ~]# vgremove vg01
  Volume group "vg01" successfully removed
[root@localhost ~]# pvremove /dev/sdb1
  Labels on physical volume "/dev/sdb1" successfully wiped.
[root@localhost ~]# lsblk
NAME                      MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                         8:0    0   20G  0 disk 
├─sda1                      8:1    0    1G  0 part /boot
└─sda2                      8:2    0   19G  0 part 
  ├─centos_anonymous-root 253:0    0   17G  0 lvm  /
  └─centos_anonymous-swap 253:1    0    2G  0 lvm  [SWAP]
sdb                         8:16   0   20G  0 disk 
├─sdb1                      8:17   0    4G  0 part 
├─sdb2                      8:18   0    4G  0 part 
│ └─vg02-lv03             253:4    0  100M  0 lvm  /lv03
├─sdb3                      8:19   0    4G  0 part 
└─sdb4                      8:20   0    4G  0 part 
sr0                        11:0    1  4.2G  0 rom  /run/media/root/CentOS 7 x86_64
[root@localhost ~]#

3.LVM实战

实验思路:

1. 创建磁盘,分区

2.创建PV

3.创建VG

4.创建LV

5.格式化挂载LV

3.1 实际演示:

1. 创建磁盘,分区

[root@localhost ~]# lsblk
NAME                      MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                         8:0    0   20G  0 disk 
├─sda1                      8:1    0    1G  0 part /boot
└─sda2                      8:2    0   19G  0 part 
  ├─centos_anonymous-root 253:0    0   17G  0 lvm  /
  └─centos_anonymous-swap 253:1    0    2G  0 lvm  [SWAP]
sdb                         8:16   0   20G  0 disk 
sr0                        11:0    1  4.2G  0 rom  /run/media/root/CentOS 7 x86_64
   

[root@localhost ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0x1287997e 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): 
Using default response p
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+4G
分区 1 已设置为 Linux 类型,大小设为 4 GiB

命令(输入 m 获取帮助):n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): 
Using default response p
分区号 (2-4,默认 2):
起始 扇区 (8390656-41943039,默认为 8390656):
将使用默认值 8390656
Last 扇区, +扇区 or +size{K,M,G} (8390656-41943039,默认为 41943039):+4G
分区 2 已设置为 Linux 类型,大小设为 4 GiB

命令(输入 m 获取帮助):n
Partition type:
   p   primary (2 primary, 0 extended, 2 free)
   e   extended
Select (default p): 
Using default response p
分区号 (3,4,默认 3):
起始 扇区 (16779264-41943039,默认为 16779264):
将使用默认值 16779264
Last 扇区, +扇区 or +size{K,M,G} (16779264-41943039,默认为 41943039):+4G
分区 3 已设置为 Linux 类型,大小设为 4 GiB

命令(输入 m 获取帮助):n
Partition type:
   p   primary (3 primary, 0 extended, 1 free)
   e   extended
Select (default e): p
已选择分区 4
起始 扇区 (25167872-41943039,默认为 25167872):
将使用默认值 25167872
Last 扇区, +扇区 or +size{K,M,G} (25167872-41943039,默认为 41943039):+4G
分区 4 已设置为 Linux 类型,大小设为 4 GiB

命令(输入 m 获取帮助):p

磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x1287997e

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     8390655     4194304   83  Linux
/dev/sdb2         8390656    16779263     4194304   83  Linux
/dev/sdb3        16779264    25167871     4194304   83  Linux
/dev/sdb4        25167872    33556479     4194304   83  Linux

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@localhost ~]# ll /dev/sdb*
brw-rw----. 1 root disk 8, 16 11月 14 14:08 /dev/sdb
brw-rw----. 1 root disk 8, 17 11月 14 14:08 /dev/sdb1
brw-rw----. 1 root disk 8, 18 11月 14 14:08 /dev/sdb2
brw-rw----. 1 root disk 8, 19 11月 14 14:08 /dev/sdb3
brw-rw----. 1 root disk 8, 20 11月 14 14:08 /dev/sdb4
[root@localhost ~]# ll /dev/sdb*
brw-rw----. 1 root disk 8, 16 11月 14 14:08 /dev/sdb
brw-rw----. 1 root disk 8, 17 11月 14 14:08 /dev/sdb1
brw-rw----. 1 root disk 8, 18 11月 14 14:08 /dev/sdb2
brw-rw----. 1 root disk 8, 19 11月 14 14:08 /dev/sdb3
brw-rw----. 1 root disk 8, 20 11月 14 14:08 /dev/sdb4

2.创建PV

[root@localhost ~]# pvcreate /dev/sdb{1..4}
  Device /dev/sdb4 not found (or ignored by filtering).
  Physical volume "/dev/sdb1" successfully created.
  Physical volume "/dev/sdb2" successfully created.
  Physical volume "/dev/sdb3" successfully created.
	Physical volume "/dev/sdb4" successfully created.
[root@localhost ~]# pvs
  PV         VG               Fmt  Attr PSize   PFree
  /dev/sda2  centos_anonymous lvm2 a--  <19.00g    0 
  /dev/sdb1                   lvm2 ---    4.00g 4.00g
  /dev/sdb2                   lvm2 ---    4.00g 4.00g
  /dev/sdb3                   lvm2 ---    4.00g 4.00g
  /dev/sdb4                   lvm2 ---    4.00g 4.00g
[root@localhost ~]#

3.创建VG

[root@localhost ~]# vgcreate vg01 /dev/sdb1
  Volume group "vg01" successfully created
[root@localhost ~]# vgdisplay vg01 
  --- Volume group ---
  VG Name               vg01
  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               <4.00 GiB
  PE Size               4.00 MiB
  Total PE              1023
  Alloc PE / Size       0 / 0   
  Free  PE / Size       1023 / <4.00 GiB
  VG UUID               lb05QT-DCip-Lcbx-sahb-dKA1-KAnc-nHXnYD
   
[root@localhost ~]#

4.创建LV

[root@localhost ~]# lvcreate -n lv01 -L 16M vg01 
  Logical volume "lv01" created.
[root@localhost ~]# lvcreate -n lv02 -l 4 vg01
  Logical volume "lv02" created.
[root@localhost ~]# lvs
  LV   VG               Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root centos_anonymous -wi-ao---- <17.00g                                                    
  swap centos_anonymous -wi-ao----   2.00g                                                    
  lv01 vg01             -wi-a-----  16.00m                                                    
  lv02 vg01             -wi-a-----  16.00m           
[root@localhost ~]# lvdisplay /dev/vg01/lv01
  --- Logical volume ---
  LV Path                /dev/vg01/lv01
  LV Name                lv01
  VG Name                vg01
  LV UUID                DjHCEk-m7Ng-oCE2-sQjH-UoiK-fDif-KIRtMM
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2022-11-14 14:40:38 +0800
  LV Status              available
  # open                 0
  LV Size                16.00 MiB
  Current LE             4
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:2

5.格式化挂载LV

[root@localhost ~]# mkdir /lv01
[root@localhost ~]# mkfs.xfs /dev/vg01/lv01
meta-data=/dev/vg01/lv01         isize=512    agcount=1, agsize=4096 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=4096, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=855, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@localhost ~]# mount !$ /lv01/
mount /dev/vg01/lv01 /lv01/
[root@localhost ~]# df -Th /lv01/
文件系统              类型  容量  已用  可用 已用% 挂载点
/dev/mapper/vg01-lv01 xfs    13M  896K   12M    7% /lv01
[root@localhost ~]#
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  NlZJHLjqK2Ej   2023年11月12日   85   0   0 逻辑卷linux文件系统
9TvUyQZvC81H
作者其他文章 更多

2023-11-02