磁盘阵列(raid),划分逻辑卷(lvm)

磁盘阵列(raid),划分逻辑卷(lvm)

      将来我们在生产环境中由于磁盘的来回读写量比较大,所以就容易导致磁盘的损坏率比较高。但是,处于生产环境的需求,我们还得保证服务器的正常运行。或者说我们需要对服务器的读写速率进行优化,这样我们就不得不运用到这个磁盘阵列(raid )。而所谓的磁盘阵列就是使用多个磁盘组成一个阵列,进行对磁盘上的数据进行备份存储以及分开存储。这样在一定的程度上即可以提升我们的读写速率,另一方面,也能保证我们某一块磁盘损坏时读写磁盘上的数据还能正常的进行。

磁盘阵列有几个不同的类型:

    在划分raid之前,我们需要先对不同类型的raid进行了解。raid包括raid 0,raid 1…raid 4,raid 5,raid 6以及组合raid-01 ,raid-10等等。

raid-0 :俗称 “条带卷” 

     这种模式需要相同的型号和等量容量的磁盘进行组成,这种模式下的raid局势先将磁盘划分为等量的区块,如果需要往里面存储数据的时候,数据会被等量的存储在不同的磁盘上。比如说:我们使用两个磁盘组合成raid 0 ,现在有100M的数据需要存储到磁盘上,那么每个磁盘上将会存储50M的数据。并且是依次存储。

     raid 0 由于是把数据存储到了两块磁盘或者多个磁盘上了,所以 这样的话存储数据是比一块磁盘的存储的读写速率快的;但是raid 0 由于将数据存储到了两块磁盘上,但是是没有容错性的,一旦其中一块磁盘出现问题那么将不能访问和读写,这样就加大了磁盘的出错率。做raid-0最低需要两块磁盘。

raid-1:俗称为“镜像卷”

       raid 1 和raid 0 是不相同的,raid 1 存储的时候是把数据进行备份然后每个磁盘上进行存储一份,这样的话可以提高磁盘的容错率,其中一块磁盘出现问题的时候,别外一块磁盘还可继续的进行服务,我们还可以正常的进行访问和读写,磁盘的读性能有所提高,但是磁盘的写性能略微下降。

       缺点就是由于一块磁盘作为了备份,这样就减少了磁盘的使用率。 注意: 其中对磁盘进行操作的时候,这两块磁盘是并行操作的。比如:往A磁盘上写一些数据,B磁盘也会同步的进行备份。做raid-1最低需要两块磁盘。

raid-2和raid-3因为已经被淘汰,所以这里就不对其做过多的介绍。

raid-4 :

       raid-4,是由三块及三块以上的磁盘组成,其中会把一个磁盘作为校验盘,校验时通过异或运算进行校验。比如说三块磁盘组成raid-4,其中两块磁盘进行对数据的存储,而另外的一块磁盘作为校验盘,这样做的好处就是但其中的一块磁盘出错的时候,我们可以使用校验盘与另外一块可以正常工作的磁盘做异或运算算出出问题的磁盘上的数据。这样的话磁盘具有一定的容错率。raid-4的优点就是及提高了读写速率也具有一点的容错性;

       缺点就是最低使用三块磁盘,价格比较高,并且由于校验盘由于需要做大量的数据校验,很容易损坏。

raid-5:

       raid-5 的出现时基于raid-4的基础上的,它的运行机制和raid-4的运行机制是类似的。但是与raid-4不同的就是,为了解决raid-4中校验盘易损坏的问题,raid-5做了一定的修改,raid-5是把三块盘分别作为校验盘,轮流做校验盘,这样的话在一定的程度上就避免了某一个磁盘一直作为检验盘易损坏的问题了。 raid-4 和raid-5都是牺牲了一定的存储空间作为磁盘的稳定运行,把其中的一块磁盘作为校验盘,其磁盘的利用率降低了。

raid-01 

raid-01 ,就是把多个磁盘先成对作为raid-0磁盘,然后再将划分为raid-0的磁盘成半划分的划分为raid-1。比如说:我们把使用6个磁盘作为制作raid-01,这样的话我们就先制作raid-0,进行三个磁盘作为一组,制作raid-0 。然后再把两组raid-0 制作为raid-1 。其中一组作为存储数据,另外一组作为

