2012-01-03 23 views
5

我想使用mdadm在m1.large EC2實例上腳本化兩個臨時存儲設備(顯然,amis並不總是包含設備信息,所以我可以'一旦數組啓動,只需創建一個新的ami)。腳本mdadm當組件設備可能包含ext2文件系統已經

的問題是,在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中)爲這些類型的提示自動回答yes,但我似乎無法弄清楚它(它不是--force)。我知道我可以使用dd將設備清零,但這似乎是一個相當大膽的解決方案,我相信這很容易完成。

回答

7

您是否嘗試過在標準的Unix/Linux「yes」命令的輸出中管道?

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

只有當你知道你要回答「是」 任何問題的mdadm可能會要求您使用此。

這是我在樣品的mdadm使用的方法命令,使用RAID-0 EBS卷建立一個40TB的文件系統:http://alestic.com/2009/06/ec2-ebs-raid

+1

感謝。我不確定爲什麼這是封閉的,因爲bash腳本編程當然是編程的。即使它更多地涉及系統管理。但謝謝你的回答。 – 2012-01-08 23:55:38

+6

或者只傳遞--run或-R到mdadm。 – Hannes 2015-04-25 02:08:00

+0

+1給Hannes的評論。根據手冊頁: -R,--run 堅持認爲mdadm運行陣列,即使某些組件在另一個陣列或文件系統中似乎處於活動狀態 也是如此。通常mdadm會在 之前要求確認,包括陣列中的這些組件。此選項會導致該問題被按下。 – 2018-01-23 01:15:52

2

我運行一個m1.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

相關問題