RAID和LVM

2019-07-14 0 条评论 1.39k 次阅读 0 人点赞

对raid级别进行介绍,mdadm工具,逻辑卷及其管理工具

RAID

简介:

中文名称叫做廉价的磁盘冗余阵列,使用多块硬盘组合工作,用来提高读写的性能以及磁盘的高可用性,通过将数据分成若干个chunk,根据不同的级别做相应的处理,有两种实现方式,一种是通过软件模拟,在Linux中可以使用mdadm这个工具进行模拟,这种方式的效果不是特别好,首先性能肯定不行,而且本人的测试过程中感觉不是特别好用,因此不建议在生产环境中使用,另外一种就是在生产环境中使用的,通过硬件实现的,最初的时候需要单独购买raid卡,才能使服务器支持,现在大多数的主板中都直接支持,需要在bios中做相应的设置就可以了,

RAID级别:

raid不同的级别定义了不同的工作方式,下面依次做介绍

RAID0:条带集,将文件根据定义好的chunk切割为若干块,然后逐块将chunk存入不同的磁盘中,如下图所示:
raid0.png

RAID1:就是做镜像,就和备份一样,虽然和备份一样,但是却不可以当备份来用,因为删除一个文件后,两边的文件都会被删除
raid1.png

RAID4: 为了解决RAID0的可用性和RAID1的磁盘利用率低的问题,RAID4使用一块磁盘来存放另外两块硬盘的数据校验,且可以利用该校验位与其他的一块硬盘上的chunk来计算出另外一块磁盘上的chunk,这样就保证了如果有一块损坏,数据还可以正常使用,但是这种方式有一个问题就是存放校验位的磁盘故障率特别高,因此现在基本不用了
raid4.png

RAID5: 主要是解决了RAID4中校验位盘容易损坏的问题,它是将校验位依次存于每一块硬盘中,这样就解决了RAID4中的问题
raid5.png
RAID6:这是豪华版的RAID5,它每次用两块硬盘来存储校验位,这样可用性又提高了不少
raid6.png

以下,用这个表格来列出各个级别的对比:

级别 名称 磁盘利用率 硬盘数 容错能力
0 条带集 100% 最少2块
1 镜像 50% 最少2块
4 带有容错的条带集 (n-1)/n 最少3块
5 带有容错的条带集 (n-1)/n 最少3块
6 带有容错的条带集 (n-2)/n 最少4块

以上是单个级别的一些介绍,当然还可以做raid组合,比如说RAID10,RAID01,可以先做几个个raid1,然后再将这几个raid1组合成raid0

软RAID管理工具mdadm

    # mdadm:
        -C /dev/md[0-9]:创建
        -l level:指定RAID级别
        -c size:指定chunk大小
        -n:指定磁盘个数
        -x:指定备用硬盘的个数
        -D:查看设备
        -f /dev/DEVICE:模拟损坏的硬盘
        -r:将某个设备从RAID中移出
        -a:向RAID中添加
        -Ds:显示RAID元数据信息
        -S /dev/md[0-9]:停用RAID设备,停用之前必须先取消设备挂载
        -G:增加设备
        --zero-superblock:清除分区中的RAID残留信息,应该在删除分区前清理
    /etc/mdadm.conf:配置文件,存放的是RAID设备的元数据,当停用RAID之后再启用必须有配置文件,否则无法启动
    /proc/mdstat:raid信息

LVM

简介:

相对于RAID,LVM是纯在软件环境下实现的,主要的工作模式是,将若干个磁盘或者分区声明为物理卷,然后将这些物理卷再组织成卷组,这个卷组就相当于是一块硬盘,然后再将卷组分出多块逻辑卷,然后进行分区使用,逻辑卷最大的优势在于他可以动态扩容和做快照,由于其抽象出了好多层,因此如果误删除了数据,在恢复上可能会有一定的困难,因此LVM在一些企业中还是没有被采用的,以下这张图片清晰的描述了逻辑卷和物理硬盘之间的关系