“镜像卷” 。这样可以增加磁盘的容错性,但是两个镜像卷 不能有相同的出错 ,那样的话就会导致磁盘不能被访问等。假设:现有a1,b1,c1,a2,b2,c2,6个磁盘,把a1,b1,c1 作为raid1-0,把a2,b2,c2 作为raid2-0,然后把raid1-0和raid2-0 制作raid-1 ,只要a1和a2,b1和b2,c1和c2不同时损坏,磁

盘就能正常访问。

raid-10:

类似于上面raid-01的运作方式,raid-10,是先将磁盘成对的制作为raid-1,然后将制作成raid-1的磁盘组成raid-0 .还使用上面的例子,将上面的

a1和a2作为raid-1,同理,b1,b1 ;c1,c2 也制作为raid-1, 然后将三组raid-1再制作为raid-0。  只要a1和a2,b1和b2,c1和c2不同时损坏,磁

盘就能正常访问。        

RAID的具体实现:

  1. 硬件实现方式:通过使用BIOS(基本输入输出系统)参数调整来实现

  2. 软件实现方式:通过软件工具mdadm来实现

    mdadm:是一个模拟化的工具

  3.     用法:mdadm [mode]<raiddevice>[option]<component-devices>

        支持的RAID级别有:RAID-0,RAID-1,RAID-4,RAID-5,RAID-6,RAID-10

        模式<mode>:创建,装配,监控,管理

    具体的操作过程所涉及的命令以及相关的选项:

        1.创建

        使用mdadm命令,mdadm支持的选项有:

        -C:创建RAID,还有以下的子选项

            -n#:使用#个块设备来创建此RAID

            -l#:所创建的RAID的级别

            -a{yes|no}:自动创建目标RAID设备的设备文件

            -c CHUNK_SIZE:指明块的大小

            -x#:指明空闲盘的个数

        -D:显示RAID的详细信息

            mdadm -D /dev/md#

       2.装配

        使用mdadm -A选项

        -A:装配模式,重新识别此前实现的RAID

       3.监控

        使用mdadm -F:监控模式

       4.管理

        -f:标记指定磁盘为损坏    

        -a:添加磁盘

        -r:移除指定磁盘

       其他管理:

        观察md的状态:cat /proc/mdstat

        停止md设备: mdadm -S /dev/md#

        

—————————————————————-

下面我们演示一下制作raid-5 的步骤:(设置一块空余盘作为检验盘的预备) 

1.首先先在虚拟机上添加再3块硬盘,演示是在虚拟机上做的 ,如果是在工作环境中,直接在机柜上添加好硬盘就行。如果需要使用分区模拟硬盘,需要

对分区进行划分,更改其型号以及容量的大小和硬盘的一致 。添加好硬盘之后重启电脑使硬盘生效,或者使用echo "- – -" > /sys/class/sisc_host/host*

使用后可以强制磁盘刷新 ,但是这样容易损坏硬盘 ,建议重启。开启之后使用fdisk -l 可以查看一下安装的硬盘是否生效了。

add 1.png

2.使用mdadm -C /dev/md0 – yes -l 5 -n 3 -x 1 /dev/sd{a4,b,c,d}进行制作raid 5,并且三个盘为存储数据,其中一块作为预留盘。

add2.png

3。然后事先创建好一个目录,把md0设置为开机自动挂载,把其内容信息编辑到/etc/fstab文件里面。

add3.png

             

 

4.然后使用mount -a 进行挂载,因为在fstab里面已经写好位置,所以直接使用mount-a 就可以把组成md0的各个成员一起挂载。挂载好之后

再使用mdadm -D /dev/md0 可以查看raid 5是否已经成功。下面的一个没有运行的是作为预留的硬盘,一旦上面三个使用的硬盘出现什么问题,

这个预留的硬盘会自动的补充上去。这样就增加了磁盘的容错性。

 

add4.png  

