Linux 的 RAID** 磁盘阵列与阵列卡 **
一, RAID 概念?
RAID--** 独立磁盘冗余阵列(Redundant Array of Independent Disks), 原本叫做廉价磁盘冗余阵列. RAID 的基本思想是将多个容量较小, 相对廉价的磁盘进行有机组合, 从而以较低的成本获得与昂贵大容量磁盘相当的容量, 性能, 可靠性. 随着磁盘成本和价格的不断降低, RAID 可以使用大部分的磁盘, "廉价" 已经毫无意义. 所以 RAID 咨询委员会使用 "独立" 代替 "廉价".**
二, 为什么需要 RAID?
RAID** 的种类目前来说使用的较多的是 RAID0,RAID1,RAID5,RAID6.RAID 的初心是为大型服务器提供高端的存储功能和冗余的数据安全, 但 RAID0 显然是不符合该要求的, 因为 RAID0 是为了极大程度地提高数据读写 (I/O) 的效率和硬盘的使用率, 因此其原理是同时向多个磁盘中同时写入信息, 但是不保证数据的安全可靠性, 有一块磁盘挂了就无法导致数据丢失, 适用于仅仅只需要高读写能力的场景, 而后面的类型对于数据的安全与可靠性都有了明显的改善与加强.**
RAID1--** 镜像复制, 使用两块或以上的磁盘 (一般是偶数块) 进行读写, 向一块磁盘中写入信息, 并且复制一份到另一块磁盘中, 这样保证了数据的可靠读写, 两者互不影响, 但是使用率只有原本资源的一半, 所以是可靠性较强但资源耗费也是比较大的.**
说白了, RAID0 是只在乎速度, 而 RAID1 考虑的是安全. 而 RAID5 则是由三块磁盘构成, 凭借算法进行奇偶差错校验来确保数据的可靠性的同时兼顾磁盘使用率, 其允许一块磁盘挂掉, 但是在修复重建数据的时间段中不可以再有磁盘损坏, 否则数据仍然会丢失.
RAID6** 则是基于 RAID5 的基础上进行双重校验以保证两块磁盘挂掉的情况下数据仍然不会丢失. 但是其读写性能就比较低了尤其是磁盘损坏的时候, 读写速度将急剧下降, 而且价格方面也是较其他而言更加昂贵.**
三, 软 RAID 配置实验操作流程
1. 首先将分区类型转换为 fd(前提是已经添加磁盘)
2. 管理 RAID 磁盘
3. 格式化文件格式
4. 挂载
下面对 RAID0 进行配置的实验操作:
- [[email protected] ~]# lsblk //** 查看磁盘概要信息 **
- NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
- sda 8:0 0 40G 0 disk
├─sda1 8:1 0 6G 0 part /boot
├─sda2 8:2 0 20G 0 part /
├─sda3 8:3 0 4G 0 part [SWAP]
├─sda4 8:4 0 1K 0 part
└─sda5 8:5 0 10G 0 part /home
- sdb 8:16 0 20G 0 disk
- sdc 8:32 0 20G 0 disk
- sdd 8:48 0 20G 0 disk
- sde 8:64 0 20G 0 disk
- sr0 11:0 1 4.2G 0 rom /run/media/root/CentOS 7 x86_64
- [[email protected] ~]# fdisk /dev/sdb //** 设置 b 磁盘分区格式为 fd**
欢迎使用 fdisk (util-Linux 2.23.2).
更改将停留在内存中, 直到您决定将更改写入磁盘.
使用写入命令前请三思.
Device does not contain a recognized partition table
使用磁盘标识符 0x363a740e 创建新的 DOS 磁盘标签.
命令(输入 m 获取帮助):n
- Partition type:
- p primary (0 primary, 0 extended, 4 free)
- e extended
- Select (default p):
- Using default response p
分区号 (1-4, 默认 1):
起始 扇区 (2048-41943039, 默认为 2048):
将使用默认值 2048
Last 扇区, + 扇区 or +size{K,M,G} (2048-41943039, 默认为 41943039):
将使用默认值 41943039
分区 1 已设置为 Linux 类型, 大小设为 20 GiB
命令(输入 m 获取帮助):t
已选择分区 1
Hex 代码(输入 L 列出所有代码):fd
已将分区 "Linux" 的类型更改为 "Linux raid autodetect"
命令(输入 m 获取帮助):w
- The partition table has been altered!
- Calling ioctl() to re-read partition table.
正在同步磁盘.
[[email protected] ~]# fdisk /dev/sdc
欢迎使用 fdisk (util-Linux 2.23.2).
更改将停留在内存中, 直到您决定将更改写入磁盘.
使用写入命令前请三思.
Device does not contain a recognized partition table
使用磁盘标识符 0x1d0b68fc 创建新的 DOS 磁盘标签.
命令(输入 m 获取帮助):n
- Partition type:
- p primary (0 primary, 0 extended, 4 free)
- e extended
- Select (default p):
- Using default response p
分区号 (1-4, 默认 1):
起始 扇区 (2048-41943039, 默认为 2048):
将使用默认值 2048
Last 扇区, + 扇区 or +size{K,M,G} (2048-41943039, 默认为 41943039):
将使用默认值 41943039
分区 1 已设置为 Linux 类型, 大小设为 20 GiB
命令(输入 m 获取帮助):t
已选择分区 1
Hex 代码(输入 L 列出所有代码):fd
已将分区 "Linux" 的类型更改为 "Linux raid autodetect"
命令(输入 m 获取帮助):w
- The partition table has been altered!
- Calling ioctl() to re-read partition table.
正在同步磁盘.
- //** 查看分区是否正确 **
- [[email protected] ~]# fdisk -l /dev/sd[b-c]
磁盘 /dev/sdb:21.5 GB, 21474836480 字节, 41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑 / 物理):512 字节 / 512 字节
I/O 大小(最小 / 最佳):512 字节 / 512 字节
磁盘标签类型: dos
磁盘标识符: 0x363a740e
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 41943039 20970496 fd Linux raid autodetect
磁盘 /dev/sdc:21.5 GB, 21474836480 字节, 41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑 / 物理):512 字节 / 512 字节
I/O 大小(最小 / 最佳):512 字节 / 512 字节
磁盘标签类型: dos
磁盘标识符: 0x1d0b68fc
设备 Boot Start End Blocks Id System
- /dev/sdc1 2048 41943039 20970496 fd Linux raid autodetect
- [[email protected] ~]# mdadm -C -v /dev/md0 -l0 -n2 /dev/sd[b-c] //mdadm** 命令进行 RAID 磁盘管理 **
- mdadm: chunk size defaults to 512K //md0** 是自己取的 RAID0 的设备名称,-l 是 level,0 表示的是 RAID0**
- mdadm: partition table exists on /dev/sdb //1 就是 RAID1,5 就是 RAID5,-n 表示需要几块磁盘, 后面的加的
- mdadm: partition table exists on /dev/sdb but will be lost or //** 就是磁盘数量 **
- ? meaningless after creating array
- mdadm: partition table exists on /dev/sdc
- mdadm: partition table exists on /dev/sdc but will be lost or
- ? meaningless after creating array
- Continue creating array? y
- mdadm: Defaulting to version 1.2 metadata
- mdadm: array /dev/md0 started.
- [[email protected] ~]# lsblk /dev/md0 //** 查看概要信息的确是 RAID0**
- NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
- md0 9:0 0 40G 0 raid0
- [[email protected] ~]# mkfs -t xfs /dev/md0
- meta-data=/dev/md0 isize=512 agcount=16, agsize=654720 blks
- ? = sectsz=512 attr=2, projid32bit=1
- ? = crc=1 finobt=0, sparse=0
- data = bsize=4096 blocks=10475520, imaxpct=25
- ? = sunit=128 swidth=256 blks
- naming =version 2 bsize=4096 ascii-ci=0 ftype=1
- log =internal log bsize=4096 blocks=5120, version=2
- ? = sectsz=512 sunit=8 blks, lazy-count=1
- realtime =none extsz=4096 blocks=0, rtextents=0
- [[email protected] ~]# mount /dev/md0 /mnt
- [[email protected] ~]# df -hT
文件系统 类型 容量 已用 可用 已用 % 挂载点
- /dev/sda2 xfs 20G 4.4G 16G 22% /
- devtmpfs devtmpfs 474M 0 474M 0% /dev
- tmpfs tmpfs 489M 0 489M 0% /dev/shm
- tmpfs tmpfs 489M 7.1M 482M 2% /run
- tmpfs tmpfs 489M 0 489M 0% /sys/fs/cgroup
- /dev/sda5 xfs 10G 37M 10G 1% /home
- /dev/sda1 xfs 6.0G 158M 5.9G 3% /boot
- tmpfs tmpfs 98M 4.0K 98M 1% /run/user/42
- tmpfs tmpfs 98M 20K 98M 1% /run/user/0
- /dev/sr0 iso9660 4.3G 4.3G 0 100% /run/media/root/CentOS 7 x86_64
- /dev/md0 xfs 40G 33M 40G 1% /mnt
四, 总结
其实软 RAID 的磁盘阵列的设置还是比较简单的, 对于其他类型的 RAID 的配置的步骤是一样的, 当然也可是设置备份, 就是在 mdadm 命令的最后加上 - xn (n 表示的是备用的磁盘的数量), 然后加上设备名称, 这里主要是软 RAID 的设置操作.
来源: http://www.bubuko.com/infodetail-3289659.html