lvm.png

因此逻辑卷的创建也是比较繁琐的,在使用时系统提供了以pv,vg,lv开头的若干个工具,分别来对物理卷,卷组,逻辑卷进行管理,以下对常用到的命令进行说明:

lvm管理工具

pvcreate /dev/DEVICE ...:将分区创建为物理卷
pvmove /dev/DEVICE:将物理卷中的空间移动到其他地方
pvremove /dev/DEVICE:移出某个物理卷

vgcreate vg_name /dev/DEVICE ...:将物理卷加入卷组
    -s:指定PE大小,会以PE为单位分配给逻辑卷
vgextend vg_name /dev/DEVICE ... :扩展卷组
vgreduce vg_name  /dev/DEVICE:把某个物理卷移出卷组
vgrename old_name new_name:为卷组改名
vgchange -an vg_name:禁用卷组
    -ay:激活卷组
vgexport vg_name:将卷组变成导出状态
vgimport:导入卷组

lvcreate [OPTIONS]... vg_name:创建逻辑卷
    -n:指定逻辑卷名称  
    -L:指定大小,以容量为单位,也并非实际大小,而是最接近的PE个数的大小
    -l:指定大小,以PE为单位,k可以指定相对VG,FREE,ORIGIN的百分比
    -s:创建快照,通过快照恢复之后的逻辑卷是不可以再次创建快照的
    -p r:指定属性为只读
lvextend [OPTION]... vg_name:扩展逻辑卷空间,扩展之后应该使用resize2fs或者xfs_
    -l [+]size:增加到size,+size:增加size 按{VG|LV|PVS|FREE|ORIGIN}的百分比
    -L [+]size:扩展大小 按大小[bBsSkKmMgGtTpPeE]
    -r:扩展的同时同步文件系统
lvrename /old/dev/path /new/dev/path:修改逻辑卷的名称,注意,要写lv设备的路径,先写原名再写新名
ext系列文件系统可以缩小,xfs不可以

快照:

​ 保存了逻辑卷的某个时间点的状态,创建最初只是创建了一个空的逻辑卷,因此创建速度非常快,之后当有文件被修改时,先将被修改的那个文件复制到快照逻辑卷中,然后再修改,如果没有修改过的,虽然在快照中也能看见,但其实读的是原来逻辑卷中的内容,就像进程的写时复制一样,虽然这样很好,但是不太建议直接用快照来做备份,因为快照和原来的数据都存放在同一个设备上,这个设备一旦坏了,那快照也是白玩,因此正确玩法是先做快照,将快照中的内容保存到其他地方,然后再将快照删除,快照的创建和普通逻辑卷创建一样,只不过需要加一个-s的参数

示例

创建:
# lvcreate -n lv_name_snapshot -s -L size -p r /dev/vg_name/lv_name
恢复:
# lvconvert --merge /dev/vg_name/lv_snopshot:还原快照,还原成功后快照被自动删除

逻辑卷缩减,迁移的操作

缩减逻辑卷的步骤:
    1.卸载需要缩减的逻辑卷
    2.检测修复文件系统fsck -f /dev/DEVICE
    3.缩减文件系统:resize2fs /dev/DEVICE size
    4.lvreduce -L SIZE /dev/DEVICE
    5.缩减完成,重新挂载
    注意:xfs文件系统最好不要做缩减
迁移逻辑卷
    1.将数据迁移到最少的硬盘上pvremove
    2.将空物理卷从卷组中移除,vgreduce vg_name /dev/DEVICE
    3.将空的物理卷变成普通硬盘或分区,pvremove /dev/DEVICE
    4.禁用需要导出的卷组 vgchange -an vg_name
    5.将需要迁移的硬盘变成导出状态vgexport vg_name
    6.将硬盘插到其他的机器上,使用vgimport vg_name导入

bighero

这个人太懒什么东西都没留下

文章评论(0)