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

相关推荐

  • Linux 命令行返回状态

    linux 执行命令后会返回一个状态码 命令执行成功返回0: 当删除一个文件并删除成功时返回的状态码为0 [root@localhost 1]# rm -rf 1_1 [root@localhost 1]# echo $? 0 命令执行失败返回1-255 当把 文件夹 1_1 重命名为1_2失败后状态码为1 [root@localhost 1]# mv 1_…

    Linux干货 2017-08-28
  • LVS NAT模型演示

    LVS NAT模型演示 这里我们刻意将两个RS的web页面文件,提供为不同的内容(实际应用中,每个RS页面的内容要完全相同) 基本配置 [root@web1 ~]# route add default gw 192.168.110.130  –> web1服务器…

    2016-10-29
  • 基于heartbeat v1+ldirectord实现LVS集群高可用

    前言 高可用集群,High Availability Cluster,简称HA Cluster,是指以减少服务中断时间为目的的服务器集群技术。通过上文可以看出,LVS集群本身并不能实现高可用,比如Director Server不能检测Real Server的健康度,一旦其中一台或全部Real Server宕机,Director Server还会继续转发请求,…

    Linux干货 2015-06-08
  • 【招聘】天津/赞普科技股份有限公司/Linux系统运维工程师/6-7k/五险一金

    天津赞普科技股份有限公司——简称赞普科技,成立于2003年,坐落于天津市滨海高新区,是一家专业的互联网综合服务商,主营数字网络建设、数据接入及增值服务和智能化网络产品及服务。历经11年的发展,赞普科技已成长为高新区科技型小巨人企业、国家高新技术企业,专注于移动互联与大数据、云计算、商业WIFI行业的领军者。     赞普科技计划…

    Linux干货 2015-12-03
  • bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其示例演示

    1)bash的工作特性之命令执行状态返回值; 在 Linux 下,任意一个命令执行结束之后,bash都会返回0-255之间的数值以表示命令执行成功与否;其返回值保存于bash的特殊变量$?中; 其中0表示:执行成功;1-255表示执行错误; 例如: [root@localhost ~]# ls anaconda-ks.cfg initial-setup-ks…

    Linux干货 2016-11-06
  • Linux系统启动流程、内核及模块管理、linux启动故障排除和自制linux

    Linux系统启动流程、内核及模块管理 Linux系统的组成部分组成:内核+根文件系统(kernel+rootfs)内核(kernel): 进程管理(创建、调度、销毁等)、内存管理、网络管理(网络协议栈)、驱动程序、文件系统、安全功能IPC:Inter Process Communication机制本地进程间通信机制:消息队列、semerphor、shm(共…

    2016-09-29