实践LVM

实践之前 最好还是提前了解一下LVM,最好是掌握一些理论。下边这些是本人随便记的一些东西,有点乱,只助于本人的理解!

将普通文件系统转化成 pv 物理卷 pvcreate
然后创建VG  卷用户组  vgcreate, VG包含了多个pv,那是不是vg就可以无限制的增大呢,当然不是,这个是用PE决定的,PE就好比ext分区的block
block的大小通过inode来限制了单一文件系统的大小,而vg最大只能包含65534个PE,因此vg不是无穷大的,那个pe可以在创建vg的时候指定,默认是4M  也就是一个vg最大只能到256G。当然了 pe可以跟block块相比,但vg是不是可以理解为一个单独的文件系统呢? 不是的,LV  逻辑卷才相当于我们传统意义上的 单独分区或单独文件系统。 lv是包含在VG中的,这么说来,vg其实我们可以想象成一块已经格式化的大磁盘,而lv只是在其内划分出来的一个分区。
我们使用lvm就是要求容量大小具有弹性,因为我们能够挂在使用的是lv,因此就要求lv具有大小弹性的特点,那是怎么做到的呢,当然是通过增加或减少pe的个数来实现的,但如果一个vg内没有多余的pe了怎么办呢,此时就用考虑增大vg的容量了,这又是怎么办到的呢? 当然是通过增加pv来实现的。
 当我们在lv中写入数据时,数据时怎么写入到实际的硬盘中的呢?
分为两种方式 :一种是线性模式,例如 三个分区 sdb1  sdb2  sdb3  转换成pv 并包含在一个vg内,同时将更个vg划分给一个lv,此时数据时先写入sdb1 知道写满为止,才写入下一块磁盘,这是推荐也是默认的方式。
第二种方式就是 交错模式。那上边的例子来说  就是 数据被分成几部分 同时写入几块磁盘,感觉有点像raid 0,读取性能好,但安全没有保障 因为如果一个磁盘挂掉,那么数据就无法恢复,况且 我们使用lvm主要是用它 容量弹性化的特点 ,而不是强调读写性能或数据安全之类的,如果是后者,那么我们还是使用raid比较好。
创建lvm的前提是 分区的systemID必须为linux lvm ,用fdisk 改变 代码为8e

实践:

 

PV阶段: 【 pvcreate  pvremove pvscan pvdisplay】

(如果不会修改FS Id  ,查看fdisk用法)

原系统就有一个lv (、dev/sda2)它是挂载在/下的。

下面使用 /dev/sdb{5,6,7,8} 操作

注意 最后一行那个 in use:仅仅是指已经分配给vg的大小,不是指数据占用的大小

Pvdisplay |more

Allocated   已被分配的

 

删除一个pv

VG段  vgcreate   vgremove  vgscan  vgdisplay  vgextend  vgreduce  vgchange

将上边三个pv加入到一个vg当中

-s  指定 vg的PE的大小

Metadata  Areas  应该是指pv的个数

Cur LV    指当前创建的lv个数 

 

使用vgextend增加vg容量

vgreduce减小VG

Lv段:   lvcreate  lvremove  lvscan  lvdisplay   lvextend  lvreduce  lvresize

 

-l  指定 pe个数  

-L  指定 大小  k m g

创建lv后 才会自动创建 /dev/vgname

查看lv  必须使用绝对路径

我们看到 挂载的不是/dev/vgname/lvname  而是/dev/mapper/vgname-lvname  这是因为 我们在/dev/vgname 中只是创建了  快捷方式而已 

其真实文件会在 /dev/mapper中,而且命名很有规律,那就是: vgname-lvname

放大lv的容量:

-l  不是指定 增大多少 而是指定增大到多少  也可以使用-L指定容量  可以使用 +50  这样来实现 指定增大多少

当然那个/dev/hdb6可以不指定

我们看到 、dev/hdb6 确实减小了

 

我们看到lv确实增大了  但是 mount后请看

发现大小并没有改变 

我们重新格式化 看下

这次真的增大了,但这种方式 却让数据丢失了。

我们还原回去

看大小  lv确实变小了同时

/dev/hdb6 的大小也还原了

但挂载后 还是没变,我们只能再次将其格式化

现在还原了

这种方式 我们可以在mount的情况下指定从哪个pv里边取用PE(当然也可以不指定)来增大lv的容量,但缺点是  必须格式化来增大文件系统的容量,这样会丢失数据!!

也可以不指定 

但是我们看到 ,它取用pe是从上而下的  用完一个pv在用下一个pv 。我觉得还是这种方式比较好

我们看到 在分区在mount的情况下,我们可以使用 resizee2fs 命令 强制增大分区。真是方便啊

提示: lvextend  我们也可以使用 lvresize替代,用法是一样的

减小LV容量

之前我们在mount的情况下 直接使用lvextend 和resizee2fs 工具增加了 lv和fs的容量,

看能否在mount的情况下进行减缩呢?

直 现在开始直接使用resize2fs 来进行fs的缩减:

看来不支持mount情况下  所减

Unmount后  要想缩减还需要e2fsck 检索一下

貌似成功了 我们验证下

看来是真的成功了

下边我们看下lv的容量如何

看来  fs的大小  始终和lv 不能自动同步啊   我们只能手动缩减lv的容量了 

相差700M左右 我们直接给他缩减掉700M

查看下

缩减成功了啊

与刚开始对比一下 发现  /dev/hdb8 已经没有在使用了  这个时候我们就可以直接将其从vg中移除掉了

移除成功了 

如果我们移除正在使用的hdb7 看下 

他是不会让你移除的

注意: 减小时 只能是先减小fs 再减小 lv  

而增大是 就正好想法  先增大lv 然后再增大 fs

 

 

图片太多,上传太繁琐,如果错误或不理解的地方,请联系:

                          Qq    : 2234386990

                          E-mail: [email protected]

 

 

 

 

 

 

你可能感兴趣的:(lvm)