阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

RHEL6.5 LVM使用解析

164次阅读
没有评论

共计 6943 个字符,预计需要花费 18 分钟才能阅读完成。

Linux 用户在安装操作系统时,会遇到的一个常见问题就是如何正确地评估各分区大小,以便划分合适的硬盘空间。普通的磁盘分区管理方式在各分区划分好后就无法改变其大小,而当一个逻辑分区存放不下某个文件时,这个文件因为受上层文件系统的限制,也不能跨越多个分区来存放,所以也不能同时放到别的磁盘上。或遇到某个分区空间快耗尽时,解决的方法通常是使用符号链接,或者新建目录外挂分区以及使用调整分区大小的工具,但这只是暂时解决办法,没有从根本上解决问题。其实在 Linux 下,利用 LVM,这些问题都可以迎刃而解,用户在无需停机的情况下就可以方便地调整各个分区大小。

一、LVM 命令简介

  LVM(Logical Volume Manager) 是一个应用于 Linux 的内核的逻辑卷管理器, 是 Linux 环境下对磁盘进行分区管理的一种机制。
  LVM 中需要知道的名词:
  1、PV(物理卷)可以是一个磁盘,一个分区。由 PE(物理盘区)组成,多个 PV 可以组成一个 VG(卷组).
  2、VG(卷组)是多个物理卷组成的一个组,但是卷组不可以直接使用,需要在上面创建 LV(逻辑卷)才可以使用。VG 上可以创建多个 LV。
  3、PE(物理盘区)就像我们之前学习的磁盘的 block 块,默认是 4MB。
  4、LV(逻辑卷) 是建立在卷组之上的一个可用空间。有物理边界和逻辑边界两种边界。

二、相关命令介绍

 1、物理卷 PV
      pvcreate  创建 pv              例:pvcreate /dev/sda1
      pvs      查看 pv 信息          例:直接在命令行里输入 pvs
      pvdisplay  查看 pv 详细信息      例:pvcreate /dev/sda1
      pvmove    将 pv 数据移动到其他 pv  例:pvmove /dev/sda1 /dev/sda4
      pvremove  将 pv 删除            例:pvremove /dev/sda1
 2、卷组 VG
      如何创建、查看、删除 vg
      vgcreate  创建 vg            例:vgcreate myvg  /dev/sda{m,n}
      vgs        查看 vg 信息      例:直接在命令行里输入 vgs
      vgdisplay  查看 vg 详细信息      例:vgdisplay myvg
      vgremove  将 vg 删除            例:vgremove myvg
      如何扩展 vg
      首先准备好一个 PV;
      然后使用 vgextend 命令即可完成扩展;
      格式:vgextend VG_NAME /PATH/TO/PV
          vgextend testvg /dev/sdb2 扩展 myvg 卷组,把 /dev/sda2 加进去
      如何缩减 vg
      1)确定要移除的 PV;
      2)将此 PV 上的数据转移至其它 PV;
        pvmove /path/ to /pv
      3)从卷组中将此 PV 移除;
        格式:vgreduce VG_NAME /PATH/TO/PV
        vgreduce testvg /dev/sdb2 缩减 myvg 卷组,把 /dev/sda2 去掉
 3、逻辑卷 LV
      如何创建、查看、删除 lv
      lvcreate  创建 lv              例:lvcreate lv1 /dev/myvg
      lvs      查看 lv 信息          例:直接在命令行里输入 lvs
      lvdisplay  查看 lv 详细信息      例:vgdisplay lv1
      lvremove  将 lv 移除            例:lvremove  /dev/myvg/lv1
      如何扩展 lv

      确定需要扩展多大空间

      确定当前逻辑卷所在的卷组是否有足够的空闲空间;

扩展举例:
1、物理边界
lvextend -L [+]SIZE /path/to/lv
2、逻辑边界
resize2fs /path/to/device

如何缩减 lv
确定缩减的大小,但前提是至少能容纳原有的所有数据。
缩减:
1)卸载并强行检测文件系统;
umount /path
e2fsck -f
2)逻辑边界
resize2fs /path/to/device SIZE
3)物理边界
lvreduce -L [-]SIZE /path/to/lv

4、快照卷
1) 生命周期为整个数据时长;在这段时长内,数据的增长量不能超出快照卷大小;
2) 快照卷应该是只读的;
3) 跟原卷在同一卷组内;
    lvcreate
        -L    指定快照卷的大小
        -s    创建快照卷
        -p r  创建的快照卷为只读访问
    格式:
        lvcreate -L SIZE -s -p r -n LV_NAME /path/to/lv

