> 文档中心 > 【Linux】LVM的创建及使用

【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的创建及使用

3. 创建使用LVM逻辑卷

1) 创建PV

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

【Linux】LVM的创建及使用

b. 接下来我们创建4个分区:
[root@gaosh-64 ~]# ll /dev/sd*brw-rw---- 1 root disk 8,  0 7月  23 10:28 /dev/sdabrw-rw---- 1 root disk 8,  1 7月  23 10:28 /dev/sda1brw-rw---- 1 root disk 8,  2 7月  23 10:28 /dev/sda2brw-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 获取帮助):nPartition type:   p   primary (0 primary, 0 extended, 4 free)   e   extendedSelect (default p): p分区号 (1-4,默认 1):1起始 扇区 (2048-41943039,默认为 2048):将使用默认值 2048Last 扇区, +扇区 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/sdbbrw-rw---- 1 root disk 8, 17 7月  23 12:47 /dev/sdb1brw-rw---- 1 root disk 8, 18 7月  23 12:47 /dev/sdb2brw-rw---- 1 root disk 8, 19 7月  23 12:47 /dev/sdb3brw-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):1Hex 代码(输入 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 usr3c  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 LVMdf  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 FAT3251  OnTrack DM6 Aux 9f  BSD/OS   e4  SpeedStorc  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  SpeedStorab  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 swapfd  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  旧 MinixHex 代码(输入 L 列出所有代码):8e已将分区“Linux”的类型更改为“Linux LVM”命令(输入 m 获取帮助):t分区号 (1-4,默认 4):2Hex 代码(输入 L 列出所有代码):8e已将分区“Linux”的类型更改为“Linux LVM”命令(输入 m 获取帮助):t分区号 (1-4,默认 4):3Hex 代码(输入 L 列出所有代码):8e  已将分区“Linux”的类型更改为“Linux LVM”命令(输入 m 获取帮助):t分区号 (1-4,默认 4):4Hex 代码(输入 L 列出所有代码):8e已将分区“Linux”的类型更改为“Linux LVM”命令(输入 m 获取帮助):wThe 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 PE0  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   vg011   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 PE1279  Alloc PE / Size0 / 0     Free  PE / Size1279 / <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   VGAttrLSize   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 PE1279  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 PE1279  Alloc PE / Size15 / 60.00 MiB  Free  PE / Size1264 / <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=0data     =  bsize=4096   blocks=5120, imaxpct=25  =  sunit=0      swidth=0 blksnaming   =version 2bsize=4096   ascii-ci=0 ftype=1log      =internal log    bsize=4096   blocks=855, version=2  =  sectsz=512   sunit=0 blks, lazy-count=1realtime =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% /devtmpfs  1.9G     0  1.9G    0% /dev/shmtmpfs  1.9G   13M  1.9G    1% /runtmpfs  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% /boottmpfs  378M   12K  378M    1% /run/user/42tmpfs  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   vg011   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   VGAttrLSize   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/lv01meta-data=/dev/mapper/vg01-lv01  isize=512    agcount=1, agsize=5120 blks  =  sectsz=512   attr=2, projid32bit=1  =  crc=1 finobt=0 spinodes=0data     =  bsize=4096   blocks=5120, imaxpct=25  =  sunit=0      swidth=0 blksnaming   =version 2bsize=4096   ascii-ci=0 ftype=1log      =internal bsize=4096   blocks=855, version=2  =  sectsz=512   sunit=0 blks, lazy-count=1realtime =none     extsz=4096   blocks=0, rtextents=0data 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   vg011   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   vg012   2   0 wz--n-   8.99g 8.90g[root@gaosh-64 ~]# 

总结

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