关闭

lvm 常用命令

1098人阅读 评论(0) 收藏 举报
分类:

一,lvm: Logical Volume Manager(逻辑卷管理)

pv: 物理卷(PE: Physical Extent)

物理卷在逻辑卷管理中处于最底层,它可以是实际物理硬盘上的分区,也可以是整个物理硬盘。
PE:
物理区域是物理卷中可用于分配的最小存储单元,物理区域的大小可根据实际情况在建立物理卷时指定。
物理区域大小一旦确定将不能更改,同一卷组中的所有物理卷的物理区域大小需要一致。
命令:
pvcreate /dev/sdb   //创建物理卷(VGDA:卷组描述区域)
pvcreate /dev/sdc
pvcreate /dev/sd{d,e}
pvscan, pvdisplay //扫瞄,显示物理卷
pvremove /dev/sdb  //删除物理卷

vg:卷组

卷组建立在物理卷之上,一个卷组中至少要包括一个物理卷,在卷组建立之后可动态添加物理卷到卷组中。
一个逻辑卷管理系统工程中可以只有一个卷组,也可以拥有多个卷组。
命令:
vgcreate <volume-group1卷组名> /dev/sdb1 /dev/sdb2 /dev/sdb3  //创建卷组
vgdisplay 
vgremove  <volume-group1>  //删除卷组
vgchange -a y  // 激活所有卷组
vgextend <volume-group1> <pv-path>   //增大卷组,把新的物理卷加入现在卷组
vgreduce <volume-group1> <pv-path>//减小卷组,把物理卷从卷组中移出
卷组的合并与拆分
vgmerge 目的卷组名 源卷组名#合并两个已经存在的卷组,要求两个卷组的物理区域大小相等且源卷组是非活动的。
vgsplit 现有卷组 新卷组物理卷全路径名[物理卷全路径名]

lv:逻辑卷(LE:Logical Extent)

逻辑卷建立在卷组之上,卷组中的未分配空间可以用于建立新的逻辑卷,逻辑卷建立后可以动态地扩展和缩小空间。

LE:逻辑区域是逻辑卷中可用于分配的最小存储单元,逻辑区域的大小取决于逻辑卷所在卷组中的物理区域的大小。

系统中的多个逻辑卷要以属于同一个卷组,也可以属于不同的多个卷组。

命令:

lvcreate -L 100M -n <lv1逻辑卷名>  <volume-group1卷组名>    //创建逻辑卷

lvdisplay 
lvremove /dev/volume-group1/lv1    //删除逻辑卷
lvresize -L 200M /dev/volume-group1/lv1   // 增大,或 缩小逻辑卷大小
lvextend -L|--size +逻辑卷大小增量 逻辑卷全路径名   //增大
lvreduce q -L|--size +逻辑卷减小量 逻辑卷全路径名    //缩小
lvchange -an <logical volume path>     //inactive 逻辑卷
lvchange -ay <logical volume path>//active 激活逻辑卷

COW快照:
lvcreate -s -n <snapshot name> -L <size of snapshot> <lvm volume for which to take snapshot >//创建快照
lvconvert --merge <snapshot path>//快照rollback
如:
lvcreate -s -n snap0 -L 50M /dev/vg0/lv0//创建COW快照 (精简卷不能指定大小)
lvconvert --merge /dev/vg0/snap0//快照回滚
注:
原生逻辑卷快照(COW快照) 回滚后 就不能再打快照:(可用精简卷)
提示:Snapshots of an origin that has a merging snapshot is not supported

二,精简卷:thinly-provisioned LVs

thinly-provisioned LVs :原理介绍

是在rhel6.3中作为技术预览引入,在rhel6.5和rhel7中全面支持的lvm技术。

工作原理: 
在创建Thin“瘦”卷时,预分配一个虚拟的逻辑卷容量大小,而只是在实际写入数据时才分配物理空间给这个卷。
这样我们可以轻易的创建出总逻辑容量超出物理磁盘空间的多个“精简卷”,而无须为将来可能达到的数据量提前“买单”。
在应用产生的数据确实需要增加驱动器时,我们也可以灵活地在线调整卷的大小。 
 
