Linux 的lvm 是一种抽象层次比较高的文件系统,可以由多个磁盘共同构成一个大的逻辑盘符,拥有弹性容量的特点,个人感觉这个课已跟服务器的均衡负载挂上钩,由于其弹性的容量最高可以达到1PB的单个盘符容量(ext4的最大卷容量为1EB,单个文件最大容量16TB,相比较于windows 的NTFS文件系统最大卷静态2T,动态16T,单文件2T),具有不错的动态扩展性能。
首先由磁盘构成PV(physical volume)
再由PV构成VG(volume group)
最后由VG划分多个LV(logic volume)
如图(百度借的图)
按照我的理解,他把硬盘的容量抽象化,将物理分区的容量打碎为容量单元即PE(physical extend) 然后再由这些PE组成卷组构成逻辑卷
首先用空闲的卷制作PV(其实就是个简单的标记,不对卷做什么改变)
Pvcreate /dev/sdb1 (如果有多个卷制作pv 依次制作就行,不考虑顺序)
制作的PV 可以用PVdisplay查看
然后使用vgcreate 制作vg
Vgcreate vg /dev/sdb{1,2,3,4}
其中vg指创建的vg名称 后面的参数是pv
依然可以用vgdisplay 查看
再然后使用lvcreate 创建lv
Lvcreate -l 1020 –n VG_LV vg
其中-l 使用多少PE 也可以使用-L 指定使用大小 -n 制作lv的名称 后面的vg是指定使用哪个VG
依然还是有lvdisplay可用于查看
最后就可以正常使用fdisk 制作分区 mkfs格式化 mount挂载然后使用了。
关于lv的扩大与缩小:
扩大lvm的顺序是 制作pv 加入vg 然后改变lv大小 最后改变fs大小
首先用umount 卸载掉已挂载的lv卷(切记不要在挂载的盘符内使用umount,否则怎么卸载怎么失败,吃了半个小时的亏就是卸载不掉)
然后 使用
lvchange –an /dev/vg/vg_lv
停用lv
使用
lvresize -l +500m vg /dev/vg/vg_lv
-l 可以使用-L替换后面接容量 亮点可以使用 + - 直接指定增加减小的容量或PE个数下一个参数VG 是指定从哪个vg中增加或减少容量 最后的参数是指定哪个lv执行的结果可以由lvdisplay 查看。
最后在不重新格式化lvm的前提下使用resize2fs 指定改变的大小。
Resize2fs /dev/vg/vg_lV 500m
此处也可以使用mkfs从新格式化lv 我没试 理论应该好用。
对了,还得用
lvchange –ay /dev/vg/vg_lv
启用lvm再然后就可以mount继续使用了。
缩小lv其实跟扩大区别不大
首先还是umount卸载 resize2fs 改变lv卷大小 lvchange 停用 lvresize 改变lv大小
Umount /mnt/
Resize2fs /dev/vg/vg_lv 1000m
容量可以使用G,M,K
其实这个resize2fs 跟windows下的分区助手 diskgenus 等分区软件的无损分区很像
Lvchange –an /dev/vg/vg_lv
Lvresize –L -100M vg /dev/vg/vg_lv
然后将pV从vg中移除
Vgreduce vg /dev/sdb4
将pv标记移除
Pvremove /dev/sdb4
启用lv
Lvchange –ay /dev/vg/vg_lv
再mount 就可以继续使用缩小后的lv了
建立快照 其实就是一个备份 不过有一些限制,好在生成快照的速度要快好多,不论多大的lv快照就是秒秒钟建立完成,具体我没试验过,不过按照快照的原理确实如此。
建立pV 使用物理容量
然后使用VGextend 使新加入的pv 加入 vg中
Vgextend vg /dev/sdb4
制作lv的快照实际上是新建立了一个lv 只不过他是对指定lv的一个映射。
Lvcreate -l 195 –s -n vg_snap /dev/vg/vg_lv
其中-l 指定大小 –s 制作snapshot -n 后面接名字 最后参数指定被快照的lv
制作的快照不用mkfs就可以直接挂载使用 。其大小于原lv一模一样,可以使用lvdisplay查看。这个快照有容量的限制也可由上面的命令中看到。
快照的好处就是 可以任意祸害快照,然后重新生成快照,其与备份还原的区别个人认为就是备份还原慢 这个快照生成的速度快的让人惊讶,仅此而已。
其实有很多东西在第一遍看的时候你再看第二遍会有不少的新理解,再第一遍看鸟哥基础篇确实这地方根本就看不懂就跳过去了,看完一遍回来看的时候发现这个东西其实也没有那么难,就是抽象的层次高了一些而已。
对于抽象,抽象的层次越高则其对具体硬件的依赖越少,不过其复杂性也随之增高。