Bagaimana cara membuat kembali AMI yang berfungsi dari snapshot pemulihan setelah pemadaman 8 Agustus?

11

Setelah pemadaman Amazon 8 Agustus , semua AMI (berbasis EBS) berhenti bekerja untuk banyak pengguna . Ini disebabkan oleh korupsi beberapa sektor dalam snapshot yang menjadi dasar AMI.

Namun, Amazon membuat snapshot pemulihan di mana masalah disk harus diperbaiki. Itu dinamai di sepanjang baris "Snapshot pemulihan untuk vol-xxxxxxxx".

Saya membuat AMI baru dari snapshot pemulihan yang berfungsi dengan baik, tetapi instans yang diluncurkan dari AMI baru ini tidak berfungsi: keadaan mereka adalah "Berjalan", tetapi saya tidak dapat ssh ke dalam mesin atau mengakses salah satu layanan web yang seharusnya berjalan di sana. Intinya begini (dari System Log, dapat diakses melalui konsol manajemen AWS):

EXT3-fs: sda1: couldn't mount because of unsupported optional features (240).

EXT2-fs: sda1: couldn't mount because of unsupported optional features (244).

Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(8,1)

Saya telah memasang volume yang dibuat dari snapshot pemulihan di server lain pada AWS, dan semuanya terlihat sangat normal. Sebagai contoh, fsck mengatakan:

$ sudo fsck -a /dev/xvdg
fsck from util-linux-ng 2.17.2
uec-rootfs: clean, 53781/524288 files, 546065/2097152 blocks

Dalam salah satu diskusi forum AWS, saya menemukan saran ini dari seseorang yang memiliki masalah serupa:

Pekerjaan di sekitar adalah membuat volume dari snapshot dan melampirkannya ke instance yang sedang berjalan, gunakan fsck --force untuk memaksa pemeriksaan sistem file dan setelah dihapus, Anda dapat membuat snapshot dan menggunakannya untuk AMI.

Tapi saya tidak tahu bagaimana cara memaksa fsck di Ubuntu (11.04):

$ sudo fsck --force /dev/xvdg
fsck from util-linux-ng 2.17.2
fsck.ext3: invalid option -- 'o'

Adakah yang tahu cara memaksa sistem file memeriksa volume di Ubuntu? Ada ide lain tentang cara meluncurkan instance kerja yang didasarkan pada snapshot pemulihan?

Saat ini sepertinya lebih cepat untuk memulai dari AMI Ubuntu yang bersih dan mengatur ulang semua layanan kami. :-( Tapi tentu saja saya lebih suka tidak melakukan itu jika ada cara untuk mendapatkan snapshot pemulihan untuk benar-benar berfungsi.

Jonik
sumber

Jawaban:

14

Saya mengalami masalah yang sama ketika mencoba menduplikasi mesin.

Masalahnya ternyata adalah kernel. Baik saat membuat AMI dan instance saya memilih default untuk gambar kernel.

Untuk mengatasi masalah ini, saya membuat ulang AMI menggunakan gambar kernel yang sama dengan contoh aslinya.

DCYorke
sumber
Untuk memperjelas, kernel image default tidak memiliki dukungan ext4, tetapi kernel yang digunakan untuk membangun AMI harus selalu digunakan.
DCYorke
Jika hanya snapshot yang tersisa, akan sangat sulit untuk pulih. Bisakah Anda menyarankan metode untuk mencadangkan metadata jenis ini (juga, kelompok keamanan dan data pengguna mana yang digunakan) dengan foto atau tempat lain?
Martijn Heemels
2

Bisakah Anda mencoba perintah berikut (opsi note -f bukannya --force): sudo fsck -f /dev/xvdg

Semoga ini membantu. Fred

fred
sumber
fsck -fmemang melakukan sesuatu yang lebih (tidak tahu persis apa; man fscktidak mengatakan apa-apa tentang itu), jadi +1. Tetapi bagaimanapun juga ini tidak menyelesaikan seluruh masalah; Saya membuat snapshot dan kemudian AMI dari volume fscked, dan meluncurkan sebuah instance dari itu, dan masih mendapatkan kesalahan "Kernel panik ... Tidak dapat me-mount root" di System Log.
Jonik
0

Saya tidak ingin menghabiskan lebih banyak waktu untuk bertarung dengan masalah AWS yang aneh, jadi saya membuat contoh bersih baru dari salah satu AMI resmi Ubuntu (dalam kasus saya ami-359ea941yang merupakan 32-bit EBS yang didukung gambar Ubuntu 11,04 di Ubuntu). eu-west-1 region), dan membuat ulang pengaturan server saya di sana.

Fakta bahwa saya dapat memasang volume yang dibuat dari snapshot pemulihan dalam instance baru membuat pengaturan ulang jauh lebih cepat. Sebagai contoh, saya melakukan sesuatu seperti cp -a /mnt/recovery/usr/local /usrmengembalikan banyak hal di bawah /usr/local.

Jadi dalam kasus saya cadangan pemulihan jauh dari tidak berguna karena saya dapat mengakses data pada mereka. Tapi tentu saja masih akan lebih baik untuk hanya membuat AMI dari snapshot dan terus menggunakan (contoh dari) yang seperti seluruh insiden tidak pernah terjadi. (Jangan ragu untuk menambahkan jawaban jika Anda tahu cara mencapainya!)

Jonik
sumber