lvm 逻辑卷管理

标签:LVM 创建 扩容 缩减

一、LVM 

LVM是 Logical Volume Manager(逻辑卷管理)的简写,它由Heinz Mauelshagen在Linux 2.4内核上实现。LVM将一个或多个硬盘的分区在逻辑上集合,相当于一个大硬盘来使用,当硬盘的空间不够使用的时候,可以继续将其它的硬盘的分区加入其中,这样可以实现磁盘空间的动态管理,相对于普通的磁盘分区有很大的灵活性。 

看图识LV

lv.jpg

LVM重要的概念

物理卷(Physical Volume,PV)

指磁盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。

卷组(Volume Group,VG)

类似于非LVM系统中的物理磁盘,其由一个或多个物理卷PV组成。可以在卷组上创建一个或多个LV(逻辑卷)。

逻辑卷(Logical Volume,LV)

类似于非LVM系统中的磁盘分区,逻辑卷建立在卷组VG之上。在逻辑卷LV之上可以建立文件系统(比如/home或者/usr等)。

物理块(Physical Extent,PE)

每一个物理卷PV被划分为称为PE(Physical Extents)的基本单元,(对应物理磁盘上的扇区还是柱面)具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。所以物理卷(PV)由大小等同的基本单元PE组成。

二、创建LVM

    创建步骤基本如同图示一样,一:建好仓库,二:然后搭建一套管理人员把仓库划分管理好并对外宣传我有一个大的仓库欢迎来租赁,三:打广告稿促销寻找客户来租你的仓库。

    换成咱们LVM的概念就是先有PV才有VG最后划分LV使用。

PV相关命令

pvcreate    #创建一个PV物理卷
pvchange    #修改PV的属性
pvresize    #调整一个PV的大小
pvremove    #删除一个PV
pvmove      #移动PE到指定物理卷
pvscan      #搜索所有磁盘上的物理卷
pvs         #显示PV的简要信息
pvdisplay   #显示PV的属性信息

VG相关命令

vgcreate    #创建卷组
    -l:设置此卷组可容纳的LV最大数,默认为255
    -p:设置此卷组包含PV的最大数,默认为255
    -s:设置此卷组PE大小,默认为4M
vgextend   #扩展VG大小
vgchange   #修改VG属性信息
vgreduce   #缩减VG大小
vgremove   #删除VG
vgscan    #搜索所有磁盘上的卷组
vgs      #显示VG简要信息
vgdisplay  #显示VG属性信息
vgck        #检查VG元数据

LV相关命令

lvcreate    #创建LV分区
    -l:设置LV大小,以PE为单位
    -L:设置LV大小,以字节为单位
    -n:设置LV名称
    -p:设置LV权限读写权限,默认为可读可写
    -s:设置一个快照卷,对一个已存在的LV做快照
lvextend    #扩展LV大小
lvreduce    #缩减LV大小
lvchange    #修改LV属性信息
    -ay:标记LV为可用状态
    -an:标记LV为不可用状态
lvremove    #删除LV
lvscan      #搜索所有磁盘上的逻辑卷
lvs         #显示LV简要信息
lvdisplay   #显示LV属性信息

创建LVM的简要操作步骤

[root@zhuzw-centos6 ~]# ls /dev/sd*   #查看分区文件
/dev/sda  /dev/sda1  /dev/sda2  /dev/sdb  /dev/sdb1  /dev/sdc  /dev/sdc1  #我们事先准备好的/dev/sdb1和/dev/sdc1
[root@zhuzw-centos6 ~]# pvcreate /dev/sdb1 /dev/sdc1  #将/dev/sdb1和/dev/sdc1创建为PV
  Physical volume "/dev/sdb1" successfully created   #创建成功的输出
  Physical volume "/dev/sdc1" successfully created