5.使用mdadm -D /dev/md0 我们可以查看到刚刚创建好的raid5 ,还可以使用进行测试下面备用的磁盘。先把上面的一个磁盘进行停止运行,比如说:使用mdadm /dev/md0 -f /dev/sda4 ,这样就可以把上面的sda4进行模拟损坏。这个时候,下面备用的sdd将会自动的顶替损坏的sda4磁盘,然后我们可以使用mdadm .dev/md0 -r /dev/sda4,把刚刚模拟损坏的磁盘进行移除,移除后再使用mdadm /dev/md0 -a /dev/sda4 重新把sda4添加到md0里面,这个时候我们再使用mdadm -D /dev/md0进行查看将会发现sda4又被作为预留盘。

add5.png 

add6.png  

6.最后说一下清除这个md0所有的信息。

使用umount /dev/md0 把raid-5的组成md0 进行卸载,这样先把挂载的内容进行了清除。

卸载了之后进入到/etc/fstab  的编辑页面把之前设置的开机自动挂载md0 进行删除。

再使用fdisk /dev/sda,进入到磁盘分区页面把sda4进行-d删除(因为这个是使用分区模拟的硬盘)

把sdb,sdc,sdd从虚拟机上移除就行,生产环境中把磁盘弹出即可。

=====================================================================================================

LVM划分逻辑卷:

 

在我们使用硬盘的过程中,随着我们对数据的存储,我们会发现慢慢的磁盘的空间会不够用,但是我们之前的数据还是需要保留。如果我们新加一个硬盘,再复制之前的数据,再将之前的硬盘卸载重新挂载到新的硬盘下,就显得非常的麻烦。这样的情况下,就需要我们使用到划分逻辑卷了。划分逻辑卷其实就是把多个小的磁盘分区(物理卷,这个PV物理卷是磁盘分区或者类似于磁盘分区功能的基本存储逻辑块,如:RAID等 。但和基本的物理存储介质,如分区,磁盘相比,却包含与LVM相关的管理参数)组合成一个大的物理磁盘。然后,对这个大的物理磁盘(又称为卷组VG)。对这些卷组再进行划分为逻辑卷(LV)。 

简单的来说:LVM就是将一些零碎的磁盘分区(PV)合并成为一个大的磁盘(VG),然后再根据需要对这个较大的磁盘(VG)进行划分为不同的小的分区(LV),需要知道的是,这些小的分区(LV)是可以动态进行扩展和缩小的。(当磁盘的容量又不够时,我们还可以使用这样的方法重新加载硬盘,把硬盘再加载到卷组里面,对LV进行扩展等操作)

———————–

下面我们就实现以下逻辑卷的管理:

创建一个10G的VG

1,首先先创建PV,

    与PV相关的一些管理命令有:

    pvcreate:将实体硬盘创建为PV

    pvdisplay:显示当前系统里面的PV的状态

    pvs,

    pvscan:搜寻目前系统里面具有PV的磁碟

    pvremove:将PV属性移除

    pvmove;将PV属性移动

(1),先准备块设备,使用fdisk调整类型为8e类型,进入fdisk里面之后,我们可一使用l进行查看各个类型,从中可以看到逻辑卷的类型为8e。

(2),然后创建pv:pvcreate [-f] /dev/sda{4,5,6}

(3),查看pv的信息:pvdisplay /dev/sda{4,5,6}

2.创建卷组(VG);

    与VG相关的一些管理命令:

    vgcreate:就是创建VG的命令,其命令参数比较多

    vgscan:搜索系统上是否有VG的存在

    vgdisplay:显示目前系统上的VG的状态

    vgxtend:在VG内部添加额外的PV

    vgreduce:在VG内部移除PV

    vgchange:配置VG是否启动

    vgremove:删除一个VG

(1)新增加一个vg,并指明其包含哪个或哪些pv实现:

