1 RAID (独立冗余磁盘阵列)

RAID 技术通过把多个硬盘设备组合成一个容量更大、安全性更好的磁盘阵列,并把数据切割成多个区段之后分别存在各个不同的物理硬盘设备上,然后利用分散读写计数来提升磁盘阵列整体的性能,同时把多个重要数据的副本同步到不同的物理硬盘设备上,从而起到了非常好的数据冗余备份效果。

RAID的优点是: 非常好的数据冗余备份功能,降低了磁盘损坏后的丢失数据的机率,还提升了硬盘的读写速度。

缺点: 增加成本支出。

  常见的 RAID磁盘阵列方案:

1)RAID0

RAID0:把多块物理硬盘通过硬件或软件的方式串联在一起,组成一个大的卷组,并把数据依次写到各个物理硬盘中。RAID0能够有效提升硬盘数据的读写速度,但是不具备数据备份和错误修复能力)。如下图所示,数据会被分别写入到不同的硬盘设备中,即disk1和disk2依次轮流存储数据,提升了读写速度,但任一个盘发生故障整个系统的数据都会破坏。

  

2) RAID1

RAID1 把两块以上的硬盘设备进行绑定,在写入数据时,是将数据同时写入到多块硬盘设备上(可看作备份或镜像)。当其中一个硬盘发生故障后,一般会立即自动以热交换方式来恢复数据的正常使用。RAID1没有提供读写速度,硬盘空间真实可用率减半,数据安全性提高。

3) RAID5

RAID5 技术是把硬盘设备的数据奇偶校验信息保存到其他的设备中。这样的好处是其中任何一个设备损坏后不至于出现致命的缺陷,原因是:当硬盘设备出现故障之后通过奇偶校验信息来尝试重建损坏的数据。 RAID5兼顾了硬盘设备的读写速度、数据安全性和存储成本问题。

4) RAID10

RAID10是RAID1+RAID0技术的一个组合体。RAID10技术需要至少4块硬盘来组建,其中分别两两制成RAID1磁盘阵列,以保证数据的安全性,然后在对两个RAID1磁盘阵列实施RAID0技术,进一步提高硬盘设备的读写速度。

只要坏的不是同一组中的所有硬盘,那么最多可以损坏50%的硬盘设备而不丢失数据。由于RAID 10技术继承了RAID 0的高读写速度和RAID 1的数据安全性,在不考虑成本的情况下RAID 10的性能都超过了RAID 5,因此当前成为广泛使用的一种存储技术。

5)部署磁盘阵列

mdadm命令

mdadm命令用于管理Linux系统中的软件RAID硬盘阵列,格式为mdadm [模式] <RAID设备名称> [参数] [成员设备名称]。



例程:用mdadm命令来创建RAID10,名称为"/dev/md0".编写脚本。

#!/bin/bash
# example for create RAID10 ##先关闭虚拟机,然后新建立4个硬盘,大小可以自定义。
ls /dev/sd*
#create RAID10 ,命名为/dev/md0,由4个盘组成,显示创建过程且自动创建设备文件
mdadm -Cv /dev/md0 -a yes -n 4 -l 10 /dev/sdc /dev/sdd /dev/sde /dev/sdf
#格式化md0为ext4格式
mkfs.ext4 /dev/md0
#创建挂载点
mkdir /RAID
#把MD0挂载到RAID上
mount /dev/md0 /RAID
#查看挂载状态和硬盘使用量信息,可以看到,4个硬盘组成RAID 10
df -h
#查看/dev/md0磁盘阵列的详细信息
mdadm -D /dev/md0
#往/etc/fstab文件中追加挂载信息,实现永久挂载
echo "/dev/md0 /RAID ext4 defaults 0 0" >> /etc/fstab

6)损坏磁盘阵列及修复

例程2:在例程1上模拟磁盘损坏和修复。

#!/bin/bash
# example for RAID10磁盘阵列损坏和修复,这里接上个实验 ##这里是模拟磁盘损坏,可以直接删除某个磁盘,也可以使用软件移除硬盘
#这里假设sdd硬盘损坏 #把/dev/sdd从磁盘阵列/dev/md0中移除,软件移除
mdadm /dev/md0 -f /dev/sdd
#查看磁盘这列/dev/md0详细信息,发现/dev/sdd状态从active变为faulty
mdadm -D /dev/md0 #重启系统,
reboot
###下面的命令不会执行,需要手动执行或另外写文件重启后执行
# 卸载/RAID目录
umount /RAID #如果磁盘直接被删除,则关闭虚拟机再添加一块硬盘 ,如果使用命令移除则不需要。
#查看新加的磁盘
ls /dev/sd*
#把新硬盘添加到RAID磁盘阵列中
mdadm /dev/md0 -a /dev/sdd
#查看磁盘阵列/dev/md0详细信息,/dev/sdd正在 spare rebuilding,然后变回active
mdadm -D /dev/md0
#重新挂载
mount -a

