【Linux】LVM的创建及使用

文章目录

      • 1. 创建LVM的基本步骤
      • 2. LVM常用命令
      • 3. 创建使用LVM逻辑卷
        • 1) 创建PV
            • a. 我们已经添加了一个sdb磁盘
            • b. 接下来我们创建4个分区:
            • c. 查看分好的分区:
            • d. 设定分区号代码
            • e. 创建pv
            • f. 查看物理卷信息
            • g. 创建vg卷组
            • h. 创建LV
        • 3. 格式化与挂载
        • lv扩容
        • 总结

1. 创建LVM的基本步骤

  1. 物理磁盘被格式化为PV,(空间被划分为一个个的PE) #PV包含PE
  2. 不同的PV加入到同一个VG中,(不同PV的PE全部进入到了VG的PE池内) #VG包含PV
  3. 在VG中创建LV逻辑卷,基于PE创建,(组成LV的PE可能来自不同的物理磁盘) #LV基于PE创建
  4. LV直接可以格式化后挂载使用 #格式化挂载使用
  5. LV的扩充缩减实际上就是增加或减少组成该LV的PE数量,其过程不会丢失原始数据

2. LVM常用命令

【Linux】LVM的创建及使用_第1张图片

与查看相关的命令:

在这里插入图片描述

3. 创建使用LVM逻辑卷

1) 创建PV

a. 我们已经添加了一个sdb磁盘

【Linux】LVM的创建及使用_第2张图片

