一、什么是DM及DM的重要核心
DM:(Device Mapper)设备映射,用于提供逻辑设备的机制【可以实现将多个物理设备映射为逻辑设备的】
MD:(meta device)原设备
快照:snapshot 保留数据,在你照快照时
快照保存的是原来那一刻的数据,如果你原来的数据修改或损坏了,还可以回到那一刻去。在修改之前我们就将原文件A给保存一份给B,所以原文件A想怎么改就怎么改了,不过我们将来访问的时候将出现一个问题,我们通过原来通道1访问的时候是修改过的文件,但是我们通过通道2就是通过快照访问的是则是快照那一刻的结果,就是没有修改过的。快照中是有数据的就是只有那些通过原来的路径会被修改的数据还在修改之前先复制一份存到快照中去,我们通过快照访问的数据是什么呢?如果这个文件没有修改,我们通过快照B路径进来没有错,但真正访问的数据还在原来的分区上。如果那个文件没有修给我们可以通过快照进来,仍然可以找到没有被修改的文件C。如果发生改变的数据,在改变之前先保存快照卷里头,当你一访问快照B的时候,如果数据发生改变了,就访问快照中的数据,如果没改变就访问原来地方的数据。其实快照B里就存放了那一点修改过的数据,所以快照都比较小。
多路径:(multipath)需要借助DM模块来配置的,让我们实现数据存储设备的寻路,能够实现多根线来完成。
我们的存储设备可能在机箱外面,我们在机箱里面伸一根线,我们通过一根线A练到这个阵列上,如果这根线不小心被弄断或不通了,这绝对是不被允许的,我们就要再连一根线B,这是两根线同时坏的可能性就小了。这是我们的数据时如何发送呢?我们可以负载均衡的发送数据,也可以一个发送数据,另一个是备份,作为冗余使用也行,这就是所谓的多路径。
有多块物理磁盘,它能够将多个物理磁盘组成一个物理设备,(如图)将来我们发现这三个物理磁盘都满了,这怎么办?再添块硬盘,把第二层在扯大一点,就行了。因此将来我们发现硬盘用不完了,我们怎么办呢?我们就撤掉一个硬盘,它的边界就随之减小了,但是注意的是,中间那个层次,有点类似于扩展分区,但是扩展分区是不能使用的,要划分成逻辑分区才能用的,虽然可以实现快速的扩展和缩小,但是它本身并不能实现文件系统,最多只是一个底层的真正意义上的物理存储文件的融合器。并且能够向上提供一个统一的界面,因此我们要真正在这里面存储数据的话,必须在上面在建一个近似于逻辑分区,这个逻辑分区才是真正意义上可以扩大和减小的,能扩大到中间层的边界,所以就把整个系统分成了三个层次,最底层我们叫做物理设备,它有个名字叫物理卷PV(physical Volume),而中间这个我们叫卷组VG(Volume Group)就是把多个物理卷组成了一个组。我们称第三层为逻辑卷LV(Logical Volume)。
在一个卷组当中,可以含有多个物理卷,我们卷组的大小就取决于底层物理卷加起来的大小,PV组合起来的大小就是我们VG的大小,实际在VG当中可以建立多个逻辑分区,多个逻辑卷加起来之和不能超过VG的边界,如果我们发现VG不够用了怎么办?这是我们还可以增加物理卷。这是逻辑卷就可以增加了。它是个逻辑设备,而这个设备本身有两种边界我们把它称为物理边界和逻辑边界,所谓逻辑边界就是文件系统边界。因此,每一个逻辑卷就是一个独立的文件系统,相当于一个独立的分区一样,如果说一个卷组中有一个逻辑卷,这完全是可以的,这个逻辑卷可以扩展为整个卷组,我们也可以对卷创建快照的,而对卷创建快照,事实上指的是对逻辑卷创建快照,而快照卷必须跟它的逻辑卷在同一个卷组当中,也就意味着我们将来打算在这里面给某一个逻辑卷创建快照的话一定给它预留出来空间给它创建快照。而后通过快照作为访问这个逻辑卷的另一个入口。
只要把一个物理卷加到卷组中,这个物理卷提供的存储空间事先就被直接划分好了一个一个的块,这个块不是文件系统块,而是叫做物理盘区PE(Physical Extend),这是一个逻辑存储单位,因此只要物理卷加进卷组中以后,它一定跟这个卷组所定义的PE是相同的。【注意:只有物理卷加进卷组后才成称作PE,没有加进卷组不能称作PE】这个PE大小取决于卷组,由此我们的卷组就由很多PE组成。我们的逻辑卷的创建是如何实现的呢?分给存储空间多少个PE,那它就是一个存储空间了,给逻辑卷多少个PE它就有多少个存储空间,而在逻辑卷的PE不在叫做PE而是叫做逻辑盘区LE(Logical Extend)【站在物理卷的角度叫做PE,站在逻辑卷的角度叫做LE】。如图所示:
如果它们的PE来自于不同的物理卷,也许它们的数据可能分别存放于不同的物理卷中,假如其中一块硬盘坏了,那逻辑卷中的数据也损坏了。创建一个具有镜像的逻辑卷,存数据的时候,数据都是存两份,两个物理设备中各一份,其中任何一个物理设备损坏数据还都在,它还支持镜像能力的这是DM的功能。
我们要去创建一个逻辑卷,首先要准备物理卷,这些物理卷是硬盘和分区都行,要求底层只要是个块设备都行,逻辑卷可以创建在RAID上面,例如:我们可以把底层的四块磁盘做成一个RAID10,两个RAID1组成一个RAID0,卷组看到的只是两块盘的大小,然后我们在上面创建逻辑卷,上面的数据我们还要做镜像吗?这个是不用的,因为底层本身就有镜像能力了,所以你任何一个盘坏掉了,数据也是不会丢失的,所以我们可以完全把逻辑卷建立在RAID的基础上【这里指的是硬件RAID】。如图所示:
二、基本命令及演示
跟pv开头的命令:
Pvremove:删除pv(就是删除物理卷中的数据)
Pvmove:移动pv数据(主要是容量用不完的时候,在去除其中一个物理卷,但是这个物理卷中有数据,这个时候可以用pvmove将数据移动到其它物理卷中)
例如:我们创建一个10G的vg,这里只要加起来是10G就行,我们就创建一个7G,一个3G,一个5G的,我们将它们的类型选择为8e。
我们想创建pv,就用pvcreate /dev/sda{10,11}创建,如图
红色显示的说明我们已经创建成功了。我们再用pvs可以查看当前系统上的pv的,
我们发现里面(红线划的)除了sda10和sda11,还有一个(蓝线划的)sda2,这个我们不用管它,这时我们创建操作系统时它自己创建的,这里我们就先不说。我们看他的空间大小很独特,它们的值比我们所划分的值有点差距,没关系这个误差只要在20%之内,我们都是可接受的,变小的原因主要是我们在创建pv的时候,它们可能在上面保留一些原数据的。如果我们要查看详细信息我们就用pvdisplay。
我们可以看出(蓝线)有多少PE,从(红线)看出空闲多少PE,只有把一个PE加入到卷组中以后才知道PE有多大,所以此处是没有PE大小的。我们要想显示某一个的PE可以指定某一个,例如:pvdisplay /dev/sda10 如图:
我们用pvscan则可以扫面当前系统上有多少个PV的【用途:比如说我们把当前这个主机上的pv拆下来放将来到其他主机上去能够被其他主机也能识别,我们就应该先扫描一下这个pv上的原数据,把它识别成pv类型的】如图:
跟vg开头的命令:
-s #(跟单位):指定PE大小,默认是4MB
Vgreduce:缩减vg(删除物理卷)
Vgdisplay:查看vg(详细信息)
例如:我们可以把/dev/sda10和/dev/sda11创建成vg名字为myvg,如图:
划线显示创建成功。我们用vgdisplay查看一下信息如图:
可以看出PE大小为4M。我们用pvdisplay /dev/sda10查看一下/dev/sda10现在有大小没有?如图:
我们从图中的方框中可以看到PE大小,一共有多少PE,现在剩下多少PE后面跟的是有数据的,所以得出把PE加载到vg中就由数据了。
例如:我们删除myvg再查看一下
蓝色为命令,红色就是显示的结果,查看一下看到myvg已经删除。我们再用创建vg的-s命令去修改它的PE大小。如图:
已经不是默认的4MB了,已经将其修改成我们改后的数字了。我们可以用pvs查看可以看到一个pv到底属于那个vg如图:
例如:如果我们缩小vg ,就以为着将其中的pv拿掉,如果将pv直接拿掉的话会很危险,可能上面还存放着数据,我们应该先把上面的数据复制到其它的物理卷中。我们应该先用pvmove将其数据存放到其它盘中。
如上图,我们将/dev/sda11的内容移走的时候,提示里面没有数据的。我们再将其挪走,上面的红色方框中显示已经挪走了,我们再用pvs查看一下,发现已经成功了, /dve/sda11已经不属于任何vg了。
例如:我们可以扩展vg,用vgextend来扩展vg,如图:
横线显示扩展成功,方框显示vg的大小已经改变了,变为12G了。
跟lv开头的命令:
lvcreate:创建lv
lvs:查看lv
lvdisplay:查看lv(详细信息)
例如:我们创建一个lv,如图:
从图中方框看到,我们明明创建一个50M大小的lv,为什么创建成功后却创建了一个56M的呢?主要是怕不够用就会往外扩展一下。
三、扩展逻辑卷及演示
-L [+]# /PATH/TO/LV 指向逻辑卷【扩展物理边界】
resize2fs 【扩展逻辑边界】
例如:我们创建一个2G的逻辑卷,它的名字是testlv,创建完成后让它格式化以后挂载在users上。
然后开机能自动挂载,我们可以编辑vim /etc/fstab,如图:
这一行是分别是
四、缩减逻辑卷注意事项及演示
注意:1、不能在线缩减,得先卸载;
2、确保缩减后的空间大小依然能存储原有的所有数据
resize2fs /PATH/TO/PV 3G 缩减逻辑卷到3G
lvreduce -L [-]# /PATH/TO/LV缩减物理编辑
五、快照卷及注意事项(快照卷必须跟原卷在同一个卷组之内)
注意:1、生命周期为整个数据时长,在这段时长内,数据的增长量不能超过快照卷大小;
Lvcreate
-s:创建快照卷必须使用的
-p r|w:指定权限 (r只读,w只写)
我们创建一个快照,创建完成后在查看一下路径,默认是myvg。我们看它的属性Attr,多了一个s,而且访问权限是只读的。
随后就进行挂载,挂载完成后,我们就可以通过快照去访问了。