Dapatkah saya mengubah perangkat root EBS dari instans EC2 amazon saya?

107

Saya memiliki instans Amazon EC2 yang didukung EBS. Saya ingin mengubah perangkat root pada contoh ini. Bisakah Anda memberi tahu cara terbaik untuk melakukannya?

Saya hanya menemukan dokumentasi tentang mengubah beberapa atribut perangkat blok, tetapi tampaknya tidak menyertakan pengaturannya sebagai perangkat root.

kerucut
sumber

Jawaban:

191

Ya, itu sangat mudah:

  1. Hentikan contoh.
  2. Lepaskan volume root EBS.
  3. Pasang volume EBS alternatif sebagai root: /dev/sda1
  4. Mulai instance.

Ini mengandaikan bahwa volume EBS alternatif Anda dapat di-boot, tentu saja - harus berisi gambar OS yang dapat di-boot.

Guru Delapan-Bit
sumber
50
Kuncinya adalah "sebagai root" - /dev/sda1memang!
Aseem Kishore
6
Terima kasih, ini bagus. Salah satu alasannya adalah bahwa DNS / IP dapat berubah ketika ini terjadi, jadi pastikan untuk memperbarui DNS / IP Elastis apa pun, dan sebagainya. Saya menghabiskan waktu untuk mencoba mencari tahu mengapa saya tidak bisa melakukannya lagi, dan ini adalah alasannya.
mrooney
14
Tidak /dev/sdajuga tidak /dev/sda1berhasil untuk saya, tetapi /dev/xvdaberhasil.
bhspencer
9
Astaga, itu menakutkan. /dev/sda- tidak berhasil. /dev/sda1, dev/sdf- berfungsi, tetapi instance tidak bisa boot. /dev/xvdabekerja.
Alex Fortuna
13
Nama yang harus Anda gunakan adalah hasil dari perintah ini: aws ec2 describe-instances --instance-id i-XXXXXXX | grep -i rootDeviceNamedalam kasus saya/dev/xvda
Neoecos
43

Saya tidak memiliki cukup perwakilan untuk menambahkan komentar ke jawaban yang dipilih, tetapi saya ingin menunjukkan bahwa bagi saya, /dev/sda1tidak berfungsi (tidak melampirkan sebagai root), tetapi menggunakan /dev/xvdabekerja (terlampir sebagai root). Instance ini adalah salah satu t2.micro terbaru yang menggunakan HVM.

byl83
sumber
Saya pikir mesin yang ada di VPC, nama perangkat dengan format / dev / xv * sendiri berfungsi dan Anda tidak perlu memberikan nama dalam format / dev / sd *. Ini adalah pengamatan - saya bukan ahli untuk mengatakan ini dengan percaya diri.
Mayank Jaiswal
Saya memiliki contoh yang cocok dengan deskripsi ini, yang tidak dapat melakukan boot ("Tidak dapat menemukan perangkat root") setelah melepaskan dan memasang kembali perangkat root. Saya ingin mencoba jawaban ini, tetapi jika saya tidak melampirkannya /dev/sda1maka AWS menolak untuk memulai instans saya. Apakah ada pengaturan lain yang perlu saya konfigurasikan untuk menggunakan nama perangkat root alternatif?
Jack O'Connor
/ dev / sda1 untuk Linux / dev / xvda untuk Windows
Luis
whoopse, pastikan untuk mengidentifikasi partisi, / dev / sda 1 , /dev/sdatidak valid tetapi /dev/sda1baik-baik saja.
ThorSummoner
16

Untuk menguraikan komentar Diomidis Spinellis di utas komentar jawaban yang diterima, penting untuk memeriksa label sistem file dari perangkat yang Anda coba untuk beralih sebagai perangkat root baru Anda. Saat memecahkan masalah migrasi server saya sendiri, saya harus melakukan hal berikut sebelum instance saya melakukan boot:

Gunakan e2labelperintah untuk mengubah label pada sistem file ext2 / ext3 / ext4 yang telah Anda buat untuk perangkat root baru Anda.

Pertama, periksa label sistem file untuk perangkat root Anda saat ini.

$ sudo e2label /dev/xvda1
cloudimg-rootfs

Setel perangkat baru agar memiliki label sistem file yang sama.

$ sudo e2label /dev/xvdg 'cloudimg-rootfs'

Dalam kasus saya, labelnya adalah cloudimg-rootfs. Terkadang memang begitu /.

Penting untuk memahami cara kerja e2label; periksa man e2labelmesin Anda atau kunjungi http://linux.die.net/man/8/e2label untuk informasi lebih lanjut.

Joey
sumber
1
Ini sangat penting, saya tidak mengerti mengapa jawaban ini tidak lebih umum ditemukan.
ays0110
3

Ini adalah solusi yang disarankan aws. Anda dapat melepaskan volume root dari instance asli setelah menghentikannya. Volume root dipasang di / dev / sda1. Setelah ini terlepas, harap lampirkan ke instance baru. Setelah volume terpasang, Anda mungkin harus memasangnya dari OS. Setelah dipasang, Anda akan melihat data di dalamnya.

Setelah Anda selesai menambahkan kunci baru, Anda dapat melepaskannya dan melampirkan ke instance asli di / dev / sda1.

Saya sarankan untuk membuat snapshot dari volume root sebelum membuat perubahan apa pun.

Sebelum mencoba solusi apa pun, coba saja dalam contoh yang tidak penting atau contoh spot

yunus
sumber
1

Jika Anda ingin melakukan ini melalui CloudFormation, Anda perlu melakukan hal berikut:

  1. Buat snapshot dari volume root yang ada (melalui konsol atau CLI)
  2. Buat AMI baru dari snapshot ini - tingkatkan ukuran volume root di sini, pastikan Anda memilih waktu virtualisasi yang benar (paravirtual atau HVM).
  3. Di sumber daya AWS :: EC2 :: Instance Anda, setel parameter ImageId ke AMI baru yang baru saja Anda buat

Terapkan tumpukan Anda. Ini akan membuat ulang instance Anda, jadi pastikan Anda menggunakan alamat Elastic IP atau memiliki akses DNS.

Alasan Anda harus melakukan penyelesaian ini adalah karena CF tidak akan membiarkan Anda menyesuaikan ukuran volume root pada EC2 BlockDeviceMappings, atau untuk menyesuaikan SnapshotId dari Volume Root.

Joe Alamo
sumber
0

Ketika volume Anda dipasang, itu mendapat perbaikan pasca dengan angka, misalnya: ketika /dev/sdadipasang, dipasang /dev/sda1, /dev/sda2tergantung pada partisi yang Anda buat. Saat kami memasang perangkat root itu sendiri, itu mengasumsikan perangkat sudah terpasang, jadi kami perlu memberikan /dev/sda1untuk memasang volume sebagai perangkat root. Catatan: Seharusnya tidak ada volume root yang terpasang.

Ikuti langkah-langkah ini: 1) Pergi ke volume Anda, pilih lampirkan volume dari Tindakan. 2) Pilih instans Anda 3) Untuk memasang sebagai root, berikan nama perangkat sebagai /dev/sda1 4) Mulai instans Anda.

Prashanth
sumber