7)磁盘阵列+备份盘

例程3:创建一个带备份的RAID5磁盘阵列。

#!/bin/bash
# example for 创建RAID5磁盘阵列+备份功能 ##关闭虚拟机创建4个硬盘。大小自定义 #查看新建的硬盘
ls /dev/sd*
#用3块硬盘创建RAID 5磁盘阵列,再用1块作为备份盘
mdadm -Cv /dev/md0 -n 3 -l 5 -x 1 /dev/sd[c-f]
#查看磁盘阵列详细信息,显示3个盘为actvie,1个盘为spare,RAID类型为RAID 5
mdadm -D /dev/md0
#格式化md0
mkfs.ext4 /dev/md0
#往/etc/fstab文件追加挂载信息,以实现永久挂载
echo "/dev/md0 /RAID ext4 defaults 0 0" >> /etc/fstab
#创建挂载点
mkdir /RAID
#刷新挂载
mount -a
#故意移除RAID 5阵列中的其中一个盘(active的盘)
mdadm /dev/md0 -f /dev/sdd
#再查看磁盘阵列/dev/md0详细信息,显示备份盘自动定提上去并开始数据同步(spare rebuilding)。
mdadm -D /dev/md0

LVM(逻辑卷管理器)

RAID可以有效提高硬盘的读写速度和安全性,但是却无法调整硬盘分区的大小。LVM可以允许用户对硬盘资源大小进行动态的调整。

LVM技术是在硬盘的分区和文件系统之间添加一个逻辑层,它提供了一个抽象的卷组,可以把多块硬盘进行卷组合并。这样用户不用关系物理硬盘设备的底层架构和布局,就可以实现对硬盘分区的动态调整。



PE(Physical Extent):表示最小的物理单元,分区之后的逻辑卷必须是PE的整数倍。也可以理解为一个单位。

PV(物理卷,Physical Volume):物理卷,表示实际硬盘的大小,处于LVM中的最底层,可以将其理解为物理硬盘、硬盘分区或者RAID磁盘阵列。

VG(卷组,Volume Group):建立在物理卷之上,一个卷组可以包含多个物理卷,而且在卷组创建之后也可以继续向其中添加新的物理卷;大小是总和。

LV(逻辑卷,Logical Volume):逻辑卷是用卷组中空闲的资源建立的,并且逻辑卷在建立后可以动态地扩展或缩小空间;

1)部署逻辑卷



部署 LVM的顺序是:配置物理卷 --> 配置卷组 -->配置逻辑卷。

例程1:编写shell脚本。先新建2个物理卷组,再对硬盘进行卷组合并,接着切割150M的逻辑卷设备 -->把逻辑卷设备格式化为Ext4文件系统后挂载使用。

#!/bin/bash

#测试LVM程序,生成逻辑卷

ls /dev/sd*                     	#查看硬盘情况
pvcreate /dev/sdb /dev/sdc #建立物理卷管理
vgcreate storage /dev/sdb /dev/sdc #建立卷组管理
vgdisplay #显示卷组管理
#建立逻辑卷管理,大小可以使用-L 150M直接指定,
#也可以使用 -l 37 来指定基本单元的个数,基本单元默认大小为4MB
lvcreate -n vo -l 37 storage
lvdisplay #显示建立的逻辑卷
mkfs.ext4 /dev/storage/vo #格式化
mkdir /share
mount /dev/storage/vo /share #挂载
df -h #查看状态
echo "/dev/storage/vo /share ext4 defaults 0 0" >>/etc/fstab #直接写入文件配置,永久挂载

2)扩容逻辑卷

注意:扩容之前先卸载设备和挂载点的关联。

1、扩容逻辑卷(lvextend)。

2、检查磁盘完整性(e2fsck),并重置硬盘容量(resize2fs)。如果明明执行了多次e2fsck命令还是提示“运行e2fsck命令”,重启系统再试。

3、重新挂载硬盘设备并查看挂载的状态。

例程:将上面的例程种的逻辑卷vo扩展到400M.

