磁盘管理 软RAID与LVM
我们总想使用最少的代价,获得最大的效果。但是对于存储用的硬盘来说,单个硬盘的物理特性总是有一定的极限,依然达不到我们的效果。在高温和高IO的情况下,磁盘难免损坏。现在我们有了RAID技术,可以在磁盘上做到高可用。提升我们数据的读写速度和数据存取的安全性
RAID(Redundant Array of Independent Disks,独立冗余磁盘阵列)
RAID 0
把要存储的数据条带化,切割为小块分别存储到不同的磁盘上,由于是同体积数据存储到N个不同位置的磁盘,有效地提升硬盘数据的吞吐速度,但是他的安全性也是比较差的
RAID 1
数据镜像化,同样的数据分别存储在两块磁盘上,相当于有了一个备份,所以存取数据的安全性会提升一倍,但是磁盘的使用空间有效性也见底了不少
RAID 5
实际情况下我们的硬盘大多不是一下就坏了,而是一点一点坏的,RAID 5
就是当硬盘设备出现问题后通过奇偶校验信息来尝试重建损坏的数据。妥协地兼顾了硬盘设备的读写速度、数据安全性与存储成本问题
RAID 10
顾名思义,RAID 1
和RAID 0
的结合版,数据先条带化存取,提高了数据的读写速度,然后在把数据镜像化,这样他的读写速度和安全性都有一定的保证。相对于RAID 5
来说,他的性能较好,但是成本也较高
RAID 5 的软件实现
我们在这里多添加一块闲置磁盘,充当我们的备份盘Spare Devices
,实际上3块磁盘就够了
然后我们使用mdadm
命令来管理RAID硬盘阵列
-n 3 代表创建这个RAID磁盘阵列所需的硬盘数
-l 5 代表 RAID 的级别
-x 1 则代表有一块备份盘
mdadm -Cv /dev/md0 -n 3 -l 5 -x 1 /dev/sd[bcde]
mdadm -D /dev/md0
#查看/dev/md0的详细信息
mdadm /dev/md0 -f /dev/sdb
#移除(故障)磁盘/dev/sdb
由于我们有一个Spare Devices
,我们会发现这块磁盘直接就被更换上去了
[root@centos7 ~]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Fri Jul 26 01:39:39 2019
Raid Level : raid5
Array Size : 41910272 (39.97 GiB 42.92 GB)
Used Dev Size : 20955136 (19.98 GiB 21.46 GB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Fri Jul 26 01:45:51 2019
State : clean, degraded, recovering
Active Devices : 2
Working Devices : 3
Failed Devices : 1
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 512K
Rebuild Status : 92% complete
Name : centos7:0 (local to host centos7)
UUID : 5694584c:c0c176cd:46d36664:08aa591c
Events : 42
Number Major Minor RaidDevice State
3 8 64 0 spare rebuilding /dev/sde
1 8 32 1 active sync /dev/sdc
4 8 48 2 active sync /dev/sdd
0 8 16 - faulty /dev/sdb
RAID 10 的软件实现
首先我们的系统中要有4块闲置的硬盘,因为数据的镜像和条带存储最少需要4快硬盘设备
然后我们使用mdadm
命令来管理RAID硬盘阵列
-C 参数代表创建一个 RAID 阵列卡
-v 参数显示创建的过程,同时在后面追加一个创建的设备名称/dev/md0
-a yes 参数代表自动创建设备文件
-n 4 参数代表使用 4 块硬盘来部署这个RAID 磁盘阵列
-l 10 参数则代表 RAID 10 方案
最后再加上 4 块硬盘设备的名称
mdadm -Cv /dev/md0 -a yes -n 4 -l 10 /dev/sd[bcde]
mkfs.ext4 /dev/md0
mount /dev/md0 /raid/
mdadm -D /dev/md0
#查看/dev/md0的详细信息
mdadm /dev/md0 -f /dev/sdb
#移除故障磁盘/dev/sdb
mdadm /dev/md0 -a /dev/sdf
#添加新磁盘/dev/sdf
mdadm --stop /dev/md0
#销毁/dev/md0
PS:
使用RAID与LVM磁盘阵列技术
mdadm软RAID的删除方法和注意事项
关于磁盘阵列,这是我见过最全面、最好的一篇文章!
磁盘用用不够了,做好了硬盘分区,不容易直接调整,这是个问题,聪明的工程师发明了一种技术可以动态调整我们的磁盘,这就是LVM(Logical Volume Manager逻辑卷管理)
LVM 技术是在硬盘分区和文件系统之间添加了一个逻辑层,它提供了一个抽象的卷组,可以把多块硬盘进行卷组合并。这样一来,用户不必关心物理硬盘设备的底层架构和布局,就可以实现对硬盘分区的动态调整。有些Iaas的感觉
PV(Physical Volume):物理卷,处于LVM最底层,可以是物理硬盘或者分区
VG(Volume Group):卷组,建立在PV之上,可以含有一个到多个PV
LV(Logical Volume):逻辑卷,建立在VG之上,相当于原来分区的概念,可调整大小
PE(Physical Extend):物理区域,PV中可以用于分配的最小存储单元,默认为4MB,
也有1M, 2M, 4M, 8M, 32M, 64M…,组成同一VG中所有PV的PE大小应该相同
LE(logical extent):逻辑区域是逻辑卷中可用于分配的最小存储单元
逻辑区域的大小取决于逻辑卷所在卷组中的物理区域的大小
普通情况下我们的硬盘使用是,先有一个物理磁盘
,然后划分分区使用。
使用LVM的情况下,就是把实际的物理磁盘虚拟出来,然后进行动态调整。我们先建造PV物理磁盘空间
,这个PV的组成单位PE有固定大小限制,然后我们把把PV组成卷组VG(可以调用的所有磁盘空间),然后我们便可以使用LVM进行管理我们需要的磁盘大小对VG进行划分出我们需要大小的LV物理磁盘
,再划分分区使用即可。同时由于是逻辑上的磁盘,能够更方便的扩容和减容,或是销毁他用。
LVM的建立与扩减容
-n lv 指定新建的lv名称
-L 300 指定LV的大小为300MB
-l 30 指定LV的大小为30x4PE=120MB
pvcreate /dev/sd[bc]
vgcreate storage /dev/sd[bc]
#vg名为storage
lvcreate -n lv -L 300 storage
#建立一个300MB大小的lv准备使用
mkfs.ext4 /dev/storage/lv
#格式化后挂载即可使用
lvextend -L 400 /dev/storage/lv
#将storage下的lv扩容至400MB
e2fsck -f /dev/storage/lv
#检查硬盘完整性,并重置硬盘容量
resize2fs /dev/storage/lv 120M
lvreduce -L 120M /dev/storage/lv
#把逻辑卷lv的容量减小到 120MB
LVM的快照和删除
lvm的快照snap就是对某一lv的某一时刻状况进行记录,快照和原lv一样大,快照还原后就会消失lvdispaly
lvcreate -L 100M -s -n snap /dev/storage/lv
lvconvert --merge /dev/storage/snap