找回密码
 立即注册
首页 业界区 业界 lvm逻辑卷详解

lvm逻辑卷详解

轩辕琳芳 昨天 18:38
lvm优缺点

优点

比起传统的硬盘分区管理方式,LVM更富于灵活性:

  • 将多块硬盘看作一块大硬盘
  • 使用逻辑卷(LV),可以创建跨越众多硬盘空间的分区。
  • 可以创建小的逻辑卷(LV),在空间不足时再动态调整它的大小。
  • 在调整逻辑卷(LV)大小时可以不用考虑逻辑卷在硬盘上的位置,不用担心没有可用的连续空间。
  • 可以在线(online)对逻辑卷(LV)和卷组(VG)进行创建、删除、调整大小等操作。
  • 无需重新启动服务,就可以将服务中用到的逻辑卷(LV)在线(online)/动态(live)迁移至别的硬盘上。
  • 允许创建快照,可以保存文件系统的备份,同时使服务的下线时间(downtime)降低到最小。
  • 支持各种设备映射目标(device-mapper targets),包括透明文件系统加密和缓存常用数据(caching of frequently used data)。这将允许你创建一个包含一个或多个磁盘、并用LUKS加密的系统,使用LVM on top 可轻松地管理和调整这些独立的加密卷 (例如. /, /home, /backup等) 并免去开机时多次输入密钥的麻烦。
缺点


  • 在系统设置时需要更复杂的额外步骤。
  • Windows系统并不支持LVM,若使用双系统,你将无法在Windows上访问LVM分区。
图解lvm工作流程

1.png

普通磁盘: 格式化文件系统、block=4KB ,有N个block-->挂载分区使用
lvm磁盘: 磁盘、格式化为PV(磁盘的容量被分为N个PE) ,PE默认单位是4MB,等于1024个block-->V加入卷组VG(动态伸缩的大磁盘)-->创建逻辑卷LV(等于创建了分区)-->格式化文件系统xfs (sdb sdc sdd),逻辑卷-->挂载使用
lvm常用命令

pv命令
  1. # 1.前提是需要安装lvm命令
  2. yum install lvm2 -y
  3. # 2.创建pv
  4. pvcreate /dev/sdb /dev/sdc
  5.   Physical volume "/dev/sdb" successfully created.
  6.   Physical volume "/dev/sdc" successfully created.
  7. # 3.查看pv
  8. pvs
  9.   PV         VG Fmt  Attr PSize  PFree
  10.   /dev/sdb      lvm2 ---  20.00g 20.00g
  11.   /dev/sdc      lvm2 ---  20.00g 20.00g
  12. pvscan
  13.   PV /dev/sdb                      lvm2 [20.00 GiB]
  14.   PV /dev/sdc                      lvm2 [20.00 GiB]
  15.   Total: 2 [40.00 GiB] / in use: 0 [0   ] / in no VG: 2 [40.00 GiB]
  16. pvdisplay
  17.   "/dev/sdb" is a new physical volume of "20.00 GiB"
  18.   --- NEW Physical volume ---
  19.   PV Name               /dev/sdb
  20.   VG Name
  21.   PV Size               20.00 GiB
  22.   Allocatable           NO
  23.   PE Size               0
  24.   Total PE              0
  25.   Free PE               0
  26.   Allocated PE          0
  27.   PV UUID               GfgfYb-bh9z-ds63-UXwP-Qaad-eGIw-ZxsG7Q
  28.   "/dev/sdc" is a new physical volume of "20.00 GiB"
  29.   --- NEW Physical volume ---
  30.   PV Name               /dev/sdc
  31.   VG Name
  32.   PV Size               20.00 GiB
  33.   Allocatable           NO
  34.   PE Size               0
  35.   Total PE              0
  36.   Free PE               0
  37.   Allocated PE          0
  38.   PV UUID               3CcXdo-M6Zx-N6Dn-4SkN-BPk7-a8Ad-Ft2Ixl
  39. # 4.删除pv
  40. pvremove /dev/sdb /dev/sdc
  41.   Labels on physical volume "/dev/sdb" successfully wiped.
  42.   Labels on physical volume "/dev/sdc" successfully wiped.
