在CentOS 6.1上配置 4TB硬盘+RAID1
本篇是 基于JMicron JMB363在CentOS上架设 RAID 的问题 的续集。在本篇里面,我放弃了使用 JMicron JMB363 实现硬 RAID 的方式,改为了使用软 RAID。
配置
- 主板: MSI EFINITY
- CPU: Intel Core2
- 内存: 金士顿DDR2 800 2Gx2
- 硬盘:
/dev/sda
希捷 500Gx1 做主盘安装操作系统。分成3个区,50G挂载 /, 4G挂载为交换分区, 剩余400G挂载为 /home,采用LVM管理分区。/dev/sdb
第一块4T硬盘/dev/sdc
第二块4T硬盘
- 操作系统:CentOS 6.1
对物理硬盘进行分区
大于 2TB 的硬盘,已经不能再使用 MBR 分区表,必须改为使用 GPT 分区表。
fdisk 命令不能识别和创建 GPT 分区表,因此我采用 parted 命令来分区。
parted /dev/sdb
(parted) mklabel gpt
(parted) unit TB
(parted) mkpart primary 0.00TB 4.00TB
(parted) print
这样就创建了一个4TB的分区。使用同样的方法对 dev/sdc
进行操作。
创建 RAID1 逻辑分区
mdadm --create /dev/md0 --level=raid1 --raid-devices=2 /dev/sdb1 /dev/sdc1
上面的命令含义是:
- 创建一个多重分区设备
/dev/md0
; - RAID 方式为 raid1
- 这个设备使用两个分区
/dev/sdb1
和/dev/sdc1
。
可以使用下面的命令查看这个设备的状态:
cat /proc/mdstat
md0 : active raid1 sdc1[1] sdb1[0]
3907015544 blocks super 1.2 [2/2] [UU]
[==>..................] resync = 11.8% (462385856/3907015544) finish=363.3min speed=157999K/sec
下面的命令获取到的状态更加详细:
mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Tue Jan 7 16:20:31 2014
Raid Level : raid1
Array Size : 3907015544 (3726.02 GiB 4000.78 GB)
Used Dev Size : 3907015544 (3726.02 GiB 4000.78 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Tue Jan 7 16:55:18 2014
State : active, resyncing
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Resync Status : 11% complete
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : dd46e62a:4b4b7e2a:2d8e962e:c1707817
Events : 2
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdc1
创建并挂载逻辑分区
parted /dev/dm0
(parted) mklabel gpt
(parted) unit TB
(parted) mkpart primary 0.00TB 4.00TB
(parted) print
(parted) quit
这会创建一个分区 /dev/dm0p1
,格式化它:
mkfs.ext4 /dev/dm0p1
将下面的内容加入 /etc/fstab
,我将它用作共享盘:
/dev/md0p1 / /home/share ext4 defaults 1 1
重启或者直接使用 mount -a
挂载。
问题出现
上面的 RAID 分区挂载和使用均成功。但服务器重启后,CentOS无法启动,进入了 (Repair Filesystem) 提示符。
CentOS 报告说 /dev/dm0p1
分区找不到,挂载 /home
分区错误。
其实 /home
分区没有问题。只是因为 /dev/dm0p1
是挂载在 /home
中的,由于 /dev/dm0p1
找不到,导致了后续的挂载出错。
在 (Repair Filesystem) 中使用任何lvm管理命令都是无效的,例如输入 lvdisplay lvs pvs vgs
等命令,都会显示同一个错误:
File-based locking initialisation failed
为了解决这个问题,先要将原来的挂载RAID分区的部分取消。可是在 (Repair Filesystem) 提示符下,对硬盘的管理是只读的,修改 /etc/fstab
将不能保存。
跳出 Repair Filesystem
要解决这个问题,需要重新挂载文件系统为可写。在 (Repair Filesystem) 中输入 root 密码之后,输入如下命令:
mount -w -o remount /
然后再次编辑 /etc/fstab
,取消对 RAID 分区的挂载,重启即可正常进入系统。
问题解决
这个问题出现的原因,是 /dev/dm0
变成了 /dev/dm127
,那么相应的分区也从 /dev/dm0p1
变成了 /dev/dm127p1
,导致CentOS启动的时候找不到这个原来的分区。
这可能是我偷懒没有提供 /etc/mdadm.conf
导致的问题。 但再次重启 /dev/dm127
的名称也不会变化了。
重新调整 /etc/fstab
,重启系统正常。我这个冒牌运维的工作终于可以结束了。
参考文章
- 3TB HDD+RAID5+LVM on CentOS 6.2
- 管理软件磁盘阵列
- PC 上的 LVM 灾难修复
- 修复虚拟磁盘LVM表
- File-based locking initialisation failed. Server Down
- 文章ID:2014
- 原文作者:zrong
- 原文链接:https://blog.zengrong.net/post/4tb-hdd-raid1-on-centos-6-1/
- 版权声明:本作品采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可,非商业转载请注明出处(原文作者,原文链接),商业转载请联系作者获得授权。