在 Ubuntu 上使用 mdadm 创建 RAID1 分区

在 Ubuntu 上使用 mdadm 创建 RAID1 分区

我正在尝试在我的 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/mapperdmraid所有这些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 有问题。

相关内容