Чи можна змінити кореневий пристрій EBS мого примірника Amazon EC2?


107

У мене є приклад, підтримуваний EBS Amazon EC2. Я хотів би змінити кореневий пристрій у цьому випадку. Чи можете ви порадити, як краще це зробити?

Я знаходжу лише документацію про зміну декількох атрибутів блокових пристроїв, але вони, схоже, не включають в себе налаштування як кореневого пристрою.

Відповіді:


191

Так, це просто мертво:

  1. Зупиніть екземпляр.
  2. Від'єднайте кореневий обсяг EBS.
  3. Додайте до кореня альтернативний об'єм EBS: /dev/sda1
  4. Запустіть екземпляр.

Це передбачає, що ваш альтернативний об'єм EBS є завантажувальним, звичайно - він повинен містити завантажувальне зображення ОС.


50
Ключ - «як корінь» - /dev/sda1справді!
Асеем Кішор

6
Спасибі, це чудово. Один з моментів полягає в тому, що DNS / IP може змінюватися, коли це відбувається, тому обов'язково оновлюйте будь-які IP-адреси DNS / Elastic та ін. Я витратив деякий час, намагаючись з'ясувати, чому я більше не можу вступити в це, і це було причиною.
mrooney

13
Ні для мене, /dev/sdaні /dev/sda1для мене не працювало, але /dev/xvdaзробив.
bhspencer

8
Людина, це було страшно. /dev/sda- не працювало. /dev/sda1, dev/sdf- працював, але екземпляр не завантажувався. /dev/xvdaпрацювали.
Алекс Фортуна

13
Ім'я, яке вам слід використовувати, є результатом цієї команди: aws ec2 describe-instances --instance-id i-XXXXXXX | grep -i rootDeviceNameв моєму випадку/dev/xvda
Neoecos

42

У мене немає достатньої кількості представників, щоб додати коментар до вибраної відповіді, але я хочу зазначити, що для мене /dev/sda1він не працював (не вкладав як root), а використовував, що /dev/xvdaпрацював (додається як root). Екземпляр є одним із нових t2.micro, що використовують HVM.


Я думаю, що машини, які знаходяться у VPC, назви пристроїв формату / dev / xv * самі працюють, і вам не потрібно давати імена у форматі / dev / sd *. Це спостереження - я не експерт, щоб сказати це впевнено.
Mayank Jaiswal

У мене є екземпляр, відповідний цьому опису, який не може завантажитися ("Неможливо знайти кореневий пристрій") після від'єднання та повторного приєднання кореневого пристрою. Я хочу спробувати цю відповідь, але якщо я не прикріплюю її як /dev/sda1тоді, AWS відмовляється запускати мій екземпляр. Чи потрібні інші налаштування, щоб використовувати альтернативне ім'я кореневого пристрою?
Джек О'Коннор

/ dev / sda1 для Linux / dev / xvda для Windows
Луїс

whoopse, переконайтеся, що ідентифікувати розділ, / dev / sda 1 , /dev/sdaнедійсний, але /dev/sda1добре.
ThorSummoner

16

Щоб детальніше розповісти про коментар Діомідіс Спінеліс у потоці коментарів прийнятої відповіді, важливо перевірити мітку файлової системи пристрою, до якого ви намагаєтесь увімкнути свій новий кореневий пристрій. Під час усунення міграції власного сервера я повинен був зробити наступне, перш ніж мій екземпляр завантажиться:

Використовуйте e2labelкоманду, щоб змінити мітку файлової системи ext2 / ext3 / ext4, яку ви створили для нового кореневого пристрою.

Спочатку перевірте мітку файлової системи для вашого поточного кореневого пристрою.

$ sudo e2label /dev/xvda1
cloudimg-rootfs

Встановіть новий пристрій таким же міткою файлової системи.

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

У моєму випадку етикетка була cloudimg-rootfs. Іноді це просто буде /.

Важливо зрозуміти, як працює e2label; перевірте man e2labelсвою машину або відвідайте http://linux.die.net/man/8/e2label для отримання додаткової інформації.


1
Це так неймовірно важливо, я не можу зрозуміти, чому ця відповідь не зустрічається частіше.
ays0110

3

Це рішення, запропоноване Aws. Ви можете від'єднати кореневий об'єм від початкового примірника після його зупинки. Об'єм кореня додається в / dev / sda1. Як тільки це буде відменено, додайте його до нового примірника. Після додавання гучності, можливо, доведеться встановити його з ОС. Після встановлення ви повинні побачити дані всередині нього.

Після додавання нового ключа ви можете від'єднати його та приєднати до початкового примірника за адресою / dev / sda1.

Я пропоную створити знімок кореневого тома, перш ніж вносити будь-які зміни.

Перш ніж спробувати будь-які рішення, просто спробуйте у не важливих екземплярах чи точкових екземплярах


1

Якщо ви хочете зробити це через CloudFormation, вам потрібно буде зробити наступне:

  1. Створіть знімок із наявного кореневого тома (через консоль чи CLI)
  2. Створіть новий AMI з цього знімка - збільште розмір кореневого обсягу тут, переконайтесь, що ви вибрали правильний час віртуалізації (паравіртуальний або HVM).
  3. На ресурсі AWS :: EC2 :: Instance встановіть параметр ImageId на новий недавно створений AMI

Розгорніть свій стек. Це відновить ваш примірник, тому переконайтеся, що ви використовуєте еластичну IP-адресу або маєте доступ до DNS.

Причина, з якої вам доведеться це вирішити, полягає в тому, що CF не дозволить вам регулювати розмір гучності кореня на EC2 BlockDeviceMappings або коригувати SnapshotId of Root Volume.


0

Коли ваш об'єм змонтований, він отримує пост-виправлення з цифрами, наприклад: коли /dev/sdaвін змонтований, він встановлюється так, як /dev/sda1, /dev/sda2залежить від створених вами розділів. Оскільки ми монтуємо сам кореневий пристрій, він передбачає, що пристрій вже змонтований, тому нам потрібно надати /dev/sda1для монтажу гучності як кореневий пристрій. Примітка. Не має додаватися жодної кореневої томи.

Виконайте наступні дії: 1) Перейдіть до своїх томів, виберіть «Приєднати томи» в розділі «Дія». 2) Виберіть свій примірник 3) Для монтажу як корінця вкажіть ім’я пристрою як /dev/sda1 4) Запустіть свій примірник.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.