從使用 ec2-consistent-snapshot 拍攝的快照中恢復 Amazon EBS RAID0 陣列
我在 Amazon EC2 上配置了一個新的 MySQL 伺服器,並決定將我的數據儲存在 EBS RAID0 陣列上。到目前為止一切順利,我已經測試了使用 ec2-consistent-snapshot 為這些設備拍攝快照,非常棒。
現在,您如何從這些快照中快速地在新實例上重建陣列?
當您使用 ec2-consistent-snapshot 創建多個卷的快照時,您無法確定 RAID 中的每個設備使用了哪個卷。我可能完全錯了,但是由於您要跨卷條帶化數據,因此您必須將每個新卷放在 RAID 上與創建快照的捲相同的位置。
一個例子:
- RAID0 配置中的 3x200gb 卷。
- vol-1 是 RAID 中的 /dev/sdh 設備 0
- vol-2 是 RAID 中的 /dev/sdh1 設備 1
- vol-3 是 RAID 中的 /dev/sdh2 設備 2
您使用以下命令創建 ec2 快照:
ec2-consistent-snapshot <options> vol-1 vol-2 vol-3
。您現在有 3 個快照,追溯它們是哪個設備的唯一方法是查看源卷 id,然後查看源卷 id 安裝在實例上的哪個設備,然後檢查 RAID 的詳細資訊源卷的實例上的配置。
這顯然是令人難以置信的手動……而且速度不快(如果另一個失敗,這顯然很難快速啟動一個新的 mysql 實例。更不用說,您當時必須在 RAID 上記錄設備位置快照,因為如果源卷實例崩潰,您將無法進入 RAID 配置)。
所以,總而言之:
- 我是否遺漏了 ec2-consistent-snapshot 和軟體 RAID0 陣列的工作方式?
- 如果沒有,是否有任何已知的解決方案/最佳實踐來解決不知道快照屬於 RAID 陣列中的哪個設備/位置的問題?
我希望這很清楚,並感謝您的幫助!
由於您要跨卷條帶化數據,因此您必須將每個新卷放在 RAID 上與創建快照的捲相同的位置。
我測試了您的前提,並且看起來合乎邏輯,但觀察結果並非如此。
讓我詳細說明一下:
我的要求與您完全相同。但是,我使用的 RAID0 只有 2 個卷。
我正在使用 Ubuntu 10 並有 2 個 EBS 設備形成一個用 XFS 格式化的 RAID0 設備。
raid0 設備正在使用以下命令創建:
sudo mdadm --create /dev/md0 --level 0 --metadata=1.1 --raid-devices 2 /dev/sdg /dev/sdh
我已經安裝了 MYSQL 和許多其他配置為使用 /dev/md0 來儲存其數據文件的軟體。
使用相同的捲:一旦完成,我會解除安裝所有內容,停止 Raid 並像這樣重新組裝它:
sudo mdadm --assemble /dev/md0 /dev/sdh /dev/sdg
問題是,無論 RAID 的順序如何/dev/sdg /dev/sgh
,RAID 都會正確地重組自身。使用快照:發布這個,我用來
ec2-consistent-snapshot
一起創建 2 個 EBS 磁碟的快照。然後我從這個磁碟創建卷,將它附加到一個新實例(已經為軟體配置),重新組裝 RAID(我也嘗試過交換 EBS 卷的順序),掛載它,我準備好了去。聽起來很奇怪,但它確實有效。