我的服务器中有两块 500GB 硬盘。目前没有配置 RAID,但安装了 CentOS6(目前为裸机安装)。是否可以设置软件 RAID-1,以便两个硬盘都镜像,而无需重新安装操作系统?我可以访问 KVM 以备不时之需,但我更希望能够通过 SSH 完成所有操作。
答案1
您可以这样做(我自己从未尝试过,因此请先测试您的 KVM 访问!):
第一个镜像整个磁盘 (/dev/sdX) 或仅镜像分区的设备。即使您只镜像一个完整的磁盘分区。在下面的示例中,我假设镜像整个磁盘。
mdadm --create /dev/md0 -n 2 -l 1 missing /dev/sdb
这将创建一个缺少一个磁盘的 RAID-1 镜像。
将第一个磁盘上的所有数据复制到阵列。Rsync
可能对此有用。在副本中排除 /proc 和 /dev。
可能需要创建分区。您的帖子中没有足够的信息来表明是否是这种情况。
在新的 MD 设备上设置正确的启动。在 grub2(或您的启动管理器)中保留一个选项,以便在无法正常工作时返回到旧磁盘。
重新启动到新磁盘。忽略阵列状态降级警告。
将旧磁盘添加到阵列mdadm --manage /dev/md0 -a /dev/sda
并让其同步。
[编辑] 如果您需要任何额外信息,请报告此情况。例如,modprobe raid1
CentOS 默认未加载镜像模块。如答案开头所述:未经测试)。
实际测试过的东西:
步骤 1:创建数组
我在 Vmware 工作站中创建了一个带有两个 5 GB 磁盘的虚拟机。我下载了 CentOS 6.4 ISO 并使用单个分区将其安装在第一个磁盘上。这可能不是对磁盘进行分区的最佳方法,但这仅用于测试。
如您所见,启动后只有一个磁盘正在使用:
[root@centOS-RAID-test etc]# mount /dev/sda1 开启 / 类型 ext4 (rw) /proc 上的 proc 类型 proc (rw) /sys 上的 sysfs 类型 sysfs (rw) /dev/pts 上的 devpts 类型 devpts (rw,gid=5,mode=620) /dev/shm 上的 tmpfs 类型 tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0") /proc/sys/fs/binfmt_misc 上无类型 binfmt_misc (rw) [root@centOS-RAID-test etc]# cat fstab # /etc/fstab 文件 # 由 anaconda 于 2013 年 11 月 10 日星期日 01:19:26 创建 # # 通过引用可访问的文件系统位于“/dev/disk”下 # 请参阅手册页 fstab(5)、findfs(8)、mount(8) 和/或 blkid(8) 以了解更多信息 # # UUID=ccb58393-d92e-473f-ae8d-7b2d7231dae8 / ext4 默认值 1 1 /dev/sda1 / ext4 默认值 1 1 tmpfs /dev/shm tmpfs 默认值 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs 默认值 0 0 proc /proc proc 默认值 0 0
我对默认设置做了一项更改,即将基于 UUID 的挂载点更改为 /dev/sda1。我这样做是因为我认为这样更容易识别磁盘。更改后我重新启动,以确保没有以某种方式破坏系统。
接下来让我们使用 mdadm。
curl ftp.pbone.net/mirror/ftp.centos.org/6.4/os/x86_64/Packages/mdadm-3.2.5-4.el6.x86_64.rpm > 文件 % 总计 % 已接收 % Xferd 平均速度 时间 时间 时间 当前 Dload 上传 总耗时 剩余速度 100 333k 100 333k 0 0 339k 0 --:--:-- --:--:-- --:--:-- 1044k [root@centOS-RAID-test ~]# rpm -ivh 文件 警告:文件:Header V3 RSA/SHA1 签名,密钥 ID c105b9de:NOKEY 准备中...############################################# [100%] 1:mdadm ############################################## [100%] [root@centOS-RAID-test ~]# mdadm 用法:mdadm --help 求助
好的,mdadm 命令似乎存在并且在我的路径中。无需重复。
[root@centOS-RAID-test ~]# mdadm --create /dev/md0 -n 2 -l 1 缺少 /dev/sdb mdadm:/dev/sdb 似乎是 raid 阵列的一部分: 级别=raid0 设备=0 ctime=1970 年 1 月 1 日星期四 01:00:00 mdadm:分区表存在于/dev/sdb上,但将会丢失或 创建数组后毫无意义 mdadm:注意:此数组开头有元数据, 可能不适合作为启动设备。如果您打算 在此设备上存储“/boot”,请确保 你的引导加载程序理解 md/v1.x 元数据,或者使用 --元数据=0.90 是否继续创建数组?y mdadm:默认为版本 1.2 元数据 mdadm:阵列 /dev/md0 已启动。 [root@centOS-RAID-test ~]# cat /proc/mdstat 人物 : [raid1] md0 :活动 raid1 sdb[1] 5238720 块超级 1.2 [2/1] [_U]
我不知道为什么它认为这个未使用的磁盘是以前阵列的一部分,但是新的 md 设备成功创建,没有任何“设备或资源繁忙”错误。
注意名称:MD0。当我重新启动时,它更改为 md127。
为了保持一致,请创建 /etc/mdadm.conf。我将其用作
ARRAY /dev/md0 level=raid1 num-devices=2 metadata=1.2 devices=/dev/sdb
内容。通过谷歌搜索可以自动执行此操作mdadm --verbose --detail --scan > /etc/mdadm.conf
。
现在已经快凌晨 3 点了,所以停止更新了。明天继续