复制代码
vg命令
  1. # 1.首先要创建pv
  2. pvcreate  /dev/sdb /dev/sdc
  3.   Physical volume "/dev/sdb" successfully created.
  4.   Physical volume "/dev/sdc" successfully created.
  5. # 2.创建(加入)卷组
  6. vgcreate vg-0224  /dev/sdb /dev/sdc
  7.   Volume group "vg-0224" successfully created
  8. # 3.查看卷组
  9. vgs
  10.   VG      #PV #LV #SN Attr   VSize  VFree
  11.   vg-0224   2   0   0 wz--n- 39.99g 39.99g
  12. vgscan
  13.   Reading volume groups from cache.
  14.   Found volume group "vg-0224" using metadata type lvm2
  15. vgdisplay
  16.   --- Volume group ---
  17.   VG Name               vg-0224
  18.   System ID
  19.   Format                lvm2
  20.   Metadata Areas        2
  21.   Metadata Sequence No  1
  22.   VG Access             read/write
  23.   VG Status             resizable
  24.   MAX LV                0
  25.   Cur LV                0
  26.   Open LV               0
  27.   Max PV                0
  28.   Cur PV                2
  29.   Act PV                2
  30.   VG Size               39.99 GiB
  31.   PE Size               4.00 MiB
  32.   Total PE              10238
  33.   Alloc PE / Size       0 / 0
  34.   Free  PE / Size       10238 / 39.99 GiB
  35.   VG UUID               SVUaXR-9JXY-o5WP-XFAW-kCvo-flnt-W3H867
  36. # 4.扩容vg,新的硬盘直接加入vg即可,会自动创建成pv。
  37. vgextend vg-0224 /dev/sdd
  38.   Physical volume "/dev/sdd" successfully created.
  39.   Volume group "vg-0224" successfully extended
  40. # 5.删除vg
  41. vgremove vg-0224
  42.   Volume group "vg-0224" successfully removed
复制代码
lv命令
  1. # 1. 创建lv
  2. # -L 指定逻辑卷的大小
  3. # -l 指定逻辑卷的大小(PE个数)
  4. # -n 后面跟逻辑卷名
  5. # -s 创建快照
  6. # 创建lv,设定为卷组容量的一半
  7. lvcreate -n 0224lv1 -l 50%VG vg-0224
  8.   Logical volume "0224lv1" created.
  9. # 指定逻辑卷大小
  10. lvcreate -n 0224lv2 -L 10G vg-0224
  11.   Logical volume "0224lv2" created.
  12. # 2.查看逻辑卷信息
  13. lvs
  14.   LV      VG      Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  15.   0224lv1 vg-0224 -wi-a----- 29.99g
  16.   0224lv2 vg-0224 -wi-a----- 10.00g
  17. # 3.扩容
  18. # 给lv增加10G
  19. lvextend -L +10G  /dev/vg-0224/0224lv1
  20.   Size of logical volume vg-0224/0224lv1 changed from 29.99 GiB (7678 extents) to 39.99 GiB (10238 extents).
  21.   Logical volume vg-0224/0224lv1 successfully resized.
  22. # 调整到49G大小
  23. lvextend -L 49G  /dev/vg-0224/0224lv1
  24.   Size of logical volume vg-0224/0224lv1 changed from 39.99 GiB (10238 extents) to 49.00 GiB (12544 extents).
  25.   Logical volume vg-0224/0224lv1 successfully resized.
  26. # 上面虽然调整了 lv2逻辑卷的大小,但是文件系统它不知道,你得告诉文件系统,也跟着调整分区的容量,以及重新设置block的数量
  27. # ext4文件系统,使用resize2fs命令
  28. # xfs文件系统,使用xfs_growfs调整大小
  29. # 4.删除逻辑卷
  30. lvremove    /dev/vg-0224/0224lv1
  31. Do you really want to remove active logical volume vg-0224/0224lv1? [y/n]: y
  32.   Logical volume "0224lv1" successfully removed