三、lv 之示例

1、创建一个分区

[root@test11 ~]# fdisk -l // 查看分区的情况
[root@test11 ~]# fdisk /dev/sda // 进行分区
Command (m for help): n // n 为添加一个分区,p 查看分区
First cylinder (2898-10443, default 2898): // 按【Enter】键决定
Using default value 2898 // 起始柱面选择默认 值
Last cylinder or +size or +sizeM or +sizeK (289810443, default 10443): +2G // 给 2G 的大小
Command (m for help): t // 更改分区类型
Partition number (1-5): 5 // 选着分区
Hex code (type L to list codes): l // 分区类型列表
Hex code (type L to list codes):8e // 将新添加的分区标注成 lvm
Command (m for help): p // 查看分区表
/dev/sda5 2756 2999 1959898+ 8e Linux LVM
Command (m for help): w // 保存
[root@test11 ~]# partprobe /dev/sda // 是系统识别分区(代替重启)
[root@test11 ~]# mkfs.ext4 /dev/sda5 // 格式化新添加的分区

2、PV 的创建

[root@test11 ~]# pvcreate /dev/sda5 // 创建 pv
Writing physical volume data to disk “/dev/sda5”
Physical volume “/dev/sda5” successfully created
[root@test11 ~]# pvs // 查看当前 pv 的信息
PV VG Fmt Attr PSize PFree
/dev/sda5 lvm2 a– 1.87G 1.87G

3、VG 的创建

[root@test11 ~]# vgcreate vg0 /dev/sda5 //vg0 为当前 vg 的名
Volume group “vg0” successfully created
[root@test11 ~]# vgs // 查看 vg 的信息
VG #PV #LV #SN Attr VSize VFree
vg0 1 0 0 wz–n- 1.87G 1.87G

4、lv 的创建

[root@test11 ~]# lvcreate -L 500M -n lv01 vg0
Logical volume “lv01” created
[root@test11 ~]# lvs // 查看 lv 的信息
LV VG Attr LSize Origin Snap% Move Log Copy% Convert
lv01 vg0 -wi-a- 500.00M
[root@test11 ~]# mkfs.ext4 /dev/vg0/lv01 // 格式化

5、lv 的增大

[root@test11 ~]# lvextend -L +300M /dev/vg0/lv01 //(原来 lv 大小 500M,拉伸分区到 800M) Extending logical volume lv01 to 800.00 MB
Logical volume lv01 successfully resized
[root@test11 ~]# resize2fs /dev/vg0/lv01 // 拉伸文件系统
[root@test11 ~]# lvs
LV VG Attr LSize Origin Snap% Move Log Copy% Convert
lv01 vg0 -wi-ao 800.00M // 大小变成了 800M

6、lv 的减小

# umount /dev/vg0/lv01 // 卸载逻辑卷 /dev/vg0/lv01
# df -h // 查看
# e2fsck -f /dev/vg0/lv01 // 磁盘校验
# resize2fs /dev/vg0/lv01 500M // 回缩文件系统到 500M
# lvreduce -L 500M /dev/vg0/lv01 // 回缩分区到 500M
WARNING: Reducing active logical volume to 500.00 MB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce lv01? [y/n]: y
# lvs
LV VG Attr LSize Origin Snap% Move Log Copy% Convert
lv01 vg0 -wi-a- 500.00M // 此时已变成 500M 大小
# mount /dev/vg0/lv01 /mnt/lv01 // 重新挂载分区
# df -h // 查看
# ls /mnt/lv01 // 查看文件

四、lvm 的关闭

[root@test11 ~]# umount /mnt/lv01
[root@test11 ~]# lvremove /dev/vg0/lv01 // 删除 lv
Do you really want to remove active logical volume lv01? [y/n]: y
Logical volume “lv01” successfully removed
[root@test11 ~]# vgchange -a n vg0 // 使 vg0 不具有 active 标志
0 logical volume(s) in volume group “vg0” now active
[root@test11 ~]# vgremove vg0 // 删除 vg
Volume group “vg0” successfully removed
[root@test11 ~]# pvremove /dev/sda5 // 删除 pv
Labels on physical volume “/dev/sda5” successfully wiped

 

五、扩展根分区和 SWAP

[root@zkdb1 ~]# pvs

  PV        VG      Fmt  Attr PSize  PFree 

  /dev/sda3  vg_zkdb1 lvm2 a–  557.46g 521.46g

