LVM_逻辑卷

-----------'创建逻辑卷'[LV - Logical Volume]

---//n注:As of this writing, the Linux 2.6 kernel supports on-line resize for
// filesystems mounted using ext3 only.
n'目前[在线放大]resize只适用于ext3,对于其他文件系统需要先umount‘

---//RHEL5 VS RHEL6 的区别

[RHEL5]: /dev/vg0/lv0 [link] --> /dev/mapper/vg0-lv0 ['设备']
(lv0是由lvcreate -n 指定) 映射 (blkid查看)

[RHEL6]: /dev/vg0/lv0 [link] && /dev/mapper/vg0-lv0 [link] --> /dev/dm-0 ['设备']


---//n:PV.VG.LV引用方式

1.PV:/dev/sda6

2.VG: vg0

3.LV:/dev/vg0/lv0 /dev/mapper/vg0-lv0 /dev/dm-0(RHEL6)


---//n创建LV

1.fdisk /dev/sda //n:创建/dev/sda{6,7,8}:各100M

2.pvcreate /dev/sda{6,7,8} //创建PV:Initialize a disk or partition for use by LVM.

3.vgcreate '[-s 8M]' vg0 /dev/sda{6,7} //创建VG.-s:指定PE的大小。PE:physicalExtend,由多个block组成

4.lvcreate -L 160M -n lv0 vg0 //-L:指定LV大小(默认PE=4M,所以必须是PE=4M的整数倍), -n:LV名字
lvcreate -L 20M -n lv1 vg0
lvcreate -l 100 -n lv2 vg0 //-l:指定PE的个数,100*8M=800M

5.mkfs.ext3 /dev/vg0/lv0 //格式化:/dev/vg0/lv0 or /dev/mapper/vg0-lv1
mkfs.ext3 /dev/mapper/vg0-lv1

6.mout -a //修改fstab,挂载LV上的FS。


---//n[快照snapshot]

1.lvcreate -L 160M -n lv0_snapshot -s /dev/vg0/lv0 // -s:快照;为lv0创建snapshot;

[a.snapshot是建立在 VG 上,所以占用vg0的空间]

[b.snapshot'无须格式化',挂载即可使用]

[c.snapshot'不'能写在fstab中]

[d.snapshot'写时复制COW'(copy on write),'[稀疏文件]'] //保证all data在创建snapshot时一致,不会出现“2+4=9”

---//n查看PV.VG.LV信息

1.pvs / pvscan / pvdisplay

2.vgs / vgscan / vgdisplay

3.lvs / lvscan / lvdisplay



---//n查看LV上的FS信息

1.tune2fs -l /dev/vg0/lv0

tune2fs -l /dev/mapper/vg0-lv0

tune2fs -l /dev/dm-0 //RHEL6中可以

---//n:lvextend -L 240M /dev/vg0/lv0
Block count: 163840//total size = 1K * count = 160M
Block size: 1024 //block size = 1K

---//n:resize2fs /dev/vg0/lv0
Block count: 245760//total size = 240M



---//n[在线]'扩大"逻辑卷LV' : [VG -> ] LV -> FS

1.vgextend vg0 /dev/sda8 //扩大VG

2.lvextend /dev/vg0/lv0 -L 240M //扩大LV -> 240M

3.resize2fs /dev/vg0/lv0 [240M] //扩大FS,默认放大到分区大小(即the filesystem blocksize of the filesystem)
[*******如果不放大FS -> lv0中未被FS覆盖的{新增}物理空间 [不可用]n *******]



---//n[离线]‘缩小LV‘ : FS -> LV [-> VG]

1.umount /mnt/lv0

2.resize2fs /dev/vg0/lv0 150M

3.e2fsck -f /dev/vg0/lv0 //check a Linux ext2/3/4 filesystem

3.lvreduce /dev/vg0/lv0 -L 150M //lvreduce

4.mount /mnt/lv0



---//n删除 做为 PV的 分区

---//n删除LV

1.lvremove [-f] vg0/lv0 //删除vg0上的lv0 [-f:无须确认,直接删除]

2.lvremove [-f] vg0 //删除vg0上所有LV

---//n删除VG

1.vgremove [-f] vg0 //[-f]:如果vg0上有LV,此时会提示是否remove;-f强制vgremove(一并remove所有LV)

---//n删除PV

1.pvremove /dev/sda{6,7,8}

---//n删除partition

1.fdisk /dev/sda //-d:删除/dev/sda6,7,8

2.partprobe //RHEL6需要reboot

---------<'LVM快照' >-----------

@当一个snapshot创建的时候,仅拷贝原始卷里数据的元数据(meta-data)。

#创建的时候,并不会有数据的物理拷贝,因此snapshot的创建 几乎是实时的,

#当原始卷上有写操作执行时,snapshot跟踪原始卷块的改变,

#这个时候原始卷上将要改变的数据在改变之前被拷贝到snapshot预留 的空间里,

#因此这个原理的实现叫做写时复制(copy-on-write)。


@在写操作写入块之前,CoW讲原始数据移动到 snapshot空间里,这样就保证了所有的数据在snapshot创建时保持一致。

#而对于snapshot的读操作,如果是读取数据块是没有修改过的, 那么会将读操作直接重定向到原始卷上,

#如果是要读取已经修改过的块,那么就读取拷贝到snapshot中的块。

#这样,通常的文件I/0流程有一个改变,那就是在文件系统和设备驱动之间增加了一个cow层,变成了下面这个样子:

$file I/0 ---> filesystem -- >CoW --> block I /O

$采取 CoW 实现方式时,snapshot的大小并不需要和原始卷一样大,其大小仅仅只需要考虑两个方面:

1.从shapshot创建到释放这段时间内,估计块的 改变量有多大;

2.数据更新的频率。

$一旦 snapshot的空间记录满了原始卷块变换的信息,那么这个snapshot立刻被释放,从而无法使用,从而导致这个snapshot无效。

$所以,非常重要的一点,一定要在snapshot的生命周期里,做完你需要做得事情。

$当然,如果你的snapshot大小和原始卷一样大,甚至还要大,那它的寿命就 是“与天齐寿”了。

#我们假定创建一个120M的snapshot,这就意味着在snapshot生命周期里,你仅能有120M的数据量改变。


我在IBM工作,可以为大家内部推荐IBM各种职位 IBM全球职位尽在以下链接(请在浏览器中打开,QQ/微信 会阻止): http://ibmreferrals.com/ 很乐意为感兴趣的小伙伴分享:我的面试经验^_^ 如需咨询,请邮件发送以下邮箱,有问必回 1026096425@qq.com
原文地址:https://www.cnblogs.com/jackydalong/p/2408777.html