设为首页 收藏本站
查看: 673|回复: 0

[经验分享] RHEL6.5 LVM使用解析

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-9-1 09:20:09 | 显示全部楼层 |阅读模式
   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、创建一个分区
[iyunv@test11 ~]# fdisk -l //查看分区的情况
[iyunv@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 //保存
[iyunv@test11 ~]# partprobe /dev/sda //是系统识别分区(代替重启)
[iyunv@test11 ~]# mkfs.ext4 /dev/sda5 //格式化新添加的分区

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

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

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

5、lv的增大
[iyunv@test11 ~]# lvextend -L +300M /dev/vg0/lv01 //(原来lv大小500M ,拉伸分区到 800M) Extending logical volume lv01 to 800.00 MB
Logical volume lv01 successfully resized
[iyunv@test11 ~]# resize2fs /dev/vg0/lv01 //拉伸文件系统
[iyunv@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的关闭
[iyunv@test11 ~]# umount /mnt/lv01
[iyunv@test11 ~]# lvremove /dev/vg0/lv01 //删除lv
Do you really want to remove active logical volume lv01? [y/n]: y
Logical volume "lv01" successfully removed
[iyunv@test11 ~]# vgchange -a n vg0 //使vg0不具有active标志
0 logical volume(s) in volume group "vg0" now active
[iyunv@test11 ~]# vgremove vg0 //删除vg
Volume group "vg0" successfully removed
[iyunv@test11 ~]# pvremove /dev/sda5 //删除pv
Labels on physical volume "/dev/sda5" successfully wiped

五、扩展根分区和SWAP
[iyunv@zkdb1 ~]# pvs
  PV         VG       Fmt  Attr PSize   PFree  
  /dev/sda3  vg_zkdb1 lvm2 a--  557.46g 521.46g
[iyunv@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                                             
[iyunv@zkdb1 ~]# lvcreate -L 30720M vg_zkdb1
  Logical volume "lvol0" created
[iyunv@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                                             
[iyunv@zkdb1 ~]# lvextend -L +30G /dev/mapper/vg_zkdb1-root
  Extending logical volume root to 50.00 GiB
  Logical volume root successfully resized
[iyunv@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.

[iyunv@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                                             
[iyunv@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
[iyunv@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                                             
[iyunv@zkdb1 ~]# lvextend -L +16G /dev/mapper/vg_zkdb1-swap
  Extending logical volume swap to 32.00 GiB
  Logical volume swap successfully resized
[iyunv@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.


[iyunv@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.
[iyunv@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                    


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-108179-1-1.html 上篇帖子: linux下配置jdk1.7的总结 下篇帖子: php代码上线,实现版本切换
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表