lvm简要及基本操作

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

     LVM的重要特性:

        1、LVM使用的存储空间单位是PE,默认的PE是4M,一个VG最多有65534个PE,默认下一个VG最大256G。

        2、VG的空间扩展、删除,都是通过添加空闲的PE、删除空闲的PE来完成 

        3、LVM有两个不同的写入数据模式:

            A、线性模式:VG中有多个PV是,且同时都属于一个LV时,那么线性模式就是当每一个PV的容量用完之后,再使用其他的PV。默认就是此模式

            B、交错模式:VG中有多个PV是,且同时都属于一个LV时,那么交错模式会同时把每个PV中写入相等容量的数据。类似于RAID0 

        4、支持快照

     如图所示LVM模型:

blob.png

四个硬盘或分区组一成个逻辑卷,在逻辑卷上可以再逻辑分区,当逻辑分区的空间无法再满足要求时,可以灵活的扩展使用空间

    LVM的几个概念:

    LVM是在磁盘分区和文件系统之间添加的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,提供一个抽象的盘卷,在盘卷上建立文件系统,有以下几个概念:

        1、物理存储介质(The physical media):这里指系统的存储设备:硬盘,如:/dev/hda1、/dev/sda等等,是存储系统最低层的存储单元。

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

        3、卷组(Volume Group):LVM卷组类似于非LVM系统中的物理硬盘,其由物理卷组成。可以在卷组上创建一个或多个“LVM分区”(逻辑卷),LVM卷组由一个或多个物理卷组成。

        4、逻辑卷(logical volume):LVM的逻辑卷类似于非LVM系统中的硬盘分区,在逻辑卷之上可以建立文件系统(比如/home或者/usr等)。

        5、PE(physical extent):每一个物理卷被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。

        6、LE(logical extent):逻辑卷也被划分为被称为LE(Logical Extents) 的可被寻址的基本单位。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。

配置LVM的流程:fdisk创建分区及修改ID为8e–>把分区转换为PV—>创建VG—>创建LV—>格式华LV—>mount文件系统

扩展LV的空间流程:为VG添加PV–》lvextend扩展空间–》resize2fs 增大文件系统的空间

缩小LV的空间流程:

PV的基本命令

pvs   显示pv分区的简要信息,包括硬盘分区名称、PV名称、空间问题及空闲量
        pvcreate 把硬盘分区转换成PV
            pvcreate [选项] [硬盘分区]
                选项:
                -f:强制创建物理卷,不需要用户确认; 
                -u:指定设备的UUID; 
                -y:所有的问题都回答“yes”; 
                -Z:是否利用前4个扇区。
        pvdisplay 显示PV的详细信息
        pvscan 扫描系统中的pv
        pvremove 删除pv
            pvmove [选项] [pv_name....]
                选项:
                    -f 强制删除,不提示
                    -y 对提示的内容,自动输入yes
        pvchange 改变pv的物理属性
            pvchange [选项] [pv_name]
                选项:
                    -u 为指定的PV_NAME随便生成UUID
        pvck 检查PV的元数据
        pvresize 调整PV的容量大小 
            pvresize [选项] [pv_name]
                --setphysicalvolumesize <容量大小> 指定修改PV的空间大小 
                pvresize /dev/sda4 自动把/dev/sda4的空间大小调整为磁盘分区的最大值
                pvresize --setphysicalvolumszise 50G /dev/sda4 把/dev/sda4的空间大小调整为50G    
        pvmove 把源PV的上数据移动到目标pv上
           pvmove [选项] [源PV] [目标PV1.......]
               pvmove /dev/sda4 /dev/sda5 把/dev/sda4的数据移动到/dev/sda5

