RAID与LVM
文章目录
1.RAID
1.1 RAID简介
RAID(Redundant Arrays Independent Disks,廉价磁盘冗余阵列)。RAID 可以透过一个技术(软件或硬件),将多个较小的磁盘整合成一个较大的磁盘装置;而这个较大的磁盘功能可不止是存储而已,它还有保护数据的功能。所谓保护功能就是将一个数据多份的存放在不同的物理磁盘之上,这样就避免了单块甚至多块磁盘故障而导致的数据丢失问题。当然这需要借助于RAID的级别来实现更加丰富的功能。级别就是将多块磁盘组织在一起的工作方式,不同级别组合起来的磁盘具有不同的功能。
1.2 RAID实现的方式
- 外接式磁盘阵列:通过扩展卡提供适配能力
- 内接式磁盘阵列:主板集成RAID控制器
- software磁盘阵列:软件方式实现的RAID功能
1.3 RAID级别
1.3.1 RAID-0
RAID0 是一种简单的、无数据校验的数据条带化技术。实际上不是一种真正的 RAID ,因为它并不提供任何形式的冗余策略。 RAID0 将所在磁盘条带化后组成大容量的存储空间,将数据分散存储在所有磁盘中,以独立访问方式实现多块磁盘的并读访问。由于可以并发执行 I/O 操作,总线带宽得到充分利用。再加上不需要进行数据校验,RAID0 的性能在所有 RAID 等级中是最高的。理论上讲,一个由 n 块磁盘组成的 RAID0 ,它的读写性能是单个磁盘性能的 n 倍,但由于总线带宽等多种因素的限制,实际的性能提升低于理论值。
RAID0 具有低成本、高读写性能、 100% 的高存储空间利用率等优点,但是它不提供数据冗余保护,一旦数据损坏,将无法恢复。 因此, RAID0 一般适用于对性能要求严格但对数据安全性和可靠性不高的应用,如视频、音频存储、临时数据缓存空间等。
1.3.2 RAID-1
RAID1 称为镜像,它将数据完全一致地分别写到工作磁盘和镜像磁盘,它的磁盘空间利用率为1/n。 RAID1 在数据写入时,响应时间会有所影响,但是读数据的时候没有影响。 RAID1 提供了最佳的数据保护,一旦工作磁盘发生故障,系统自动从镜像磁盘读取数据,不会影响用户工作。
RAID1 与 RAID0 刚好相反,是为了增强数据安全性使两块 磁盘数据呈现完全镜像,从而达到安全性好、技术简单、管理方便。 RAID1 拥有完全容错的能力,但实现成本高。 RAID1 应用于对顺序读写性能要求高以及对数据保护极为重视的应用,如对邮件系统的数据保护。
1.3.3 RAID-5
RAID5的磁盘上同时存储数据和校验数据,数据块和对应的校验信息存保存在不同的磁盘上,当一个数据盘损坏时,系统可以根据同一条带的其他数据块和对应的校验数据来重建损坏的数据。与其他 RAID 等级一样,重建数据时, RAID5 的性能会受到较大的影响。
RAID5 兼顾存储性能、数据安全和存储成本等各方面因素,它可以理解为 RAID0 和 RAID1 的折中方案,是目前综合性能最佳的数据保护解决方案。 RAID5 基本上可以满足大部分的存储应用需求,数据中心大多采用它作为应用数据的保护方案。
1.3.4 RAID-10
先做RAID1,再做RAID0,每组可最多损坏一块盘。相比RAID01,有更好的容错能力。
1.3.5 RAID-01
先做RAID0,再做RAID1。RAID01 兼备了 RAID0 和 RAID1 的优点,它先用两块磁盘建立镜像,然后再在镜像内部做条带化。 RAID01 的数据将同时写入到两个磁盘阵列中,如果其中一个阵列损坏,仍可继续工作,保证数据安全性的同时又提高了性能。 RAID01 和 RAID10 内部都含有 RAID1 模式,因此整体磁盘利用率均仅为 50% 。
1.4 常见RAID比较
1.5 RAID的具体实现
1.硬件实现方式:通过BIOS参数调整来实现
2.软件实现方式:通过软件工具mdadm来实现
mdadm [mode] raiddev [options] component-dev
mode:
-C:创建模式
-n:使用#个块设备来创建此RAID
-l:指明要创建的RAID的级别
-a {yes|no}:自动创建目标RAID设备的设备文件
-c:指明块大小
-x:指明空闲盘的个数
-D:显示raid的详细信息
mdadm -D /dev/md#
管理模式:
-f:标记指定磁盘为损坏
-a:添加磁盘
-r:移除磁盘
停止md设备:
mdadm -S /dev/md#
观察md的状态:
cat /proc/mdstat #可与watch配合使用
watch:
-n #:指定刷新间隔
watch -n# "COMMAND"
步骤:分区,做RAID(mdadm),初始化,挂载
2.LVM
2.1 LVM简介
LVM(Logical Volume Manager,逻辑卷管理)重点在于可以弹性的调整文件系统(filesystem)的容量,而并非在于数据的存储效率及安全上面。需要文件的读写效率或是可靠性是RAID所考虑的问题。LVM可整合多个磁盘或分区,让这些分散的磁盘或分区像一个完整的磁盘一样。而且,还可以在未来新增或移除其它的磁盘或分区到这个LVM管理的磁盘当中。如此一来,整个磁盘空间的使用上,就相当的具有弹性。
2.2 概念介绍
- 物理卷(PV):物理卷处于LVM中的最底层,可以将其理解为物理硬盘,硬盘分区或RAID磁盘阵列。
- 卷组(VG):卷组建立在物理卷(PV)之上,一个卷组可以包含多个物理卷,而且在卷组创建之后也可以继续向其中添加新的物理卷,PE是VG的组成单位,默认为4M。
- 逻辑卷(LV):逻辑卷是用卷组中空闲的资源建立的,并且逻辑卷在建立后可以动态的扩展或缩小空间。这就是LVM的核心理念。
2.3 常用命令
功能/命令 | 物理卷管理 | 卷组管理 | 逻辑卷管理 |
---|---|---|---|
扫描 | pvscan | vgscan | lvscan |
创建 | pvcreate | vgcreate | lvcreate |
显示 | pvdisplay | vgdisplay | lvdisplay |
删除 | pvremove | vgremove | lvremove |
扩展 | vgextend | lvextend | |
缩小 | vgreduce | lvreduce |
逻辑卷管理:
lvcreate
-n 逻辑卷名字
-l %{VG|PVS|FREE} 逻辑扩展数
-L 逻辑卷大小
-s 生成一个快照卷
lvextend
-L:指定逻辑卷的大小,单位为“kK,mM,gG,tT”字节
-l:指定逻辑卷的大小(LE数)
lvreduce
-L:指定逻辑卷的大小,单位为“kK,mM,gG,tT”字节;
-l:指定逻辑卷的大小(LE数).
2.4 LVM的实现
将/dev/sda{4,5,6}三个分区实现LVM,/dev/sda7实现VG扩容
1.创建PV
pvcreate /dev/sda{4,5,6}
2.创建VG
vgcreate vgtest /dev/sda{4,5,6}
-s:指定PE大小,默认为4M
VG扩容
vgextend vgtest /dev/sda7
3.创建LV
创建大小为500M的逻辑卷
lvcreate -L 500M -n lv0 vgtest
创建大小为VG总大小的逻辑卷
lvcreate -l 100%VG -n lv0 vgtest
创建大小为空闲大小80%的逻辑卷
lvcreate -l 80%Free -n lv0 vgtest
4. 逻辑卷初始化
mkfs.ext4 /dev/vgtest/lv0
5.逻辑卷挂载
mount /dev/vgtest/lv0 /dir
6.修改配置文件 /etc/fstab
挂载设备 挂载点 文件系统 默认权限 是否备份 开机是否校验
/dev/vgtest/lv0 /test ext4 defaults 0 0
2.5 逻辑卷扩容、缩容
逻辑卷增加:
lvextend -L +100M /dev/vgtest/lv0 #增加100M容量
lvextend -L 500M /dev/vgtest/lv0 #扩容后总容量为500M
resize2fs /dev/vg0/lv0
逻辑卷减小:
umount /dir
fsck -f /dev/vgtest/lv0
resize2fs /dev/vg0/lv0 64M #减小后最终大小
lvreduce -L -136M /dev/vg0/lv0 #减小136M
mount /dev/vgtest/lv0 /dir
2.6 快照
快照就是将当前的系统数据记录下来,在未来若有数据变动,则会将变更前的数据放在亏按照区进行保存,那么快照区将分为两部分:变更之前的数据和变更的数据组成。这样一来LVM的系统快照就像是一种很棒的备份工具,因为它只备份有变更的数据,文件系统内没有被变动的数据依旧保持在原本的区块内,LVM知道哪些数据是变动的哪些数据是没有变动的,因此通过LVM快照本分下来的数据所占用的容量非常小,所以LVM快照是一个很不错的备份工具。
创建快照:
lvcreate -L 1G -s -n lvsnapshot /dev/vgtest/lv0
mount /dev/vgtest/vgsnapshot /snapshotdir #可直接挂载不需要初始化
RAID参考文章:http://www.hack520.com/169.html