可能带来的问题: 
  当每个卷已使用的容量总和超过阵列的物理容量时,将无法再写入数据,并导致应用出错。
于是设置空间预警的功能就相当重要,比如在物理空间占用达到85%时向管理员发出通知,
或者设定自动增长策略,当达到指定阀值,比如85%时,卷自动增长10G。
 
Thin provisioned的功能:
  Thin Provisioned的最大特点在于可以对存储资源进行按需动态分配,即对存储进行了虚拟化管理。
例如,某位用户向服务器管理员请求分配10TB的资源。虽然可能确实需要10TB的物理存储容量,但根据当前使用情况,分配2TB就已足够。
因此,系统管理员准备2TB的物理存储,并给服务器分配10TB的虚拟卷。服务器即可基于仅占虚拟卷容量1/5的现有物理磁盘池开始运行。

这样的“始于小”方案能够实现更高效地利用存储容量。

 组成:

  在标准的逻辑卷中磁盘空间在创建时就会占用卷组的空间,但是在瘦(thin)卷中只有在写入时才会占用存储池"thin pool LV"中的空间。
 一个 thin逻辑卷创建前必须创建 thin pool LV,一个 thin pool LV由两部分组成:
一个大的data LV(数据卷)用来储存数据块,和一个metadate LV(元数据卷)。metadata中记录了thin卷中每个块数据的所属关系。
(说简单点就是metadata中储存索引,data中储存真实数据,当你访问数据时,先通过索引再访问数据,因为你每次首先访问的不是真实数据,
所有就像C语言中链表一样,理论上储存的数据可以无限大,并且动态可调)

Thin术语讲解

 ThinDataLV:thin数据卷
       从卷组中创建的一个比较大的卷
       在thin池中来储存thin卷的数据块
ThinMetaLV: thin 元数据卷
       从卷组中创建的一个比较小的卷

       在thin池来储存块数据的映射关系

ThinPoolLV :thin池卷,精简池

      由 ThinDataLV 和 ThinMetaLV组成

      包括ThinLVs 和 SnapLV

ThinLV:thin LV 精简卷

       由 ThinPoolLV创建(刚开始创建时为空,不实际占有空间)

精简卷操作:

1,ThinDataLV:创建一个卷作为精简数据卷
lvcreate --name <pool0> --size 10G <vg0>
2, ThinMetaLV:创建一个卷作为精简元数据卷
lvcreate --name <pool0meta> --size 10G <vg0>
3, ThinPoolLV: 创建一个精简池
lvconvert --thinpool vg/pool0 --poolmetadata vg/pool0meta
注:
a,它把数据卷,元数据卷 合并成一个精简池, 且此精简池使用原数据卷的名字
b,数据卷会自动隐藏并重命名为ThinPoolLV_tdata
c,元数据卷会自动隐藏并重命名为ThinPoolLV_tmeta
lvs -a 可以查看隐藏的名称
4,ThinLV: 创建精简卷
lvcreate --name thin1 -V 1T --thinpool vg/pool0         //创建精简卷thin1
lvcreate --name thin2 -V 1T  --thinpool vg/pool0//创建精简卷thin2
5, 创建精简卷快照
lvcreate --name <thin1s1快照名> --snapshot vg/thin1   //创建快照
lvcreate --name <thin1s2>--snapshot vg/thin1
lvchange  -ay -K /dev/vg/thin1s1//激活精简卷快照(默认不激活时,不可用)
lvconvert --merge /dev/vg/thin1s1     //快照回滚  (回滚后还可以接着创建快照)   

补充:

1,自动设置Thin-pool 的 metadate LV
 Thin-pool的metadata卷你可以在创建之前手动指定,也可以不指定,由系统自动为你创建,并管理。(需要lvm2-monitor服务启动)
 如:
