![在 Ubuntu 上使用 mdadm 创建 RAID1 分区](https://linux22.com/image/1229159/%E5%9C%A8%20Ubuntu%20%E4%B8%8A%E4%BD%BF%E7%94%A8%20mdadm%20%E5%88%9B%E5%BB%BA%20RAID1%20%E5%88%86%E5%8C%BA.png)
我正在尝试在我的 Ubuntu 9.10 工作站上设置 RAID1 分区。
在这个双启动系统中,Ubuntu 运行在单独的驱动器上(/dev/sdc
- 一个非常小的 SSD,这就是我需要更多磁盘空间的原因)。除此之外,还有两个传统的 500 GB 硬盘,安装了 Windows 7(我想保持 Windows 安装完好无损),大约有一半的空间未分配。这个空间是我想要为 Linux 设置一个单一的大型 RAID1 分区的地方。
(据我了解,这将是软件 RAID,而 Windows 分区位于硬件 RAID 上 - 我希望这不是问题......编辑:请参阅 Peter 的评论。我想这应该不是问题,因为我在 Linux 上分别看到两个驱动器。)
在两个磁盘/dev/sda
和上/dev/sdb
,我使用 fdisk 创建了相同的“Linux raid autodetect”类型的新分区来填充未分配的空间。
Device Boot Start End Blocks Id System
/dev/sda1 1 10 80293+ de Dell Utility
/dev/sda2 * 11 106 768000 7 HPFS/NTFS
Partition 2 does not end on cylinder boundary.
/dev/sda3 106 30787 246439936 7 HPFS/NTFS
/dev/sda4 30787 60801 241095200+ fd Linux raid autodetect
因此,我想从 /dev/sda4 和 /dev/sdb4 创建 RAID 阵列使用mdadm
.但我似乎没有让它工作:
$ sudo mdadm -Cv /dev/md0 -l1 -n2 /dev/sd{a,b}4
mdadm: Cannot open /dev/sda4: Device or resource busy
mdadm: Cannot open /dev/sdb4: Device or resource busy
mdadm: create aborted
启动机器后,相同的命令会产生以下结果:
$ sudo mdadm -Cv /dev/md0 -l1 -n2 /dev/sda4 /dev/sdb4
mdadm: Cannot open /dev/sda4: No such file or directory
mdadm: Cannot open /dev/sdb4: No such file or directory
所以现在看来,设备在启动时没有被自动检测到...使用 fdisk 仍然sda
看起来sdb
正确。
编辑:再次重启后设备恢复正常:
$ ls /dev/sd*
/dev/sda /dev/sda2 /dev/sda4 /dev/sdb1 /dev/sdb3 /dev/sdc /dev/sdc2
/dev/sda1 /dev/sda3 /dev/sdb /dev/sdb2 /dev/sdb4 /dev/sdc1 /dev/sdc5
但是尝试创建 RAID 阵列时也会显示“设备或资源繁忙”。很奇怪。任何帮助都将不胜感激!
更新:可以设备映射器与此有关吗?/dev/mapper
和dmraid
所有这些mdadm
内容有什么关系? 两者都提供软件 RAID,但是.. 不同? 抱歉,我在这里无知。
下面/dev/mapper/
有一些设备文件,我认为它们以某种方式与 3 个 Windows RAID 分区(sd{a,b}1 到 sd{a,b}3)匹配。我不知道为什么会有四这些阵列。
$ ls /dev/mapper/
control isw_dgjjcdcegc_ARRAY1 isw_dgjjcdcegc_ARRAY3
isw_dgjjcdcegc_ARRAY isw_dgjjcdcegc_ARRAY2
解决:这是mdadm 维基百科文章这让我朝着正确的方向前进。我发布了关于如何让一切正常运转的详细信息这个答案。
答案1
终于有一些进展了!
dmraid
确实是罪魁祸首,因为mdadm 的维基百科条目建议。我尝试删除 dmraid包(并且正在运行update-initramfs
,但我不确定这是否相关)。
此后,重新启动,下面的设备/dev/mapper
就消失了(这很好 - 我不需要在 Linux 上访问 Windows NTFS 分区):
$ ls /dev/mapper/
control
并且,最重要的是,mdadm --create
有效!
$ sudo mdadm -Cv -l1 -n2 /dev/md0 /dev/sda4 /dev/sdb4
mdadm: size set to 241095104K
mdadm: array /dev/md0 started.
我检查了/proc/mdstat
并且mdadm --detail /dev/md0
都表明新创建的数组一切正常。
$ cat /proc/mdstat
[..]
md0 : active raid1 sdb4[1] sda4[0]
241095104 blocks [2/2] [UU]
[==========>..........] resync = 53.1% (128205632/241095104)
finish=251.2min speed=7488K/sec
然后我在新分区上创建了一个文件系统:
$ sudo mkfs.ext4 /dev/md0
最后,只需将其安装在/opt
(& updated /etc/fstab
) 下即可。(我当然也可以在这里使用 LVM,但坦率地说,在这种情况下,我认为这样做没有任何意义,而且我已经浪费了足够多的时间来尝试使其工作……)
现在 RAID 分区已可供使用,而且我有足够的磁盘空间。:-)
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sdc5 70G 52G 15G 79% /
/dev/md0 227G 188M 215G 1% /opt
更新:我的这个 RAID 设备仍然存在一些问题。重启后,即使我在 fstab 中设置了它,它也无法挂载,有时(重启后)它似乎处于非活动状态,甚至无法手动挂载。请参阅后续问题我已经发布。
答案2
sudo mdadm -Cv /dev/md0 -l1 -n2 /dev/sd{a,b}4
mdadm: Cannot open /dev/sda4: Device or resource busy
mdadm: create aborted
这个技巧对我有用:检查/proc/mdstat
:注意那里注明的设备名称,例如md_d0
,然后:
sudo mdadm --stop /dev/md_d0
现在创建命令应该可以工作了。
答案3
也许是一个愚蠢的答案,但是 - 你确定 sd{a,b}4 没有被 ubuntu 安装在任何地方吗?
你说的硬件 raid 是什么主板?可能是软件 raid 有问题。