Ubuntu EC2 Raid0 Ephemeral – 重啟後的 SSH 連接
首先,我使用 Elestic AMI ami-c162a9a8 啟動一個全新的大型實例。最初,我執行:
df -h
/dev/xvda1 9.9G 814M 8.6G 9% / udev 3.7G 4.0K 3.7G 1% /dev tmpfs 1.5G 156K 1.5G 1% /run none 5.0M 0 5.0M 0% /run/lock none 3.7G 0 3.7G 0% /run/shm /dev/xvdb 414G 199M 393G 1% /mnt
貓 /etc/fstab
LABEL=cloudimg-rootfs / ext4 defaults 0 0 /dev/xvdb /mnt auto defaults,nobootwait,comment=cloudconfig 0 2
然後我執行這個腳本:
#!/bin/bash apt-get install -y mdadm --no-install-recommends # Configure Raid - take into account xvdb or sdb DRIVE=`df -h | grep -v grep | awk 'NR==2{print $1}'` if [ "$DRIVE" == "/dev/xvda1" ]; then DRIVE_1=/dev/xvdb DRIVE_2=/dev/xvdc else DRIVE_1=/dev/sdb DRIVE_2=/dev/sdc fi umount /mnt dd if=/dev/zero of=$DRIVE_1 bs=4096 count=1024 dd if=/dev/zero of=$DRIVE_2 bs=4096 count=1024 partprobe mdadm --create --verbose /dev/md0 --level=0 -c256 --raid-devices=2 $DRIVE_1 $DRIVE_2 echo DEVICE $DRIVE_1 $DRIVE_2 | tee /etc/mdadm.conf mdadm --detail --scan | tee -a /etc/mdadm.conf blockdev --setra 65536 /dev/md0 mkfs -t ext3 /dev/md0 mkdir -p /mnt/myraid && mount -t ext3 -o noatime /dev/md0 /mnt/myraid # Remove xvdb/sdb from fstab chmod 777 /etc/fstab sed -i '$ d' /etc/fstab # Make raid appear on reboot echo "/dev/md0 /mnt/myraid ext3 noatime 0 0" | tee -a /etc/fstab
腳本完成後,我再次執行:
df -h
/dev/xvda1 9.9G 815M 8.6G 9% / udev 3.7G 8.0K 3.7G 1% /dev tmpfs 1.5G 164K 1.5G 1% /run none 5.0M 0 5.0M 0% /run/lock none 3.7G 0 3.7G 0% /run/shm /dev/md0 827G 201M 785G 1% /mnt/myraid
貓 /etc/fstab
LABEL=cloudimg-rootfs / ext4 defaults 0 0 /dev/md0 /mnt/myraid ext3 noatime 0 0
當我重新啟動盒子時,我收到錯誤:
port 22: Connection refused
. 當我嘗試調試腳本時,我發現在此命令之後停止mkdir -p /mnt/myraid && mount -t ext3 -o noatime /dev/md0 /mnt/myraid
,重新啟動,然後嘗試手動掛載給我這個錯誤:special device /dev/md0 does not exist
。我在這裡一片黑暗,這是怎麼回事?編輯:
在我突襲並安裝後(但沒有修改 /etc/fstab),我執行:
mdadm -D /dev/md0
/dev/md0: Version : 1.2 Creation Time : Mon Dec 19 06:13:44 2011 Raid Level : raid0 Array Size : 880730112 (839.93 GiB 901.87 GB) Raid Devices : 2 Total Devices : 2 Persistence : Superblock is persistent Update Time : Mon Dec 19 06:13:44 2011 State : clean Active Devices : 2 Working Devices : 2 Failed Devices : 0 Spare Devices : 0 Chunk Size : 256K Name : ip-10-91-18-80:0 (local to host ip-10-91-18-80) UUID : 36946c0e:db95eb34:bf22c078:45958378 Events : 0 Number Major Minor RaidDevice State 0 202 16 0 active sync /dev/xvdb 1 202 32 1 active sync /dev/xvdc
然後我重新啟動並執行:
mdadm –assemble /dev/md0 /dev/xvdb /dev/xvdc:
mdadm: cannot open device /dev/xvdb: Device or resource busy mdadm: /dev/xvdb has no superblock - assembly aborted
我也試過:
mdadm –assemble –scan
mdadm: No arrays found in config file or automatically
當我詳細說明時:
mdadm –assemble –scan –verbose
mdadm: looking for devices for /dev/md0 mdadm: cannot open device /dev/xvdb: Device or resource busy mdadm: /dev/xvdb has wrong uuid. mdadm: cannot open device /dev/xvdc: Device or resource busy mdadm: /dev/xvdc has wrong uuid.
通常,該
mdadm.conf
文件將包含在啟動時重新組裝陣列所需的資訊。特別重要的是該文件中包含的 UUID - 它必須與您的數組匹配(使用 找到它mdadm -D /dev/md0
)。如果沒有任何問題,您可以選擇重命名 mdadm.conf 文件並使用
dpkg-reconfigure mdadm
陣列中的正確資訊重新生成它。這個主題的主題值得一讀。
為了使您的掛載成功,您通常需要:
- 載入 md 模組(使用 modprobe md(或 raid0 代替 md)或將其添加到 /etc/modules)
- 組裝數組,例如:
mdadm --assemble /dev/md0 /dev/xvdb /dev/xvdc
(或者,用於
--scan
組裝所有,而不是指定一個數組)如果一切都失敗了,您可以將上述內容添加到初始化腳本中,以便在啟動時組裝陣列。
由於安裝取決於設備 (md0) 的存在,您可能需要添加
nobootwait
到 fstab(或者,將安裝移動到執行 assemble 命令的腳本中)。