[root@zkdb1 ~]# lvs

  LV  VG      Attr      LSize  Pool Origin Data%  Move Log Cpy%Sync Convert

  root vg_zkdb1 -wi-ao—- 20.00g                                           

  swap vg_zkdb1 -wi-ao—- 16.00g                                           

[root@zkdb1 ~]# lvcreate -L 30720M vg_zkdb1

  Logical volume “lvol0” created

[root@zkdb1 ~]# lvs

  LV    VG      Attr      LSize  Pool Origin Data%  Move Log Cpy%Sync Convert

  lvol0 vg_zkdb1 -wi-a—– 30.00g                                           

  root  vg_zkdb1 -wi-ao—- 20.00g                                           

  swap  vg_zkdb1 -wi-ao—- 16.00g                                           

[root@zkdb1 ~]# lvextend -L +30G /dev/mapper/vg_zkdb1-root

  Extending logical volume root to 50.00 GiB

  Logical volume root successfully resized

[root@zkdb1 ~]# e2fsck -f /dev/mapper/vg_zkdb1-root

e2fsck 1.41.12 (17-May-2010)

/dev/mapper/vg_zkdb1-root is mounted.

e2fsck: Cannot continue, aborting.

 

[root@zkdb1 ~]# lvs

  LV    VG      Attr      LSize  Pool Origin Data%  Move Log Cpy%Sync Convert

  lvol0 vg_zkdb1 -wi-a—– 30.00g                                           

  root  vg_zkdb1 -wi-ao—- 50.00g                                           

  swap  vg_zkdb1 -wi-ao—- 16.00g                                           

[root@zkdb1 ~]# resize2fs /dev/mapper/vg_zkdb1-root

resize2fs 1.41.12 (17-May-2010)

Filesystem at /dev/mapper/vg_zkdb1-root is mounted on /; on-line resizing required

old desc_blocks = 2, new_desc_blocks = 4

Performing an on-line resize of /dev/mapper/vg_zkdb1-root to 13107200 (4k) blocks.

The filesystem on /dev/mapper/vg_zkdb1-root is now 13107200 blocks long.

 

扩展 SWAP

[root@zkdb1 ~]# lvs

  LV    VG      Attr      LSize  Pool Origin Data%  Move Log Cpy%Sync Convert

  lvol0 vg_zkdb1 -wi-a—– 30.00g                                           

  root  vg_zkdb1 -wi-ao—- 50.00g                                           

  swap  vg_zkdb1 -wi-ao—- 16.00g                                           

[root@zkdb1 ~]# lvextend -L +16G /dev/mapper/vg_zkdb1-swap

  Extending logical volume swap to 32.00 GiB

  Logical volume swap successfully resized

[root@zkdb1 ~]# e2fsck -f /dev/mapper/vg_zkdb1-swap

e2fsck 1.41.12 (17-May-2010)

/dev/mapper/vg_zkdb1-swap is mounted.

e2fsck: Cannot continue, aborting.

 

 

 

[root@zkdb1 ~]# resize2fs /dev/mapper/vg_zkdb1-swap

resize2fs 1.41.12 (17-May-2010)

resize2fs: Bad magic number in super-block while trying to open /dev/mapper/vg_zkdb1-swap

Couldn’t find valid filesystem superblock.

[root@zkdb1 ~]# lvs

  LV    VG      Attr      LSize  Pool Origin Data%  Move Log Cpy%Sync Convert

  lvol0 vg_zkdb1 -wi-a—– 30.00g                                           

  root  vg_zkdb1 -wi-ao—- 50.00g                                           

  swap  vg_zkdb1 -wi-ao—- 32.00g

Ubuntu 上使用 LVM 轻松调整分区并制作快照  http://www.linuxidc.com/Linux/2015-09/122563.htm

使用 LVM 创建弹性磁盘存储——第一部分  http://www.linuxidc.com/Linux/2014-10/107697.htm

在 Linux 中扩展 / 缩减 LVM(第二部分)http://www.linuxidc.com/Linux/2014-10/107786.htm

在 LVM 中 录制逻辑卷快照并恢复(第三部分)http://www.linuxidc.com/Linux/2014-11/108867.htm

在 LVM 中设置精简资源调配卷(第四部分)http://www.linuxidc.com/Linux/2014-11/109757.htm

使用条块化 I / O 管理多个 LVM 磁盘(第五部分)http://www.linuxidc.com/Linux/2014-12/110532.htm

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2015-09/122800.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计6943字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中