b. 接下来我们创建4个分区:
[root@gaosh-64 ~]# ll /dev/sd*
brw-rw---- 1 root disk 8,  0 7月  23 10:28 /dev/sda
brw-rw---- 1 root disk 8,  1 7月  23 10:28 /dev/sda1
brw-rw---- 1 root disk 8,  2 7月  23 10:28 /dev/sda2
brw-rw---- 1 root disk 8, 16 7月  23 10:28 /dev/sdb
[root@gaosh-64 ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。

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

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


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

按照步骤四个主分区
c. 查看分好的分区:
[root@gaosh-64 ~]# ll /dev/sdb*
brw-rw---- 1 root disk 8, 16 7月  23 12:47 /dev/sdb
brw-rw---- 1 root disk 8, 17 7月  23 12:47 /dev/sdb1
brw-rw---- 1 root disk 8, 18 7月  23 12:47 /dev/sdb2
brw-rw---- 1 root disk 8, 19 7月  23 12:47 /dev/sdb3
brw-rw---- 1 root disk 8, 20 7月  23 12:47 /dev/sdb4
d. 设定分区号代码

注意: 操作系统中直接使用默认的83分区,也是可以创建PV的,以前一般都是选择8e

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

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


命令(输入 m 获取帮助):t
分区号 (1-4,默认 4):1
Hex 代码(输入 L 列出所有代码):l

 0  空              24  NEC DOS         81  Minix / 旧 Linu bf  Solaris        
 1  FAT12           27  隐藏的 NTFS Win 82  Linux 交换 / So c1  DRDOS/sec (FAT-
 2  XENIX root      39  Plan 9          83  Linux           c4  DRDOS/sec (FAT-
 3  XENIX usr       3c  PartitionMagic  84  OS/2 隐藏的 C:  c6  DRDOS/sec (FAT-
 4  FAT16 <32M      40  Venix 80286     85  Linux 扩展      c7  Syrinx         
 5  扩展            41  PPC PReP Boot   86  NTFS 卷集       da  非文件系统数据 
 6  FAT16           42  SFS             87  NTFS 卷集       db  CP/M / CTOS / .
 7  HPFS/NTFS/exFAT 4d  QNX4.x          88  Linux 纯文本    de  Dell 工具      
 8  AIX             4e  QNX4.x 第2部分  8e  Linux LVM       df  BootIt         
 9  AIX 可启动      4f  QNX4.x 第3部分  93  Amoeba          e1  DOS 访问       
 a  OS/2 启动管理器 50  OnTrack DM      94  Amoeba BBT      e3  DOS R/O        
 b  W95 FAT32       51  OnTrack DM6 Aux 9f  BSD/OS          e4  SpeedStor      
 c  W95 FAT32 (LBA) 52  CP/M            a0  IBM Thinkpad 休 eb  BeOS fs        
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a5  FreeBSD         ee  GPT            
 f  W95 扩展 (LBA)  54  OnTrackDM6      a6  OpenBSD         ef  EFI (FAT-12/16/
10  OPUS            55  EZ-Drive        a7  NeXTSTEP        f0  Linux/PA-RISC  
11  隐藏的 FAT12    56  Golden Bow      a8  Darwin UFS      f1  SpeedStor      
12  Compaq 诊断     5c  Priam Edisk     a9  NetBSD          f4  SpeedStor      
14  隐藏的 FAT16 <3 61  SpeedStor       ab  Darwin 启动     f2  DOS 次要       
16  隐藏的 FAT16    63  GNU HURD or Sys af  HFS / HFS+      fb  VMware VMFS    
17  隐藏的 HPFS/NTF 64  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE 
18  AST 智能睡眠    65  Novell Netware  b8  BSDI swap       fd  Linux raid 自动
1b  隐藏的 W95 FAT3 70  DiskSecure 多启 bb  Boot Wizard 隐  fe  LANstep        
1c  隐藏的 W95 FAT3 75  PC/IX           be  Solaris 启动    ff  BBT            
1e  隐藏的 W95 FAT1 80  旧 Minix       
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”

命令(输入 m 获取帮助):t
分区号 (1-4,默认 4):2
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”

命令(输入 m 获取帮助):t
分区号 (1-4,默认 4):3
Hex 代码(输入 L 列出所有代码):8e  
已将分区“Linux”的类型更改为“Linux LVM”

命令(输入 m 获取帮助):t
分区号 (1-4,默认 4):4
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”

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

Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@gaosh-64 ~]# 

e. 创建pv
[root@gaosh-64 ~]# pvcreate /dev/sdb{1,2,3,4}
  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@gaosh-64 ~]# 
f. 查看物理卷信息
[root@gaosh-64 ~]# pvdisplay /dev/sdb1
  "/dev/sdb1" is a new physical volume of "5.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb1
  VG Name               
  PV Size               5.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               7VIumv-EEJe-mcWK-Gt0G-euqy-bky0-LAnwny
   
[root@gaosh-64 ~]# 

g. 创建vg卷组

语法: vgcreate vg名字 pv的名字 可以跟多个pv

[root@gaosh-64 ~]# vgcreate vg01 /dev/sdb1
  Volume group "vg01" successfully created
[root@gaosh-64 ~]# vgs
  VG              #PV #LV #SN Attr   VSize   VFree 
  centos_zmedu-17   1   2   0 wz--n- <19.00g     0 
  vg01              1   0   0 wz--n-  <5.00g <5.00g
[root@gaosh-64 ~]# 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               <5.00 GiB
  PE Size               4.00 MiB
  Total PE              1279
  Alloc PE / Size       0 / 0   
  Free  PE / Size       1279 / <5.00 GiB
  VG UUID               MC3TGi-k52K-Oeq9-gxTW-DiL0-zy0n-5fOsjP
   
[root@gaosh-64 ~]# 

h. 创建LV

lvcreate -n 指定新逻辑卷的名称 -L指定lv大小的SIZE(M,G) (-l:小l 指定LE的数量) vgname

[root@gaosh-64 ~]# lvcreate -n lv01 -l 20M vg01
  Invalid argument for --extents: 20M
  Error during parsing of command line.
[root@gaosh-64 ~]# lvcreate -n lv01 -L 20M vg01
  Logical volume "lv01" created.
[root@gaosh-64 ~]# lvcreate -n lv02 -l 10 vg01
  Logical volume "lv02" created.
[root@gaosh-64 ~]# lvs
  LV   VG              Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root centos_zmedu-17 -wi-ao---- <17.00g                                                    
  swap centos_zmedu-17 -wi-ao----   2.00g                                                    
  lv01 vg01            -wi-a-----  20.00m                                                    
  lv02 vg01            -wi-a-----  40.00m                                                    
[root@gaosh-64 ~]# 

[root@gaosh-64 ~]# pvdisplay /dev/sdb1
  --- Physical volume ---
  PV Name               /dev/sdb1
  VG Name               vg01
  PV Size               5.00 GiB / not usable 4.00 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              1279
  Free PE               1264
  Allocated PE          15  # 已经使用了15个PE  =60M
  PV UUID               7VIumv-EEJe-mcWK-Gt0G-euqy-bky0-LAnwny
   
[root@gaosh-64 ~]# 

[root@gaosh-64 ~]# vgdisplay vg01
  --- Volume group ---
  VG Name               vg01
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <5.00 GiB
  PE Size               4.00 MiB
  Total PE              1279
  Alloc PE / Size       15 / 60.00 MiB
  Free  PE / Size       1264 / <4.94 GiB
  VG UUID               MC3TGi-k52K-Oeq9-gxTW-DiL0-zy0n-5fOsjP
   
[root@gaosh-64 ~]# 

3. 格式化与挂载

[root@gaosh-64 ~]# mkdir /lv01   #创建挂载目录
[root@gaosh-64 ~]# ls /dev/vg01/  ## 查看逻辑卷位置
lv01  lv02
[root@gaosh-64 ~]# mkfs.xfs /dev/vg01/lv01  格式化为XFS系统
meta-data=/dev/vg01/lv01         isize=512    agcount=1, agsize=5120 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=5120, 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@gaosh-64 ~]# 

挂载:

[root@gaosh-64 ~]# mount /dev/vg01/lv01 /lv01
[root@gaosh-64 ~]# df -h
文件系统                           容量  已用  可用 已用% 挂载点
devtmpfs                           1.9G     0  1.9G    0% /dev
tmpfs                              1.9G     0  1.9G    0% /dev/shm
tmpfs                              1.9G   13M  1.9G    1% /run
tmpfs                              1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/mapper/centos_zmedu--17-root   17G  4.8G   13G   29% /
/dev/sda1                         1014M  238M  777M   24% /boot
tmpfs                              378M   12K  378M    1% /run/user/42
tmpfs                              378M     0  378M    0% /run/user/0
/dev/mapper/vg01-lv01               17M  1.1M   16M    7% /lv01
[root@gaosh-64 ~]# 

lv扩容

扩容前确认下是否有可扩容空间,空间是从VG创建的。

[root@gaosh-64 ~]# vgs
  VG              #PV #LV #SN Attr   VSize   VFree 
  centos_zmedu-17   1   2   0 wz--n- <19.00g     0 
  vg01              1   2   0 wz--n-  <5.00g <4.94g

扩容命令是: extend vgextend lvgextend
lvs

扩容逻辑卷

[root@gaosh-64 ~]# lvextend -L +30m /dev/vg01/lv01
  Rounding size to boundary between physical extents: 32.00 MiB.
  Size of logical volume vg01/lv01 changed from 20.00 MiB (5 extents) to 52.00 MiB (13 extents).
  Logical volume vg01/lv01 successfully resized.
[root@gaosh-64 ~]# lvs
  LV   VG              Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root centos_zmedu-17 -wi-ao---- <17.00g                                                    
  swap centos_zmedu-17 -wi-ao----   2.00g                                                    
  lv01 vg01            -wi-ao----  52.00m                                                    
  lv02 vg01            -wi-a-----  40.00m                                                    
[root@gaosh-64 ~]# 

[root@gaosh-64 ~]# df -Th /lv01
文件系统              类型  容量  已用  可用 已用% 挂载点
/dev/mapper/vg01-lv01 xfs    17M  1.1M   16M    7% /lv01
[root@gaosh-64 ~]# 

[root@gaosh-64 ~]# xfs_growfs /dev/vg01/lv01
meta-data=/dev/mapper/vg01-lv01  isize=512    agcount=1, agsize=5120 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=5120, 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 5120 to 13312
[root@gaosh-64 ~]# 

[root@gaosh-64 ~]# df -Th /lv01
文件系统              类型  容量  已用  可用 已用% 挂载点
/dev/mapper/vg01-lv01 xfs    49M  1.2M   48M    3% /lv01
[root@gaosh-64 ~]# 

VG扩容

[root@gaosh-64 ~]# vgs
  VG              #PV #LV #SN Attr   VSize   VFree 
  centos_zmedu-17   1   2   0 wz--n- <19.00g     0 
  vg01              1   2   0 wz--n-  <5.00g <4.91g
[root@gaosh-64 ~]# pvcreate /dev/sdb3
  Physical volume "/dev/sdb3" successfully created.
[root@gaosh-64 ~]# vgextend vg01 /dev/sdb3
  Volume group "vg01" successfully extended
[root@gaosh-64 ~]# vgs
  VG              #PV #LV #SN Attr   VSize   VFree
  centos_zmedu-17   1   2   0 wz--n- <19.00g    0 
  vg01              2   2   0 wz--n-   8.99g 8.90g
[root@gaosh-64 ~]# 

总结

LVM不难,难的是命令超多,容易把自己绕晕, 所以建议在本子上多写几遍,哪个命令用来做啥的。

你可能感兴趣的:(#,循序渐进学运维-基础篇,lvm)