vgcreate VGNAME /dev/pv1,pv2…

    其中可以包含的参数为:

        [-s|–physicalextentsize ,指定物理VG的大小

        [-t|–test]

        [-v|–verbose]

比如:vgcreate -s 20M vg_kk /dev/sda{4,5,6}

(2)此时如果想要增加VG的容量,也可以进行下面的操作:

    vgextend vg_kk /dev/sda7  # 这样就会增加vg_kk这个卷组的大小,大小为sda7的容量

3.创建LV:

    与LV选项相关的一些管理命令有:

    lvcreate:创建LV

    lvscan:查看当前系统上LV的状态

    lvextend:在lv里面添加容量

    lvreduce:在lv中减少容量

    lvremove:删除一个lv

    lvresize:对lv进行容量大小的调整

lvcreate的使用方法:

    lvcreate -L 10G -n kk_lv vg_kk

4.文件系统

    要想使用创建好的LVM就必须对lv进行格式化挂载

(1)mkfs.ext4 /dev/vg_kk/kk_lv

(2)mkdir /testdir/lvmtest

(3)mount /dev/vg_kk/kk_lv /testdir/lvmtest

这样进行格式化之后,创建一个目录,将创建好的逻辑卷挂载到指定的目录即可

——————————-

增加LV的容量:

  1. 用fdisk 配置新的具有8e ID的磁盘

  2. 利用pvcreate 创建PV(将物理的磁盘等划分为具有lvm管理的pv)

  3. 将vgextend 将新建的PV添加到我们的卷组里面

  4. 利用lvresize将新加入的pv的大小划分给之前就有的lv(比如例子中的kk_lv)

  5. 通过使用resize2fs查看文件系统的容量已经增加

减少LV的容量:

  1. 先卸载已经挂载的lv

  2. 强制进行磁盘检测:e2fsck -f /dev/vg_kk/kk_lv

  3. resize -L 5000M /dev/vg_kk/kk_lv (之前的kk_lv是10G,上面介绍lvcreate)

4.mount /dev/vg_kk/kk_lv /testdir/lvmtest

这就是我们创建逻辑卷的具体步骤,其步骤比较简单,内容也是比较好理解的。        

原创文章,作者:zhong,如若转载,请注明出处:http://www.178linux.com/41423

(1)
zhongzhong
上一篇 2016-08-29
下一篇 2016-08-29

相关推荐

  • 如何实现在命令行输入pwd时显示出ifconfig的效果

    1、使用type ifconfig 查看   2、使用type pwd 查看 如果还没有使用过pwd则显示如下,表示pwd属于内部命令,然后输入enable -n pwd 禁用这个内部命令   如果已经使用过,就会显示hash,已经缓存过   此时就不仅需要禁用内部命令,还需要使用hash -d pwd 清除pwd的缓存,使其在…

    2017-07-13
  • rsync+inotify实现数据实时备份

    rsync+inotify实现数据实时备份 §·rsync简单介绍 1 §·什么是rsync 1 §·rsync的功能特性 1 §·rsync的优点和不足 2 §·初识inotify 2 §·rsync命令工作模式 2 §·rsync常用命令选项 3 §·配置rsync以守护进程的方式运行 3 ※·安装并启动 xinetd 3 ※·为rsync服务器提供配置…

    Linux干货 2016-10-30
  • Linux Basic–磁盘分区

    附件: 磁盘管理相关方法.pdf

    Linux干货 2016-11-21
  • tomcat

      编程语言:硬件级:微码编程,汇编语言系统级:C,C++,…应用级:Java, PHP, Python, Ruby, Perl, C#, …Python: PVMStandard LibraryWeb Framework:Django, Flask, …Java:JVM,JDKbash:bash ex…

    Linux干货 2017-05-22
  • CentOS6启动流程

    CentOS 6 启动流程 | root密码重置 | 添加系统服务 一、CentOS 6 启动流程:     1)POST加电自检         Power-On-Self-Test,主板在接通电源后,系统首先由BIOS程序来对对CPU、…

    Linux干货 2016-09-08
  • Liunx获取信息帮助与man文档章节的划分

    首先要判断命令的类型,可用 type COMMAND 来判断命令 如果显示结果为(….是 shell内嵌)即为shell内嵌命令,如需获取帮助,使用 help COMMAND 即可; 下图的例子是pwd是shell内嵌命令 内部命令属于Shell的一部分,所以并没有单独对应的系统文件,只要Shell解释器被运行,内部指…

    2017-07-02

评论列表(1条)

  • 马哥教育
    马哥教育 2016-09-02 09:46

    内容很完整,但是同时段落不分明,我已经帮你调整了一部分,后面需要作者自己去调整了,要写,咱们就认真点,不要太粗心哦。建议每次都预览一下。