Linux 在组件设备可能已包含ext2文件系统时编写mdadm脚本

Linux 在组件设备可能已包含ext2文件系统时编写mdadm脚本,linux,scripting,amazon-ec2,raid,Linux,Scripting,Amazon Ec2,Raid,我想使用mdadm为m1.large EC2实例上的两个临时存储设备编写条带化脚本(显然ami并不总是包含设备信息,所以我不能在阵列启动后创建一个新的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 appear

我想使用mdadm为m1.large EC2实例上的两个临时存储设备编写条带化脚本(显然ami并不总是包含设备信息,所以我不能在阵列启动后创建一个新的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将设备归零,但这似乎是一个相当复杂的解决方案,我相信这是很容易做到的。

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

只有当您知道mdadm可能会问您的任何问题都要回答“是”时,才可以使用此选项

以上是我在示例mdadm命令中使用的使用RAID-0 EBS卷设置40 TB文件系统的方法:

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

echo“卸载/mnt…”
/bin/umount/mnt
echo“正在创建RAID0卷…”
/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--详细信息--扫描>>/etc/mdadm.conf
echo“正在创建文件系统…”
/sbin/blockdev--setra 65536/dev/md0
mkfs.xfs-f/dev/md0
echo“将设备/dev/md0安装到/mnt…”
/bin/mount-t xfs-o noatime/dev/md0/mnt
echo“在fstab中注册…”
/bin/mv/etc/fstab/etc/fstab.orig
/bin/sed'/\/mnt/c/dev/md0/mnt xfs默认值为0'/etc/fstab

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

谢谢。我不太清楚为什么会关闭它,因为bash脚本肯定是在编程。即使它更多地涉及到一般的系统管理。但是谢谢你的回答。或者把--run Or-R传递给mdadm。+1传递给Hannes的评论。根据手册页:-R,--run坚持让mdadm运行该阵列,即使某些组件在另一个阵列或文件系统中似乎处于活动状态。通常,mdadm会在将此类组件包含在阵列中之前要求确认。此选项会导致该问题被抑制。系统管理问题通常属于服务器故障。
yes | sudo mdadm ...options and arguments...
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