廉价磁盘阵列(RAID)与逻辑卷(lvm)

RAID的作用介绍与LVM的创建分析

  有计算机基础常识的人们都能了解,现如今生产出来的存储设备比如机械式磁盘,作为个体它的存储容量是有上限的,虽然曾经有人开发出大容量磁盘,但是成本太高,无法在社会中普及应用。对于这种大型服务器系统迫切需要的功能,催生出了一个叫做廉价冗余磁盘阵列的技术,歪果仁将它称为RAID。而后随着岁月的发展,又产生了逻辑卷lvm的概念。本篇针对于RAID在系统方式上设置以及lvm的详细分析。

    一.RAID的类型介绍与如何使用命令在系统上设置

  由上可知,RAID是由多个磁盘组成的单一存储设备方式,这样我们对这些个磁盘就有多种组合方式,RAID0、RAID1、RAID5、RAID10等,下面结合图文对各个排列方式进行讲解。

  1.RAID0

  RAID0又称作条带卷,实际上是将数据分为chunk块对多块磁盘分别存储,可以比喻成多个仓库同时接收货物。试想一下,这样的数据存储方式大大提高了存储速率,并且增加了存储空间。缺点是由于chunk块分割存储,如果某块磁盘遭到破坏,整个RAID存储的数据就无法重新拼凑起来了。所以说RAID0虽然大大增加了磁盘的读写速度与存储空间,但与之相应承担的风险也大大增加,RAID0模式无容错能力,这时在实际生产过程中无法被容忍的。

  2.RAID1

  RAID1又被称作镜像卷,实际上是将两块磁盘存储相同的chunk,如果其中一个磁盘损坏,另一个起到了备份的作用。这种RAID方式增加了磁盘阵列的容错性,但是由于两块磁盘同时读取数据,反而影响到磁盘的读写速率。组成RAID1最少有两块磁盘,同一组镜像卷以最小磁盘容量为标准。

  3.RAID5

  RAID5实际上是由RAID4改良而成,RAID4最少有三个磁盘,其中两个磁盘存储chunk数据块,第三块磁盘存储前两块磁盘同位置的二进制数据异或结果运算,所以三块磁盘有两块磁盘可以存储数据,如果其中这两块磁盘之一损坏,可以根据未损坏的那个数据盘与异或结果盘做运算恢复损坏磁盘的数据。但是由于实际过程中,异或结果盘的操作负担太大,导致这个盘的损坏概率大大增加,所以在RAID5中,存取异或结果在三个盘之间有规律的轮循,让每一块磁盘分担压力,这样就会使其损坏概率大大降低。

  4.RAID10与RAID01

  RAID10是将磁盘先进行RAID1排列,再将多个RAID1进行RAID0排列,这种方式很实用,既能大大增加磁盘容量,也兼备容错性,除非两个存储相同chunk块的镜像卷同时损坏,那你只能自认倒霉。RAID01是将磁盘先进行RAID0排列,在进行RAID排列,这种方式不推荐,因为容错性相比于RAID10大大降低,生产环境所承担的风险也大大增加。同样也存在RAID05,RAID50之类的排列方式。

  RAID模式的磁盘在实际生产中都是通过硬件插槽部署实现的,但是在linux系统中,也可以使用命令模式定义RAID。使用mdadm相关命令定义多个磁盘分区排列成RAID。步骤如下:

  (1)mdadm -C /dev/md0 -a yes -l 5 -n 3 -x 1 /dev/sd{b,c,d,e}1 ;

  此步骤表示创建名为md0的RAID,其中包含4个磁盘分区,排列模式为RAID5,三个分区存储数据,一个分区做空闲盘,默认回答yes。(前提是分区id改为fd模式)  

  (2)mdadm -D /dev/md0 查看新建的RAID状态,加选项实现RAID管理

  (3)如果设置开机启动,在/etc/fstab文件中增加一行:/dev/md0(最好使用blkid查看UUID,在这里使用UUID) /mnt/raid(新建的挂载点文件夹) ext4 defaults 0 0

  (4)mount -a 将/dev/md0挂载

   如此四步之后,即可在分区列表上观察到增加的RAID分区信息了。

  删除RAID分区步骤如下:

  (1)首先将/etc/fstab文件中的/dev/md0一行删除,如过没有配置文件内容,先取消挂载。

  (2)mdadm -S /dev/md0   停用/dev/md0

  (3)最后删除RAID信息:mdadm -zero-superbloclk /dev/sd{b,c,d,e}1

    二.LVM的创建和具体使用方法

  首先介绍什么是LVM,LVM就是Logical Volume Manager(逻辑卷管理器)的英文缩写。它的作用是多个设备组织起来形成一个有逻辑划分功能的存储模块。总的来说分为三层:pv物理卷,vg卷组,lv逻辑卷。下面分别介绍着三种分层。

  

  1.pv:物理卷,多个物理卷能够组成一个宏大的空间,在创建磁盘分区的时候,如果想要使某分区变为支持LVM模式的pv,要使用fdisk命令修改其分区id为8e。接着使用一系列的pv命令来创建pv。常见pv命令:

  pvcreate:创建pv,前提是分区id为8e。举例:pvcreate /dev/sdb1 /dev/sdc1 表示将sdb1、sdc1创建为pv

  pvremove:删除pv

  pvs:简要格式查看所有pv

  pvdisplay:详细查看pv

  pvck:检查pv

  2.vg:vg称为卷组,其内部需要添加多个pv来构成一个卷组,vg由以可指定pe(物理分区扩展)大小为单位构成,所有pe加在一块就是vg的总空间。常用命令如下:

  vgcreate:创建卷组,vgcreate vg0 -s 4M /dev/sdb1 /dev/sdc1  表示创建卷组vg0,内部所包含的分区为/dev/sdb1 /dev/sdc1 pe大小为4M

  vgremove:删除卷组

  vgs:查看所有vg的简要格式

  vgdisplay:查看所有vg的详细格式

  vgextend:在某一vg内添加pv,比如:vgextend vg0 /dev/sdd1 表示在vg0中添加pv /dev/sdd1

  vgreduce:移除卷组内的某一pv(前提是这个pv的内存没有被lv占用)

  

  3.lv

  lv逻辑卷是将一个vg内的所有空间以le的大小为单位划分出一块存储空间,常用命令有:

  lvcreate:创建逻辑卷,举例:lvcreate -L 10G -n lv1 vg0 表示在卷组vg0基础上创建大小为10G,名称为lv1的逻辑卷

  lvremove:删除逻辑卷,举例:lvremove lv1 删除lv1逻辑卷

  lvs,lvdisplay:查看逻辑卷

  lvextend:扩展逻辑卷,注意拓展逻辑卷之后,与之相应的文件系统也要扩展至同等大小。举例:lvextend -L +2G /dev/vg0/lv1 表示扩展逻辑卷lv1大小增加2G,接着需要使用resize命令扩展lv1文件系统的大小(假设我们已经创建了ext4文件系统并且挂载完毕):resize2fs /dev/vg0/lv1 即可成功扩展

  lvreduce:缩减逻辑卷,这个步骤相比于扩展逻辑卷更为复杂,因为逻辑卷上可能部分le存储了一些数据,如果随意缩减lv大小,可能会造成数据丢失,为了避免这种情况,缩减逻辑卷一般分为如下5个步骤。

 (1)取消挂载:umount /dev/vg0/lv1

 (2)强制检测逻辑卷的文件系统:e2fsck -f /dev/vg0/lv1 (如果缺少这步,文件系统缩减时会报错)

 (3)缩减文件系统未指定大小:resize2fs /dev/vg0/lv1 5G 缩减文件系统大小为5G

 (4)lvreduce -L 5G /dev/vg0/lv1

 (5)mount /dev/vg0/lv1 /mnt/lv1 重新挂载

  4.lvm快照snapshot

  所谓快照,就是将创建快照当时的系统数据保存下来,如果之后系统数据有变动,则会将变更前的数据放在快照区进行保存,如此之后,快照就会由变更之前的数据和未变更的数据组成。而LVM系统快照只备份变更之前的数据,没有变更的数据不做快照保存,如果查找,指向未变更的原文件。所以通过LVM作为快照是一个不错的选择。由于lv快照与原lv共享许多pe块,所以lv快照必须与原lv在同一个卷组上,下面是快照创建步骤:

 (1)lvcreate -L 2G -s -n snapshot_lv1 /dev/vg0/lv1 表示为lv1创建一个名为snaoshot_lv1的快照卷

 (2)创建快照目录并挂载。

  创建完后,在快照的挂载目录就可以看到lv1的数据信息了,如果lv1中的数据改变,快照内的数据还会保持原样。

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