umount /linuxprobe                  #卸载设备和挂载点关联
lvextend -L 400M /dev/storage/vo #扩容逻辑卷vo至400M
e2fsck -f /dev/storage/vo #检查硬盘完整性
resize2fs /dev/storage/vo #重置硬盘容量,如果明明执行了多次e2fsck命令还是提示“运行e2fsck命令”,重启系统再试。
mount -a #重新挂载
df -h #查看挂载状态

3)缩小逻辑卷

注意:缩容之前先卸载设备和挂载点的关联。

1、检查磁盘完整性(e2fsck)。

2、先向系统报备一下即将要执行的逻辑卷的缩容操作(resize2fs),再缩容逻辑卷(lvreduce)。

3、重新挂载硬盘设备并查看挂载的状态。

例程:将上面的例程种的逻辑卷vo缩容到120M.

umount /linuxprobe                  #卸载
e2fsck -f /dev/storage/vo #检查文件系统完整性
resize2fs /dev/storage/vo 120M #先通知系统,即将要执行对逻辑卷vo缩容到120M的操作,看有没有问题
lvreduce -L 120M /dev/storage/vo #把逻辑卷vo缩容至120M
mount -a #重新挂载
df -h #查看挂载状态

4)逻辑卷快照

LVM快照:类似于虚拟机软件的还原时间点功能。

可以对某一个逻辑卷设备做一次快照,如果日后发现数据被改错了,就可以利用之前做好的快照卷进行覆盖还原。

LVM的快照卷功能有两个特点:

  • 快照卷的容量必须等同于逻辑卷的容量;
  • 快照卷仅一次有效,一旦执行还原操作后则会被立即自动删除。不过一个逻辑卷可以做多个快照卷。

实例:承接上面例子,往逻辑卷设备新建一个文件。然后为逻辑卷创建快照卷。再在逻辑卷目录生成一个垃圾文件。后先卸载逻辑卷与挂载点关联,再尝试快照还原操作(lvconvert --merge),再重新挂载,查看逻辑卷目录是否回到创建快照前的状态。

vgdisplay 		#查看卷组信息
echo "Welcome to Linuxprobe.com" > /linuxprobe/readme.txt #往逻辑卷设备写入一个文件
ls -l /linuxprobe #查看逻辑卷目录的内容
lvcreate -L 120M -s -n SSS /dev/storage/vo #为逻辑卷vo生成一个快照卷,命名为SSS,指定切割大小为120M,
lvdisplay #查看逻辑卷详细信息,可以看到SSS是vo的快照卷(snapshot)
dd if=/dev/zero of=/linuxprobe/files count=1 bs=100M #在逻辑卷vo的目录下创建一个100M的文件
lvdisplay #查看逻辑卷详细信息,可以发现vo的空间占用量上升
umount /linuxprobe #卸载逻辑卷与挂载点关联
lvconvert --merge /dev/storage/SSS #对逻辑卷vo进行快照还原操作
mount -a #重新挂载
ls /linuxprobe/ #查看逻辑卷目录,可以发现创建快照后再创建的100M文件不见了,逻辑卷恢复成设置快照前的状态

5)删除逻辑卷

删除LVM前记得提前备份。

删除逻辑卷,要依次删除逻辑卷(lvremove )、卷组(vgremove )、物理卷设备(pvremove ),顺序不可颠倒。

实例:承接上面例子,删除逻辑卷。

umount /linuxprobe                               #卸载
vim /etc/fstab

/dev/storage/vo /linuxprobe ext4 defaults 0 0 #删除挂载信息

lvremove /dev/storage/vo                         #删除逻辑卷,要按y确认
vgremove storage #删除卷组
pvremove /dev/sdb /dev/sdc #删除物理卷

参考:

https://www.cnblogs.com/kaminwu/p/10916161.html#no0202