[root@zhuzw-centos6 ~]# pvs         #查看PV的简要信息
  PV         VG              Fmt  Attr PSize   PFree  
  /dev/sda2  vg_zhuzwcentos6 lvm2 a--   29.51g      0 
  /dev/sdb1                  lvm2 a--  120.00g 120.00g   #
  /dev/sdc1                  lvm2 a--   80.00g  80.00g  #
    
[root@zhuzw-centos6 ~]# vgcreate -s 8M Mylab /dev/sdb1 /dev/sdc1    #创建vg卷组 -s将PE大小修改稿为8M 卷组名称为Mylab
  No physical volume label read from /dev/sdb1
  Physical volume /dev/sdb1 not found
  No physical volume label read from /dev/sdc1
  Physical volume /dev/sdc1 not found                   #上面四行提示是卷标没有找到
  Physical volume "/dev/sdb1" successfully created      #创建成功的输出
  Physical volume "/dev/sdc1" successfully created
  Volume group "Mylab" successfully created
[root@zhuzw-centos6 ~]# vgs   #查看VG的简要信息
  VG              #PV #LV #SN Attr   VSize   VFree  
  Mylab             2   0   0 wz--n- 199.98g 199.98g
  vg_zhuzwcentos6   1   2   0 wz--n-  29.51g      0 
[root@zhuzw-centos6 ~]# lvcreate -l 200 -n lab_tmp Mylab   #创建一个LV 大小为200个PE 名称为lab_tmp
  Logical volume "lab_tmp" created
[root@zhuzw-centos6 ~]# lvs      #查看LV的简要信息
  LV      VG              Attr       LSize  Pool Origin Data%  Move Log Cpy%Sync Convert
  lab_tmp Mylab           -wi-a-----  1.56g                                             
  lv_root vg_zhuzwcentos6 -wi-ao---- 27.57g                                             
  lv_swap vg_zhuzwcentos6 -wi-ao----  1.94g   
[root@zhuzw-centos6 ~]# mkfs -t ext4 /dev/Mylab/lab_tmp    #格式化创建的LV分区,默认文件存放地址为/dev/VG_NAME/LV_NAME
[root@zhuzw-centos6 ~]# mount /dev/Mylab/lab_tmp /mnt/zhuzw #挂载至文件目录
[root@zhuzw-centos6 ~]# mount   #查看挂载信息
/dev/mapper/vg_zhuzwcentos6-lv_root on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0")
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
vmware-vmblock on /var/run/vmblock-fuse type fuse.vmware-vmblock (rw,nosuid,nodev,default_permissions,allow_other)
/dev/mapper/Mylab-lab_tmp on /mnt/zhuzw type ext4 (rw)   #创建的LV的挂载信息

三、在线扩展根分区容量

我们首先把之前划分给Mylab卷组的/dev/sdb1这个PV从卸载下来(新创建的额PV直接跳过);然后将这个PV加入到根系统所在的卷组内,调整根lv分区大小容量,最后跟新文件系统。

在做操作前一定要仔细查看LVM卷信息。防止误操作。

扩容LVM的步骤是增加PV-增加VG-扩容LV-更新文件系统。

[root@zhuzw-centos6 zhuzw]# pvmove /dev/sdb1 /dev/sdc1  #卸载前一定要先把里面的文件移动到其他的PV上
  /dev/sdb1: Moved: 1.0%
  /dev/sdb1: Moved: 100.0%
[root@zhuzw-centos6 zhuzw]# vgreduce  Mylab /dev/sdb1  #将/dev/sdb1从Mylan卷组内删除
  Removed "/dev/sdb1" from volume group "Mylab"
[root@zhuzw-centos6 zhuzw]# pvs  #查看PV简要信息
  PV         VG              Fmt  Attr PSize   PFree  
  /dev/sda2  vg_zhuzwcentos6 lvm2 a--   29.51g      0 
  /dev/sdb1                  lvm2 a--  120.00g 120.00g   #确保/dev/sdb1的vg项为空
  /dev/sdc1  Mylab           lvm2 a--   79.99g  78.43g
