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