复制代码
lvm创建实战
  1. # 1.安装lvm
  2. yum install lvm2 -y
  3. # 2.查看pv
  4. pvs
  5. # 3.创建pv
  6. pvcreate /dev/sdb /dev/sdc
  7. # 4.查看创建后的pv
  8. pvs
  9.   PV         VG Fmt  Attr PSize  PFree
  10.   /dev/sdb      lvm2 ---  20.00g 20.00g
  11.   /dev/sdc      lvm2 ---  20.00g 20.00g
  12. # 5.查看vg
  13. vgs
  14. # 6.创建vg ,sdb sdc创建为卷组,名字是 vg-0224
  15. vgcreate vg-0224  /dev/sdb /dev/sdc
  16.   Volume group "vg-0224" successfully created
  17. # 7.查看创建后的vg
  18. vgs
  19.   VG      #PV #LV #SN Attr   VSize  VFree
  20.   vg-0224   2   0   0 wz--n- 39.99g 39.99g
  21. # 8.查看lv
  22. lvs
  23. # 9.创建lv(创建分区)
  24. # 分配lv1  20G
  25. lvcreate -n lv1  -L 20G  vg-0224
  26.   Logical volume "lv1" created.
  27. # 分配lv2  15G
  28. lvcreate -n lv2  -L 15G  vg-0224
  29.   Logical volume "lv2" created.
  30. # 10. 查看创建后的lv
  31. lvs
  32.   LV   VG      Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  33.   lv1  vg-0224 -wi-a----- 20.00g
  34.   lv2  vg-0224 -wi-a----- 15.00g
  35.                               
  36. ls /dev/vg-0224/
  37. lv1  lv2
  38. # 11.查看磁盘设备信息
  39. # 通过如下命令,查看lvm设备的信息
  40. blkid |grep 'sd[bc]'
  41. /dev/sdc: UUID="EtdTLT-GCsq-3GOd-epgG-iWHE-TyMp-vnV3wq" TYPE="LVM2_member"
  42. /dev/sdb: UUID="OC52bo-rsOY-s24k-1hPs-YEsE-wcEN-XL9Yhx" TYPE="LVM2_member"
  43. # 12.给lv格式化文件系统
  44. # lv1格式化为xfs
  45. mkfs.xfs /dev/vg-0224/lv1
  46. # lv2格式化为ext4
  47. mkfs.ext4 /dev/vg-0224/lv2
  48. # 13.挂载lv
  49. mount /dev/vg-0224/lv1 /data
  50. mount /dev/vg-0224/lv2 /opt
  51. # 14.查看挂载
  52. df -h
  53. Filesystem                Size  Used Avail Use% Mounted on
  54. devtmpfs                  476M     0  476M   0% /dev
  55. tmpfs                     487M     0  487M   0% /dev/shm
  56. tmpfs                     487M  7.7M  479M   2% /run
  57. tmpfs                     487M     0  487M   0% /sys/fs/cgroup
  58. /dev/sda1                  30G  4.2G   26G  14% /
  59. tmpfs                      98M     0   98M   0% /run/user/0
  60. /dev/mapper/vg--0224-lv1   20G   33M   20G   1% /data
  61. /dev/mapper/vg--0224-lv2   15G   41M   14G   1% /opt
  62. lsblk
  63. NAME           MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
  64. sda              8:0    0   30G  0 disk
  65. └─sda1           8:1    0   30G  0 part /
  66. sdb              8:16   0   20G  0 disk
  67. └─vg--0224-lv1 253:0    0   20G  0 lvm  /data
  68. sdc              8:32   0   20G  0 disk
  69. ├─vg--0224-lv1 253:0    0   20G  0 lvm  /data
  70. └─vg--0224-lv2 253:1    0   15G  0 lvm  /opt
  71. sdd              8:48   0   20G  0 disk
  72. sr0             11:0    1  4.4G  0 rom
  73. # 15.开机自动挂载
  74. # 一定切记,如果你的设备发生了变化,一定要去修改/etc/fstab,否则系统开机,读取该fstab文件,找不到设备,无法正确挂载就会报错
  75. 进入紧急模式,直到你再次修复fstab文件
  76. tail -2 /etc/fstab
  77. /dev/mapper/vg--0224-lv1  /data  xfs  defaults 0 0
  78. /dev/mapper/vg--0224-lv2  /opt  ext4  defaults 0 0