VG的基本命令

 vgs  显示vg分区的简要信息,包括硬盘分区名称、PV名称、空间问题及空闲量
 vgdisplay 显示vg的详细信息
 vgcreate 创建VG
 vgcreate [选项] [vg_name] [pv_name.....]
     -l:卷组上允许创建的最大逻辑卷数,即PV数量; 
     -p:卷组中允许添加的最大物理卷数;
     -s:卷组上的物理卷的PE大小,即PV数量。
 vgextend  添加PV到VG中
   vgextend [选项] [vg_name] [pv_name]
     -d 使用调试模式
     -t 测试使用
     -f 强制扩展
     -v 显示详细信息    
vgreduce  VolumeGroupName  PhysicalDevicePath [PhysicalDevicePath...] #移除VG中的一个PV ,前提是移动数据
vgremove VG_NAME  #删除vg组,要先把mount取消掉
 vgscan [PhysicalDevicePath] 扫描系统中的VG
LV基本命令
lvs 查看
lvdisplay 查看详细信息
lvcreate 创建lv
lvcreate [选项] [vc_name]
     -L 指定VC的大小,单位 K M G T P E 
     -l 通过指定VC的PE数量,来确定VC的空间大小
     -n 指定vc的名称 
lvremove 删除lv,先要卸载mount
    lvremove [选项] [lv_name]
扩展逻辑卷:
  #注意:在 lvexten扩展完成后,直接操作mount,会发现扩展的空量没有直接应用到文件系统中,需要执行一次 resize2fs #
lvextend -L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME      
resize2fs /dev/VG_NAME/LV_NAME 
缩减逻辑卷:
umount /dev/VG_NAME/LV_NAME   #缩减必须先umount
e2fsck -f /dev/VG_NAME/LV_NAME  #文件系统强制检测及修复
resize2fs /dev/VG_NAME/LV_NAME #[mMgGtT] #指定文件系统缩减到大多的空间
lvreduce -L [-]#[mMgGtT] /dev/VG_NAME/LV_NAME  #指定LV的缩减到多大的空间
mount #挂载

LVM的快照功能 snapshot

    快照就是将当时系统的信息记录下来,就好像照相一样。将来若有任何数据的改动,则原始数据就会被移动到快照区。

    做快照时,一定要确保数据没有在被访问

    快照LV和被快照的LV要在同一个VG中。

    lvcreate -L #[mMgGtT] -p r -s -n snapshot_lv_name original_lv_name

        说明:-L是快照区的容量大小  -s 是指定创建快照分区

创建PV

[root@localhost ~]# fdisk -l | grep "/dev/sd[cde]"  
Disk /dev/sdc: 5368 MB, 5368709120 bytes, 10485760 sectors
/dev/sdc1            2048    10485759     5241856   8e  Linux LVM
Disk /dev/sdd: 5368 MB, 5368709120 bytes, 10485760 sectors
/dev/sdd1            2048    10485759     5241856   8e  Linux LVM
Disk /dev/sde: 2147 MB, 2147483648 bytes, 4194304 sectors
/dev/sde1            2048     4194303     2096128   8e  Linux LVM

[root@localhost ~]# pvcreate /dev/sd{d1,c1,e1} #创建pv
[root@localhost ~]# pvscan
  PV /dev/sda2   VG centos   lvm2 [9.51 GiB / 40.00 MiB free]
  PV /dev/sdd1               lvm2 [5.00 GiB]
  PV /dev/sdc1               lvm2 [5.00 GiB]
  PV /dev/sde1               lvm2 [2.00 GiB]

创建VG及LV 

[root@localhost ~]# vgcreate vgtest /dev/sd{c1,d1} #创建VG vgtest 
  Volume group "vgtest" successfully created
[root@localhost ~]# pvscan
  PV /dev/sda2   VG centos   lvm2 [9.51 GiB / 40.00 MiB free]
  PV /dev/sdc1   VG vgtest   lvm2 [5.00 GiB / 5.00 GiB free]
  PV /dev/sdd1   VG vgtest   lvm2 [5.00 GiB / 5.00 GiB free]
  PV /dev/sde1               lvm2 [2.00 GiB]
