2012-01-03 9 views
5

Tôi muốn tập lệnh phân tách hai thiết bị lưu trữ tạm thời trên m1.large EC2 instances bằng mdadm (dường như amis không bao giờ bao gồm thông tin thiết bị, vì vậy tôi có thể ' t chỉ tạo một ami mới khi mảng được bắt đầu).scripting mdadm khi một thiết bị thành phần có thể chứa hệ thống tệp ext2 đã là

Vấn đề là, lưu trữ phù du trên EC2 thường đi kèm định dạng sẵn với một hệ thống tập tin, gây mdadm nói:

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? 

Và chờ đợi cho đầu vào. Tôi chắc rằng có một cách để tự động trả lời có cho các loại nhắc nhở trong mdadm cho các tình huống không tương tác (như trong fsck -y ví dụ) nhưng tôi dường như không thể tìm ra nó (nó không phải là --force). Tôi biết tôi chỉ có thể ra khỏi các thiết bị bằng cách sử dụng dd nhưng điều đó có vẻ là một giải pháp thay vì sledgehammer-ey cho một cái gì đó tôi chắc chắn là dễ dàng thực hiện.

Trả lời

7

Bạn đã thử đường ống trong đầu ra của lệnh "yes" chuẩn Unix/Linux chưa?

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

Chỉ sử dụng này nếu bạn biết rằng bạn muốn trả lời "có" cho bất kỳ câu hỏi mdadm thể yêu cầu bạn.

Đây là phương pháp tôi sử dụng trong mdadm mẫu của tôi lệnh để thiết lập một hệ thống tập tin 40 TB sử dụng khối lượng RAID-0 EBS: http://alestic.com/2009/06/ec2-ebs-raid

+1

Cảm ơn. Tôi không chắc chắn lý do tại sao điều này đã được đóng cửa như bash scripting chắc chắn là lập trình. Ngay cả khi nó liên quan nhiều hơn đến quản trị hệ thống nói chung. Nhưng cảm ơn câu trả lời của bạn. –

+6

Hoặc chỉ cần vượt qua --run hoặc -R để mdadm. – Hannes

+0

+1 nhận xét của Hannes. Theo trang người đàn ông: -R, --run Nhấn mạnh mdadm đó chạy mảng, ngay cả khi một số thành phần có vẻ hoạt động trong một mảng hoặc hệ thống tệp khác. Thông thường mdadm sẽ yêu cầu xác nhận trước bao gồm các thành phần như vậy trong một mảng. Tùy chọn này làm cho câu hỏi đó được sup‐ được nhấn. –

2

tôi chạy một kịch bản khi khởi động của một m1.largem1.xlarge trường hợp đó thực hiện xóa đĩa (RAID-0). Dưới đây là một phiên bản đơn giản (giả sử nó 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 

Để trả lời câu hỏi của bạn, như đã đề cập, bạn có thể chỉ đường ống yes