复制代码
lvm扩容
  1. # 先查看当前机器的lv情况,确定你要扩容的设备
  2. df -h |grep /data
  3. /dev/mapper/vg--0224-lv1   20G   33M   20G   1% /data
  4. # 扩容到4G的需求,分两种情况
  5. 1. 卷组容量够,直接扩容
  6. 2. 卷组容量不够,加新硬盘,再次pv化,加入卷组之后再扩容
复制代码
方案1,卷组容量够
  1. # 1.确认vg够不够
  2. vgs
  3.   VG      #PV #LV #SN Attr   VSize  VFree
  4.   vg-0224   2   2   0 wz--n- 39.99g 4.99g
  5. # 2.确认够用,直接lvextend扩容lv逻辑卷即可
  6. # 给lv1增加4G
  7. lvextend -L +4G  /dev/vg-0224/lv1
  8.   Size of logical volume vg-0224/lv1 changed from 20.00 GiB (5120 extents) to 24.00 GiB (6144 extents).
  9.   Logical volume vg-0224/lv1 successfully resized.
  10. # 注意,这里还有另一种用法:直接扩容到24G
  11. lvextend -L 24G /dev/vg-0224/lv1
  12. # 3. 查看扩容后的lv
  13. lvs
  14.   LV   VG      Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  15.   lv1  vg-0224 -wi-ao---- 24.00g
  16.   lv2  vg-0224 -wi-ao---- 15.00g   
  17.    
  18. # 4. 虽然调整了 lv1逻辑卷的大小,但是文件系统它不知道,得告诉文件系统也跟着调整分区的容量。
  19. # ext4文件系统,使用resize2fs命令,xfs文件系统,使用xfs_growfs调整大小
  20. # 查看lv1文件系统的类别
  21. df -T |grep lv1
  22. /dev/mapper/vg--0224-lv1 xfs       20961280   32992  20928288   1% /data
  23. # 可以看到是xfs,使用xfs_growfs扩容即可
  24. xfs_growfs /dev/mapper/vg--0224-lv1
  25. meta-data=/dev/mapper/vg--0224-lv1 isize=512    agcount=4, agsize=1310720 blks
  26.          =                       sectsz=512   attr=2, projid32bit=1
  27.          =                       crc=1        finobt=0 spinodes=0
  28. data     =                       bsize=4096   blocks=5242880, imaxpct=25
  29.          =                       sunit=0      swidth=0 blks
  30. naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
  31. log      =internal               bsize=4096   blocks=2560, version=2
  32.          =                       sectsz=512   sunit=0 blks, lazy-count=1
  33. realtime =none                   extsz=4096   blocks=0, rtextents=0
  34. data blocks changed from 5242880 to 6291456
  35. # 5. 查看扩容后的大小
  36. df -hT |grep lv1
  37. /dev/mapper/vg--0224-lv1 xfs        24G   33M   24G   1% /data
复制代码
情况2,卷组容量不够了

[code]# 1.创建新硬盘# 添加一个20G硬盘lsblk |grep sddsdd              8:48   0   20G  0 disk# 2. 给硬盘pv化pvcreate /dev/sdd  Physical volume "/dev/sdd" successfully created.# 3. 查看pvpvs  PV         VG      Fmt  Attr PSize   PFree  /dev/sdb   vg-0224 lvm2 a--
您需要登录后才可以回帖 登录 | 立即注册