Linux 就该这么学 CH07 使用RAID和LVM磁盘阵列技术的更多相关文章

  1. 第7章 使用RAID与LVM磁盘阵列技术

    章节简述: 您好,此章节为新增加的知识内容,正在努力的排版完善,预习2016年9月中旬完成,感谢您的支持,QQ群:340829. 7.1  磁盘冗余阵列 1988年由加利福尼亚大学伯克利分校发表的文章 ...

  2. 使用RAID与LVM磁盘阵列技术。

    7.2 LVM逻辑卷管理器 前面学习的硬盘设备管理技术虽然能够有效地提高硬盘设备的读写速度以及数据的安全性,但是在硬盘分好区或者部署为RAID磁盘阵列之后,再想修改硬盘分区大小就不容易了.换句话说,当 ...

  3. RAID与LVM磁盘阵列技术

    RAID(Redundant Array of Independent Disks,独立冗余磁盘阵列) RAID概念: RAID技术通过把多个硬盘设备组合成一个容量更大.安全性更好的磁盘阵列,并把数据 ...

  4. linux入门系列13--磁盘管理之RAID、LVM技术

    前一篇文章学习了磁盘分区.格式化.挂载等相关知识,本文将讲解RAID和LVM技术. 磁盘管理操作主要是运维人员用的较多,如果只是单纯的开发人员,可以先略过本文.但是在很多小公司里往往都是一人多用,运维 ...

  5. RAID和LVM磁盘阵列

    RAID磁盘冗余阵列 CPU的处理性能保持着高速增长,Intel公司在2017年最新发布的i9-7980XE处理器芯片更是达到了18核心36线程.但与此同时,硬盘设备的性能提升却不是很大,因此逐渐成为 ...

  6. 《linux就该这么学》课堂笔记11 LVM、防火墙初识

    1.常用的LVM部署命令 功能/命令 物理卷管理 卷组管理 逻辑卷管理 扫描 pvscan vgscan lvscan 建立 pvcreate vgcreate lvcreate 显示 pvdispl ...

  7. 《Linux就该这么学》

    参加了第19期课程的培训,感谢刘老师的辛苦付出,课程讲的很好,真心推荐老刘的这本书真是<Linux就该这么学>!!! 本书是由全国多名红帽架构师(RHCA)基于最新Linux系统共同编写的 ...

  8. 《Linux就该这么学》day3

    ps:原谅我的书法出自鲁迅的<野草> <Linux就该这么学>书本介绍: 本书是由全国多名红帽架构师(RHCA)基于最新Linux系统共同编写的高质量Linux技术自学教程,极 ...

  9. 《Linux就该这么学》day1-day2

    ps:原谅我的书法出自鲁迅的<野草> <Linux就该这么学>书本介绍: 本书是由全国多名红帽架构师(RHCA)基于最新Linux系统共同编写的高质量Linux技术自学教程,极 ...

随机推荐

  1. 单词大学CET六四级英语

    2012年大学英语六级词汇 baseball n.棒球:棒球运动 basement n.地下室:地窖:底层 basin n.内海:盆地,流域 battery n.炮兵连:兵器群 battle vi.战 ...

  2. Python——数据分析,Numpy,Pandas,matplotlib

    由于图片内容太多,请拖动至新标签页再查看

  3. 下载及安装Python详细步骤

    安装python分三个步骤: *下载python *安装python *检查是否安装成功 1.下载Python (1)python下载地址https://www.python.org/download ...

  4. 2019 大众书网Java面试笔试题 (含面试题解析)

      本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.大众书网等公司offer,岗位是Java后端开发,因为发展原因最终选择去了大众书网,入职一年时间了,也成为了面 ...

  5. MYSQL入门操作和常规DML、DDL、DQL使用

    刷新权限,将某些权限从硬盘刷新到内存中(修改root密码自带隐式刷新权限操作) mysql> flush privileges; Query OK, 0 rows affected (0.00 ...

  6. ML-逻辑回归推导

    认识 是一个经典的二元(y=0 或 y=1) 分类算法, 不是回归 输入特征还是线性回归, 输出是 [0,1] 的一个概率值, 其判别函数的形式为: \(P(y=1|x) = \frac {1}{1+ ...

  7. IE浏览器下AJAX缓存问题导致数据不更新的解决办法

    一直知道使用ajax的时候,有的时候会出现数据缓存的问题,当时也没有深究,就是所有的简单粗暴的全部加上cache:false,或者使用在url处加上随机时间函数 今天无意间看见了为什么会出现缓存的原因 ...

  8. LOJ 3119: 洛谷 P5400: 「CTS2019 | CTSC2019」随机立方体

    题目传送门:LOJ #3119. 题意简述: 题目说的很清楚了. 题解: 记恰好有 \(i\) 个极大的数的方案数为 \(\mathrm{cnt}[i]\),则答案为 \(\displaystyle\ ...

  9. java.time.format.DateTimeParseException: Text '2019-10-11 12:30:30' could not be parsed at index 10

    java.time.format.DateTimeParseException: Text '2019-10-11 12:30:30' could not be parsed at index 10 ...

  10. mysql的基本数据类型里几个int如下:TINYINT SMALLINT  MEDIUMINT  INT或INTEGER   BIGINT

    mysql的基本数据类型里几个int如下:类型           大小 范围(有符号) 范围(无符号) 用途 TINYINT  1字节   (-128,127)    (0,255) 小整数值 SM ...