[root@zhuzw-centos6 ~]# pvremove /dev/sdb1     #这是删除PV的命令
  Labels on physical volume "/dev/sdb1" successfully wiped  #删除PV的输出
[root@zhuzw-centos6 ~]# pvcreate /dev/sdb1  #我们是要用这个PV的,再把它创建成PV
[root@zhuzw-centos6 zhuzw]# vgextend vg_zhuzwcentos6 /dev/sdb1  #将/dev/sdb1加入到根分区所在的卷组内
  Volume group "vg_zhuzwcentos6" successfully extended
[root@zhuzw-centos6 zhuzw]# pvs
  PV         VG              Fmt  Attr PSize   PFree  
  /dev/sda2  vg_zhuzwcentos6 lvm2 a--   29.51g      0 
  /dev/sdb1  vg_zhuzwcentos6 lvm2 a--  120.00g 120.00g
  /dev/sdc1  Mylab           lvm2 a--   79.99g  78.43g  
[root@zhuzw-centos6 tmp]# lvextend -L +30G /dev/vg_zhuzwcentos6/lv_root #调整根所在LV大小,增加30G空间
  Extending logical volume lv_root to 57.57 GiB
  Logical volume lv_root successfully resized  
  [root@zhuzw-centos6 mapper]# resize2fs /dev/vg_zhuzwcentos6/lv_root     #在线扩容文件系统大小,挂载的情况下只吃菜扩容,卸载后支持扩容与缩减
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/vg_zhuzwcentos6/lv_root is mounted on /; on-line resizing required
old desc_blocks = 2, new_desc_blocks = 4
Performing an on-line resize of /dev/dm-0 to 15091712 (4k) blocks.
The filesystem on /dev/dm-0 is now 15091712 blocks long.
[root@zhuzw-centos6 mapper]# df -h      #查看文件系统空闲空间情况
Filesystem                           Size  Used Avail Use% Mounted on
/dev/mapper/vg_zhuzwcentos6-lv_root   57G  3.3G   51G   6% /
tmpfs                                491M   72K  491M   1% /dev/shm
/dev/sda1                            485M   35M  426M   8% /boot

四、离线缩减空间

步骤卸载挂载–强制修复文件系统–缩减文件系统空间–缩减LV空间–重新挂载。

[root@zhuzw-centos6 ~]# df -h
Filesystem                           Size  Used Avail Use% Mounted on
/dev/mapper/vg_zhuzwcentos6-lv_root   57G  3.3G   51G   6% /
tmpfs                                491M   72K  491M   1% /dev/shm
/dev/sda1                            485M   35M  426M   8% /boot
/dev/mapper/vg_zhuzwcentos6-labdata   44G   77M   41G   1% /data          #目标将/data空间删减为20G
[root@zhuzw-centos6 ~]# umount /data  #卸载/data的挂载
[root@zhuzw-centos6 ~]# resize2fs /dev/dm-3 20G   #缩减文件系统
resize2fs 1.41.12 (17-May-2010)
请先运行 'e2fsck -f /dev/dm-3'.          #提示请先强制修复文件系统,看来缩减文件系统时必须对文件系统进行修复
[root@zhuzw-centos6 ~]# e2fsck -f /dev/dm-3  #强制修复文件系统
e2fsck 1.41.12 (17-May-2010)
第一步: 检查inode,块,和大小
第二步: 检查目录结构
第3步: 检查目录连接性
Pass 4: Checking reference counts
第5步: 检查簇概要信息
/dev/dm-3: 11/2816000 files (0.0% non-contiguous), 196357/11509760 blocks
[root@zhuzw-centos6 ~]# resize2fs /dev/dm-3 20G  #修复完成后再次缩减文件系统
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/dm-3 to 5242880 (4k) blocks.
The filesystem on /dev/dm-3 is now 5242880 blocks long.  #缩减文件系统完成
[root@zhuzw-centos6 ~]# lvreduce -L 20G /dev/vg_zhuzwcentos6/labdata  #缩减LV分区空间
  WARNING: Reducing active logical volume to 20.00 GiB
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce labdata? [y/n]: y
  Reducing logical volume labdata to 20.00 GiB
  Logical volume labdata successfully resized  #缩减完成