[root@localhost ~]# vgdisplay vgtest
  --- Volume group ---
  VG Name               vgtest
  System ID             
  Format                lvm2
  Metadata Areas        2
  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                2
  Act PV                2
  VG Size               9.99 GiB
  PE Size               4.00 MiB  #PE的默认值
  Total PE              2558   #10G的空间有2558个PE
  Alloc PE / Size       0 / 0   #还没有使用
  Free  PE / Size       2558 / 9.99 GiB
  VG UUID               l26W00-L4Q6-g4yV-NcKc-wzBa-90ak-UoXdiI
  [root@localhost ~]# lvcreate -l 1000 -n lvtest vgtest #创建1000个PE的(即4000MB)lvtest 逻辑分区 
WARNING: ext3 signature detected on /dev/vgtest/lvtest at offset 1080. Wipe it? [y/n]: y
  Wiping ext3 signature on /dev/vgtest/lvtest.
  Logical volume "lvtest" created.
[root@localhost ~]# lvdisplay 
  --- Logical volume ---
  LV Path                /dev/vgtest/lvtest
  LV Name                lvtest
  VG Name                vgtest #VG的名称
  LV UUID                QRJ9jg-vxf6-cOHs-5zuJ-dBze-UryA-3sGork
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2016-05-19 22:46:43 +0800
  LV Status              available
  # open                 0
  LV Size                3.91 GiB 
  Current LE             1000 #1000个PE
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:2
[root@localhost ~]# mkfs.ext3 /dev/vgtest/lvtest  #格式化
[root@localhost ~]# mount /dev/vgtest/lvtest /lvtest #挂载
[root@localhost ~]# ls /lvtest/
lost+found   #完成LV的创建及挂载
[root@localhost ~]#


扩展LV的空间

[root@localhost ~]# lvs
  LV     VG     Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root   centos -wi-ao---- 8.47g                                                    
  swap   centos -wi-ao---- 1.00g                                                    
  lvtest vgtest -wi-ao---- 3.91g                                                    
[root@localhost ~]# vgs
  VG     #PV #LV #SN Attr   VSize  VFree 
  centos   1   2   0 wz--n-  9.51g 40.00m
  vgtest   3   1   0 wz--n- 11.99g  8.08g
  [root@localhost ~]# lvextend -L +1G /dev/vgtest/lvtest  #为lvtest的空间扩大1G
  Size of logical volume vgtest/lvtest changed from 3.91 GiB (1000 extents) to 4.91 GiB (1256 extents).
  Logical volume lvtest successfully resized.
[root@localhost ~]# lvdisplay 
  --- Logical volume ---
  LV Path                /dev/vgtest/lvtest
  LV Name                lvtest
  VG Name                vgtest
  LV UUID                QRJ9jg-vxf6-cOHs-5zuJ-dBze-UryA-3sGork
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2016-05-19 22:46:43 +0800
  LV Status              available
  open                 1
  LV Size                4.91 GiB #扩展后的空间
  Current LE             1256 #扩展后的LE,LE的值与PE相同
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:2
[root@localhost ~]# df -h | grep "lvtest"
/dev/mapper/vgtest-lvtest  3.8G   14M  3.6G   1% /lvtest  #但能使用的空间还没有扩展
[root@localhost ~]# resize2fs /dev/vgtest/lvtest #resize2fs命令被用来增大或者收缩未加载的“ext2/ext3”文件系统的大小
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/vgtest/lvtest is mounted on /lvtest; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/vgtest/lvtest is now 1286144 blocks long.
[root@localhost ~]# df -h | grep "lvtest"
/dev/mapper/vgtest-lvtest  4.8G   14M  4.6G   1% /lvtest #已能使用扩展后的空间

缩小LV的空间

