安装操作系统时创建 RAID
首先需要一提的是,在创建虚拟机时,操作系统的选择一定要正确,比如我们这里的 iso 安装包是64位的,就要选取CentOS 64
位,如果只选择CentOS
,会造成虚拟机安装完毕后无法上网(应该是网卡驱动没有正确安装)。
创建虚拟机
首先创建虚拟机,选择稍后安装操作系统
,硬盘设置为10GB,完成后再添加硬盘,每块大小最好一样为5GB,我这里添加了4块,共5块硬盘。
之后开启虚拟机,进行操作系统的安装。
安装操作系统
很简单的操作后来到下面界面。
在软件选择
中选择了GNOME 桌面
,右侧已选环境的附加选项
全部未勾选
。
下一步选择安装位置,可以看出,设备选择
中一共有我们刚才添加的5块硬盘,全部勾选上,在其他存储选项
中勾选我要配置分区
,然后点击左上角的完成
。
下面开始手动分区。
不知为何安装界面在VMware
中展开不全,所以这里分区方案
保持默认的LVM
,点击点这里自动创建他们(C)。
我测试的分区方案是,/boot
分500M
,swap
分2048M
,剩下的7.5G
分给/
,还有4块硬盘组成RAID
分给/home
。在分配硬盘的时候,Device Type
选取LVM
,Volume Group
中可以设置从哪些硬盘中分取空间,我的做法是/
/boot
swap
使用第一块硬盘;把其它硬盘新建一个分组用来划分/home
的空间,同时,对/home
,Device Type
选取RAID
后,右边的Volume Group
变为RAID Level
,选取为RAID 5
,然后上面Device
的Modify
按钮激活,选取剩下的四块硬盘。
确定后就可以点击开始安装
了,设置好root
密码,新建账号,等待即可。
利用 mdadm 创建 RAID 并挂载
如果希望安装好操作系统后,对未使用的硬盘创建 RAID,即上面在选择安装目标位置
的硬盘时有一些没有勾选,比如我测试时只够了第一块硬盘,然后分区并安装系统,这时可以在终端利用mdadm
进行 RAID 的配置。这里需要说明,下面的操作均是在root
下进行。
首先df -h
查看系统的磁盘空间占用情况,下面是我的输出:
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 5.0G 3.3G 1.8G 66% /
devtmpfs 911M 0 911M 0% /dev
tmpfs 921M 92K 921M 1% /dev/shm
tmpfs 921M 8.9M 912M 1% /run
tmpfs 921M 0 921M 0% /sys/fs/cgroup
/dev/mapper/centos-home 13G 38M 13G 1% /home
/dev/sda1 497M 124M 373M 25% /boot
/dev/sr0 4.1G 4.1G 0 100% /run/media/ycg/CentOS 7 x86_64
可以看出只有一块硬盘/dev/sda1
(目录/home
也是选择了/dev/sda
这块硬盘,但是不知道为何文件系统显示的是/dev/mapper/centos-home
,怀疑有两种可能:安装操作系统时Device Type
选取LVM
会生成磁盘的映射/dev/mapper
,或者,虚拟机下与真实安装不一样。目测前一种靠谱),再利用fdisk -l | grep /dev/sd
看到
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
磁盘 /dev/sdc:21.5 GB, 21474836480 字节,41943040 个扇区
磁盘 /dev/sdd:21.5 GB, 21474836480 字节,41943040 个扇区
磁盘 /dev/sda:21.5 GB, 21474836480 字节,41943040 个扇区
/dev/sda1 * 2048 1026047 512000 83 Linux
/dev/sda2 1026048 41943039 20458496 8e Linux LVM
磁盘 /dev/sde:21.5 GB, 21474836480 字节,41943040 个扇区
的确是sda, sdb, sdc, sdd, sde
五块硬盘,其中操作系统安装在sda
,其余四块硬盘没有使用。我们下面就利用这四块硬盘创建 RAID。
mdadm --create --auto=yes /dev/md0 --level=5 --raid-devices=4 --spare-devices=0 /dev/sd[b,c,d,e]
上面的命令表明利用sdb, sdc, sdd, sde
四块硬盘创建level
为5
的 RAID,即RAID5
,其设备名为/dev/md0
,其中四块硬盘都用来做 RAID 的装置,没有备用硬盘。如果硬盘比较多,可以令--spare-devices=1
,这时候硬盘的数目应该等于 raid-devices
与spare-devices
数目之和。
输入上面创建 RAID 的命令后,CentOS
图形界面会报错阵列已降级
,在磁盘
软件的界面中显示一个磁盘缺失
使用
mdadm --detail /dev/md0
查看详细信息后也发现类似情况
/dev/md0:
Version : 1.2
Creation Time : Fri Dec 25 09:58:41 2015
Raid Level : raid5
Array Size : 62865408 (59.95 GiB 64.37 GB)
Used Dev Size : 20955136 (19.98 GiB 21.46 GB)
Raid Devices : 4
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Fri Dec 25 09:59:02 2015
State : clean, degraded, recovering
Active Devices : 3
Working Devices : 4
Failed Devices : 0
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 512K
Rebuild Status : 11% complete
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : 85d38e21:ee251913:f49caedb:6e36ebc5
Events : 4
Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
1 8 32 1 active sync /dev/sdc
2 8 48 2 active sync /dev/sdd
4 8 64 3 spare rebuilding /dev/sde
从其中
Rebuild Status : 11% complete
......
4 8 64 3 spare rebuilding /dev/sde
发现确实有硬盘在重建。一开始在这里纠结了好久,试了好多次,每次都是这样的情况,重新安装系统也不行。后来仔细查看网上 RAID 的相关介绍,发现这就是正常情况,因为 RAID5 有磁盘备份
的功能,每个循环写入时,都记录部分同位检查码 (parity)
。初次创建 RAID 时需要生成同位检查码
,所以会有rebuilding
啦!其实终端并没有报错,只是系统软件报错,不知道这算不算一个 bug。
在等待一段时间,rebuilding
完毕后,我们的 RAID 就创建好了!此时再查看详细信息,可以看到
/dev/md0:
Version : 1.2
Creation Time : Fri Dec 25 09:58:41 2015
Raid Level : raid5
Array Size : 62865408 (59.95 GiB 64.37 GB)
Used Dev Size : 20955136 (19.98 GiB 21.46 GB)
Raid Devices : 4
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Fri Dec 25 10:02:00 2015
State : clean
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 512K
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : 85d38e21:ee251913:f49caedb:6e36ebc5
Events : 20
Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
1 8 32 1 active sync /dev/sdc
2 8 48 2 active sync /dev/sdd
4 8 64 3 active sync /dev/sde
没有问题啦~ 如果有spare disk
的话,输出会有些不一样,可以参考《鸟哥私房菜》。使用下面命令
cat /proc/mdstat
也可以查看磁盘阵列的信息
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sde[4] sdd[2] sdc[1] sdb[0]
62865408 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/4] [UUUU]
unused devices: <none>
我们看第二行,md0
是由sdb, sdc, sdd, sde
组成的raid5
,第三行最后[4/4]
说明 md0 需要 4 个装置且这 4 个装置均正常运行,[UUUU]
代表的是四个所需的装置 [4/4]
的启动情况,U
代表正常运行,_
代表不正常。
下面将/dev/md0
格式化为xfs
,这时与前面安装时选择的File System
类型一致
mkfs -t xfs /dev/md0
然后创建文件夹,挂载
mkdir /mnt/raid
mount /dev/md0 /mnt/raid
再用df -h
,
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 5.0G 3.3G 1.8G 66% /
devtmpfs 911M 0 911M 0% /dev
tmpfs 921M 148K 921M 1% /dev/shm
tmpfs 921M 8.9M 912M 1% /run
tmpfs 921M 0 921M 0% /sys/fs/cgroup
/dev/mapper/centos-home 13G 38M 13G 1% /home
/dev/sda1 497M 124M 373M 25% /boot
/dev/sr0 4.1G 4.1G 0 100% /run/media/ycg/CentOS 7 x86_64
/dev/md0 60G 33M 60G 1% /mnt/raid
发现/dev/md0
已经挂载到/mnt/raid
可以使用了。
如果重启系统,会发现/dev/md0
变为未挂载的状态,需要重新挂载才能使用。下面讲一下如何自动挂载。前面说过,命令
mdadm --detail /dev/md0
会输出一些信息,其中一行包括类似下面的UUID识别码
用于该 RAID 装置向系统注册
UUID : 85d38e21:ee251913:f49caedb:6e36ebc5
下面根据UUID
配置 RAID,配置文件名为mdadm.conf
,默认是不存在的,需要手工创建。该配置文件存在的主要作用是系统启动的时候能够自动加载软 RAID,同时也方便日后管理。mdadm.conf
文件内容包括由DEVICE
选项指定用于 RAID 的所有设备;ARRAY
选项所指定阵列的设备名、RAID 级别、阵列中活动设备的数目以及设备的UUID号。
vi /etc/mdadm.conf
添加如下内容
DEVICE /dev/sdb /dev/sdc /dev/sdd /dev/sde
ARRAY /dev/md0 level=raid5 UUID=85d38e21:ee251913:f49caedb:6e36ebc5
或者直接只添加一行
ARRAY /dev/md0 UUID=85d38e21:ee251913:f49caedb:6e36ebc5
然后修改下面文件
vi /etc/fstab
最后一行添加
/dev/md0 /mnt/raid xfs defaults 1 2
即可。查看是否能顺利挂载
umount /dev/md0; mount -a
df /mnt/raid
得到输出
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/md0 62826496 33312 62793184 1% /mnt/raid
没有问题。重启再看看df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 5.0G 3.3G 1.8G 66% /
devtmpfs 911M 0 911M 0% /dev
tmpfs 921M 160K 921M 1% /dev/shm
tmpfs 921M 9.0M 912M 1% /run
tmpfs 921M 0 921M 0% /sys/fs/cgroup
/dev/md0 60G 33M 60G 1% /mnt/raid
/dev/mapper/centos-home 13G 38M 13G 1% /home
/dev/sda1 497M 139M 359M 28% /boot
/dev/sr0 4.1G 4.1G 0 100% /run/media/ycg/CentOS 7 x86_64
顺利挂载。
上面所有操作都是在root
下进行的,如果是普通用户,刚开始对/mnt/raid
没有写的权限,这时需要su
到root
,然后
chmod a+w /mnt/raid/
到此普通用户也可以用了。
最后说一下怎么关闭RAID
。首先卸载
umount /dev/md0
然后把刚才添加到/etc/fstab
最后一行的内容删除,再删除/etc/mdadm.conf
文件,再使用
mdadm --stop /dev/md0
将RAID
关闭
mdadm: stopped /dev/md0
查看 RAID 的状态cat /proc/mdstat
,
Personalities : [raid6] [raid5] [raid4]
unused devices: <none>
发现已关闭。
使用
下面是/mnt/raid
的使用建议。我的想法是,在这个目录下每个用户由root
建立一个与用户名同名的文件夹,比如叫ycg
,然后修改属性
chown -R ycg:ycg ycg
表明将文件夹的所有者和群组均改为ycg
,然后修改权限
chmod 700 ycg
就可以在这个目录下愉快地玩耍啦~~~
总结
本文讨论了两种创建 RAID 的方式,未讨论 RAID 出故障之后的救援模式,创建时也没用使用备用硬盘
。