[root@zhuzw-centos6 ~]# mount /dev/dm-3 /data   #重新挂载
[root@zhuzw-centos6 ~]# df -h   #查看文件系统空间
Filesystem                           Size  Used Avail Use% Mounted on
/dev/mapper/vg_zhuzwcentos6-lv_root   57G  3.3G   51G   6% /
tmpfs                                491M   72K  491M   1% /dev/shm
/dev/sda1                            485M   35M  426M   8% /boot
/dev/mapper/vg_zhuzwcentos6-labdata   20G   75M   19G   1% /data    #缩减成功

    最后数据无价操作需谨慎啊。

原创文章,作者:东郭先生,如若转载,请注明出处:http://www.178linux.com/4452

(0)
东郭先生东郭先生
上一篇 2015-05-18
下一篇 2015-05-18

相关推荐

  • 马哥教育网络班18期+第10周课程练习

    博客作业10周.md—E:\Documents CentOS启动流程 1. 加电自检 2. 引导加载次序:BOOT Sequence 3. bootloader: 4. GRUB引导加载器 5. 进入Kernel 6. 运行init 7. 运行初始化脚本 8.启动系统服务 9. 设置登陆终端 整体总结 习题 习题1 习题2 习题3 习题4 习题5 习题6 练…

    Linux干货 2016-06-23
  • 激情的魅力samba服务(热舞篇)

    正如名称一样的迷人的一个服务,充满了激情。火热的天气中更添加一分悸动,本章就尝试对下面火热的samba服务是要如何破解并掌握于手心中。(本篇当中借鉴了鸟哥私房菜和linux就该这么学还有传说中的中华小题库,通过做题来对于samba进行初步的了解)后续还会添加一篇关于samba服务的文章,作为深度了解。 首先了解下samba的来源,听说作者老道(Tridgwe…

    Linux干货 2017-08-19
  • 方便实用的文件查找与压缩

    在平时的运维工作当中通常会编辑某些文件,但时间久了,突然一下子记不起文件的名字,遇到的事情又很紧急,需要立马去处理,而自己只知道那个文件部分的特征信息,我们需要在系统中去搜索自己想要的文件,那么有没有办法去实现呢,当然有,在我们的系统中,文件查找的工具有两个,locate和find。那么下面来介绍这两个工具的用法以及两个工具之间的差别。 在我们linux系统…

    Linux干货 2016-08-13
  • N25-第九周作业

    第九周 1、写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin);分别这两类用户的个数;通过字符串比较来实现; #!/bin/bash # sum_login=0 sum_nologin=0 for i in $(awk -F: ‘{print $7}’ /etc/passwd);do if…

    Linux干货 2017-03-10
  • N26-第九周作业-邢岩

    马哥门徒-N26-邢岩 相信自己、勤奋努力、不断总结!shell脚本练习需要重复、重复、再重复!那么,我就继续来写、写、写。 1、写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin);分别这两类用户的个数;通过字符串比较来实现; #******************************…

    Linux干货 2017-04-03
  • 命令read

    read命令是一个bash命令,它用于从键盘或标准输入中读取文本.我们可以使用read以交互的形式读取来自用户的输入.并且read还提供一种不需要按回车就能够输入参数的方法. read可以从标准输入中读取单独的一行,或者使用-u选项,从文件描述符FD中读取.并且这单独的行被分隔成多个域,第一个词被赋值给第一个变量,第一个赋值给第二个变量,以此类推,直到剩下的…

    Linux干货 2016-08-12