[root@localhost /]# lvdisplay /dev/vgtest/lvtest 
  --- Logical volume ---
  LV Path                /dev/vgtest/lvtest
  LV Name                lvtest
  VG Name                vgtest
  LV UUID                ze2YVv-0eXR-RBD2-byEK-eqtt-zuaD-m4LqJM
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2016-05-19 23:35:14 +0800
  LV Status              available
  # open                 1
  LV Size                5.00 GiB #缩小前的空间
  Current LE             1280
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:2
[root@localhost /]# umount /lvtest/  #必须先卸载,否则会出问题。但扩大空间时不用先卸载
[root@localhost /]# resize2fs /dev/vgtest/lvtest 2G #把文件系统大小压缩成2G
resize2fs 1.42.9 (28-Dec-2013)
Please run 'e2fsck -f /dev/vgtest/lvtest' first.  #提示先进行文件检测,如果没有事先umount,检测会出问题,提示超级块有坏块
[root@localhost /]# e2fsck -f /dev/vgtest/lvtest #检测 
e2fsck 1.42.9 (28-Dec-2013)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/vgtest/lvtest: 11/327680 files (0.0% non-contiguous), 55935/1310720 blocks
[root@localhost /]# resize2fs /dev/vgtest/lvtest 2G  #把文件系统大小压缩成2G
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/vgtest/lvtest to 524288 (4k) blocks.
The filesystem on /dev/vgtest/lvtest is now 524288 blocks long.
[root@localhost /]# lvreduce -L 2G /dev/vgtest/lvtest #把LV的空间缩小成2G
  WARNING: Reducing active logical volume to 2.00 GiB
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce lvtest? [y/n]: Y
  Size of logical volume vgtest/lvtest changed from 5.00 GiB (1280 extents) to 2.00 GiB (512 extents).
  Logical volume lvtest successfully resized.
[root@localhost /]# mount /dev/vgtest/lvtest /lvtest/
[root@localhost /]# df -h | grep "lvtest"
/dev/mapper/vgtest-lvtest  1.9G  7.7M  1.8G   1% /lvtest


原创文章,作者:Net20-deamon,如若转载,请注明出处:http://www.178linux.com/16400

(0)
Net20-deamonNet20-deamon
上一篇 2016-05-23
下一篇 2016-05-25

相关推荐

  • 如何解决生产机上php代码连接mysql报错的故障

    大家好: 今天分享一则当生产机上的网站php代码不能连接Mysql服务器时怎么办? 当LNMP的网站建立好后,我们需要测试网站中的php代码。但发现如下报错怎么办? 解决方法如下:  mysql> show databases; +——————–+ | Dat…

    Linux干货 2016-12-18
  • Linux终端类型

        终端(Terminal)也称终端设备,是计算机网络中处于网络最外围的设备,主要用于用户信息的输入以及处理结果的输出等。在早期计算机系统中,由于计算机主机昂贵,因此一个主机(IBM大型计算机)一般会配置多个终端,这些终端本身不具备计算能力,仅仅承担信息输入输出的工作,运算和处理均由主机来完成。在个人计算机时代,个人计算机可以运行称为…

    Linux干货 2016-10-13
  • 集中练习7-bash脚本

    集中练习7-bash脚本

    Linux干货 2017-12-05
  • 配置使用基于mysql存储rsyslog日志信息

    配置使用基于mysql存储rsyslog日志信息   日志对于我们来说,肯定不会陌生。每个系统应用,只要有人访问,每时每刻都会产生大量的日志,用来记录服务器应用的运行信息。以便于我们在服务有异常时进行查看,或是从日志记录中提取出应用系统的运行信息。某些电商Web网站甚至会利用日志记录去对用户的购买行为作分析,以便更好的服务于客户。 &nb…

    Linux干货 2016-09-05
  • vim文本编辑器之快捷键满天飞

    vim文本编辑器不同于nano的是其功能非常强大,强大的功能还支持各种快捷键,让我们编辑文本的时候更方便更快捷。 本文将会按照下图所展示的功能来对命令一一讲解,           打开文件:       &n…

    Linux干货 2016-08-11