# lvcreate --name pool0 --size 10G vg
# lvconvert --thinpool vg/pool0
Logical volume "pool0_tmeta" created 
Converted vg/pool0 to thin pool. 


2, 自动扩展thin pool LV
一个LVM守护进程(dmeventd)将默认监视thin-pool的LV的数据使用量,达到指定阀值后会自动扩展。
当然自动扩展的前提是你创建thin-pool的那个卷组中依然有空闲的空间.
 
使用下面的命令来打开或关闭thin-pool的自动扩展
#lvchange --monitor {y|n} VG/ThinPoolLV
 
lvm.conf(5) thin_pool_autoextend_threshold
lvm.conf(5) thin_pool_autoextend_percent
在/etc/lvm/lvm.conf中如上两个参数设置自动扩展的默认设置.
 
thin_pool_autoextend_threshold  这个参数设置了当达到磁盘使用的多少阀值后,自动扩展。
如果把它设置成 100 就是关闭自动扩展. 最小的值是50.
 
thin_pool_autoextend_percent 定义了每次达到上面定义的阀值后自动扩展多大的空间, 在其当前的规模上扩展百分之几.
 
        警告日志是当你的thin-pool达到80%, 85%, 90% and 95%,时发出的.
 
        Example
       如果 thin_pool_autoextend_threshold 设置成70 同时 thin_pool_autoextend_percent 设置成20, 当thin-pool达到70%使用, 它会再自动扩展 20%.  比如1G的thin-pool, 使用700M时,它会自动变为1.2G. 当它的使用达到 840M,这个池会扩展变为 1.44G, 等等。 
 
    数据空间耗尽
       如果数据空间耗尽, 写数据队列会进入等待状态,不能写,可以扩大磁盘使恢复正常, 读操作依然是正常的。数据空间耗尽一般不会引起数据的损坏。 
        当数据空间被耗尽的时候使用lvs命令会显示thin-pool是%100的:
       # lvs vg/pool0
         LV     VG           Attr       LSize   Pool  Origin Data%
         pool0  vg           twi-a-tz-- 512.00m              100.00
      一个thin-pool数据空间耗尽可能是由以下原因造成的:
1. 自动扩展是关闭的, 并且没有手动扩展Thin-pool.  (关闭自动扩展是不推荐的)
2. The dmeventd daemon is not running and the thin pool is not manually extended.  (Disabling dmeventd is not recommended.)
3. Automatic extension of the thin pool is too slow given the rate of
       writes to thin LVs in the pool.  (This can be addressed by tuning the
       thin_pool_autoextend_threshold and thin_pool_autoextend_percent.)
4. The VG does not have enough free blocks to extend the thin pool.
       The response to data space exhaustion is to extend the thin pool.
       This is described in the section "Manually manage free data space of
       thin pool LV".
 
    Metadata 空间耗尽
       如果元数据空间耗尽(或者元数据空间出错), 回返回磁盘IO出错的提示.
        当元数据空间被耗尽的时候,lvs命令会显示 100%的Meta%在thin-pool :
        # lvs -o lv_name,size,data_percent,metadata_percent vg/pool0
         LV    LSize Data%  Meta%
          pool0              100.00
 
       数据空间耗尽出现的情况同样适用于元数据空间耗尽,但是元数据空间耗尽更危险。
 元数据空间耗尽可能会引起数据的索引和数据的指向出现不一致,因此需要立即卸载分区后,检查和修复数据。
       1. Deactivate the thin pool LV, or reboot the system if this is not possible.
       2. Repair thin pool with lvconvert --repair.
          See "Metadata check and repair".
       3. Extend pool metadata space with lvextend VG/ThinPoolLV_tmeta.
          See "Manually manage free metadata space of a thin pool LV".

       4. Check and repair file system with fsck.


参考:

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Logical_Volume_Manager_Administration/index.html

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:146210次
    • 积分:2255
    • 等级:
    • 排名:第16692名
    • 原创:70篇
    • 转载:58篇
    • 译文:7篇
    • 评论:5条
    最新评论