6

我想使用 mdadm 编写 m1.large EC2 实例上的两个临时存储设备的条带化脚本(显然,amis 并不总是包含设备信息,因此一旦启动阵列,我就不能只创建一个新的 ami)。

问题是,EC2 实例上的临时存储通常使用文件系统预先格式化,导致 mdadm 说:

mdadm: /dev/sdb appears to contain an ext2fs file system
    size=440366080K  mtime=Mon Jan  2 20:32:06 2012
mdadm: /dev/sdc appears to contain an ext2fs file system
    size=440366080K  mtime=Wed Dec 31 19:00:00 1969
Continue creating array? 

并等待输入。我确信有一种方法可以在 mdadm 中针对非交互式情况(例如在 fsck -y 中)自动回答这些类型的提示,但我似乎无法弄清楚(这不是 --force)。我知道我可以使用 dd 将设备归零,但这似乎是一个相当大锤的解决方案,我确信很容易完成。

4

2 回答 2

11

您是否尝试过在标准 Unix/Linux “yes”命令的输出中使用管道?

yes | sudo mdadm ...options and arguments...

仅当您知道要对mdadm 可能问您的任何问题回答“是”时才使用此选项。

以上是我在示例 mdadm 命令中使用 RAID-0 EBS 卷设置 40 TB 文件系统的方法: https ://alestic.com/2009/06/ec2-ebs-raid/

于 2012-01-03T09:00:36.947 回答
2

我在启动 am1.largem1.xlarge执行磁盘剥离 (RAID-0) 的实例时运行一个脚本。这是一个简化版本(假设它是 m1.large):

echo "Unmounting /mnt..."
/bin/umount /mnt

echo "Creating RAID0 volume..."
/usr/bin/yes|/sbin/mdadm --create /dev/md0 --level=0 -c256 --raid-devices=2 /dev/sdb /dev/sdc
echo 'DEVICE /dev/sdb /dev/sdc' > /etc/mdadm.conf
/sbin/mdadm --detail --scan >> /etc/mdadm.conf

echo "Creating file-system..."
/sbin/blockdev --setra 65536 /dev/md0
mkfs.xfs -f /dev/md0

echo "Mounting the device /dev/md0 to /mnt..."
/bin/mount -t xfs -o noatime /dev/md0 /mnt

echo "Registering in fstab.."
/bin/mv /etc/fstab /etc/fstab.orig
/bin/sed '/\/mnt/ c /dev/md0  /mnt  xfs    defaults 0 0' < /etc/fstab.orig > /etc/fstab

如前所述,要回答您的问题,您可以通过管道yes

于 2012-01-04T06:01:24.107 回答