【Linux系统的磁盘管理-LVM实战讲解】

Linux系统的磁盘管理-LVM实战讲解

1.LVM简介

LVM主要用于解决 服务器磁盘存储数据、分区磁盘空间不足时实现磁盘动态扩容。

2.LVM的原理

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

3.LVM的基本组成

3.1物理卷(PV,Physical Volume)

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

3.2卷组 (VG,Volume Group)

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

3.3逻辑卷 (LV,Logical Volume)

  1. 最终的 逻辑卷,可以存储文件

3.4物理块 (PE,Physical Extends)

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

4.LVM的组成关系

组成关系:
多个磁盘/分区/raid–>多个物理卷PV–>合成卷组VG–>从VG划出逻辑卷LV–>格式化LV挂载使用
在这里插入图片描述

5.LVM的优缺点

5.1优点

  1. 使用卷组: 使用多个硬盘空间,看起来像一块大的硬盘
  2. 使用逻辑卷,可以跨多个硬盘空间的分区 sdb1 sdb2 sdc1 sdd2 sdf
  3. 在使用逻辑卷时,它可以在空间不足时动态调整它的大小
  4. 可以在线对LV,VG 进行创建,删除,调整大小等操作。LVM上的文件系统也需要重新调整大小。

5.2缺点

  1. 系统设置时步骤较为复杂
  2. 无法在Windows系统上进行访问,因为LVM不支持Windows。

6.常用操作命令介绍

常用命令:
在这里插入图片描述

6.1指定磁盘块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
   

6.2扩容文件系统

常用参数:

-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

6.3LVM的删除

[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 ~]# 

7.LVM扩容实战

7.1实验思路

  1. 创建磁盘、分区
  2. 创建PV
  3. 创建VG
  4. 创建LV
  5. 格式化挂载LV

7.2实战演示

  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

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 ~]# 

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

醉里看星辰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值