(1)
mcgeewangmcgeewang
上一篇 2016-09-11
下一篇 2016-09-11

相关推荐

  • 正则表达式简述

    bashshell中的正则表达式         俗话说,工欲善其事,必先利其器。由于很多Linux的文本处理工具普遍使用到了正则表达式,因此,不理解正则表达式就无法愉快的从事Linux日常系统管理。那什么是正则表达式呢?         正则表达式(Regu…

    Linux干货 2015-05-23
  • linux 网路管理路由和team网络组

    如何实现把linux当路由器来使用,实现不同网段之间的通信访问,这就是今天所要实现的路由配置   环境准备:4台虚拟机,两台中间两台作为路由器来使用(每天主机两块网卡),其他两台作为终端主机,目的是让不同网段的两台主机之间互相访问(这里在vmware里面做的实验,所以网卡的类型都设置为桥接)   拓扑图:   步骤一:将A、D两…

    Linux干货 2017-05-07
  • Linux系统终端类型

    引言 终端(Terminal)也称终端设备,是计算机网络中处于网络最外围的设备,主要用于用户信息的输入以及处理结果的输出等。在早期计算机系统中,由于计算机主机昂贵,因此一个主机一般会配置多个终端,这些终端本身不具备计算能力,仅仅承担信息输入输出的工作,运算和处理均由主机来完成,在个人计算机时代,个人计算机可以运行称为终端仿真器的程序来模仿一个终端的工作。 &…

    Linux干货 2016-10-19
  • 2016/08/07:文本处理工具及正则表达式

      在本次课程中,本以为和前面的内容难度差不多,内心毫无提防,但在做随堂练习的时候,被惨虐,不由得使我想起了高三时候拿到一张数学单元练习题,一道题也不会做的那种感觉,无助,彷徨,不甘。到了晚上总结了一下,还是有缘由可寻的。直接原因就是前面知识记得不牢固,也并未完全理解是和意思,尤其是tr命令,适用于何处,没按照5W1H方法来进行总结学习,导致应用的…

    Linux干货 2016-08-07
  • linux发行版介绍及其哲学思想

    Linux是一种自由和开源的unix-like操作系统。目前运用领域最广泛、使用人数最多的操作系统。该操作系统的内核是Linus Torvalds在1991年10月5日首次发布。是一个多任务,多用户的操作系统,广泛应用在服务器,手机,平板电脑,电视,电子游戏等领域,我们生活中随处都可以见到linux身影。 Linux诞生 1991 年,在芬兰,赫尔辛基大学的…

    2017-09-16
  • 正则表达式基础知识及grep、egrep详解

    什么是正则表达式     在计算机科学中,正则表达式是这样解释的:它是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。在很多文本编辑器或其他工具里,正则表达式通常被用来检索和/或替换那些符合某个模式的文本内容。许多程序设计语言都支持利用正则表达式进行字符串操作。对于系统管理员来讲,正则表达式贯穿在我们…

    Linux干货 2016-08-08