Czy mogę zmienić główne urządzenie EBS w mojej instancji Amazon EC2?

107

Mam instancję Amazon EC2 obsługiwaną przez EBS. Chciałbym zmienić urządzenie główne w tej instancji. Czy możesz doradzić, jak najlepiej to zrobić?

Znajduję tylko dokumentację dotyczącą zmiany kilku atrybutów urządzeń blokowych, ale wydaje się, że nie obejmują one ustawienia go jako urządzenia głównego.

stożek
źródło

Odpowiedzi:

191

Tak, to jest bardzo łatwe:

  1. Zatrzymaj instancję.
  2. Odłącz główny wolumin EBS.
  3. Dołącz alternatywny wolumin EBS jako katalog główny: /dev/sda1
  4. Uruchom instancję.

Zakłada to oczywiście, że twój alternatywny wolumin EBS jest bootowalny - musi zawierać bootowalny obraz systemu operacyjnego.

Ośmiobitowy Guru
źródło
50
Kluczem jest „jako korzeń” - /dev/sda1rzeczywiście!
Aseem Kishore
6
Dzięki, to świetnie. Jedna trudność polega na tym, że DNS / IP może się zmienić, gdy tak się stanie, więc upewnij się, że zaktualizowałeś wszystkie DNS / elastyczne adresy IP i tak dalej. Spędziłem trochę czasu, próbując dowiedzieć się, dlaczego nie mogę się w to dłużej bawić i to był powód.
mrooney
14
Ani /dev/sdanie /dev/sda1działało dla mnie, ale /dev/xvdatak było.
bhspencer
9
Człowieku, to było przerażające. /dev/sda- nie zadziałało. /dev/sda1, dev/sdf- zadziałało, ale instancja się nie uruchomiła. /dev/xvdapracował.
Alex Fortuna
13
Nazwa, której powinieneś użyć, jest wynikiem tego polecenia: aws ec2 describe-instances --instance-id i-XXXXXXX | grep -i rootDeviceNamew moim przypadku/dev/xvda
Neoecos
43

Nie mam wystarczającej liczby rep, aby dodać komentarz do wybranej odpowiedzi, ale chcę zwrócić uwagę, że u mnie /dev/sda1nie zadziałało (nie załączyłem się jako root), ale użycie /dev/xvdadziałało (załączone jako root). Instancja jest jedną z nowszych instancji t2.micro korzystających z HVM.

byl83
źródło
Myślę, że maszyny, które są w VPC, same nazwy urządzeń w formacie / dev / xv * działają i nie musisz podawać nazw w formacie / dev / sd *. To jest obserwacja - nie jestem ekspertem, aby powiedzieć to z całą pewnością.
Mayank Jaiswal,
Mam instancję pasującą do tego opisu, która nie może się uruchomić („Nie można znaleźć urządzenia głównego”) po odłączeniu i ponownym podłączeniu urządzenia głównego. Chcę wypróbować tę odpowiedź, ale jeśli jej nie dołączę, ponieważ /dev/sda1AWS odmawia uruchomienia mojej instancji. Czy jest jakieś inne ustawienie, które muszę skonfigurować, aby używać alternatywnej nazwy urządzenia głównego?
Jack O'Connor
/ dev / sda1 dla systemu Linux / dev / xvda dla systemu Windows
Luis
Whoopse, upewnij się, że zidentyfikowałeś partycję, / dev / sda 1 , /dev/sdajest nieprawidłowa, ale /dev/sda1jest w porządku.
ThorSummoner
16

Aby rozwinąć komentarz Diomidisa Spinellisa w wątku komentarzy zaakceptowanej odpowiedzi, ważne jest, aby sprawdzić etykietę systemu plików urządzenia, na które próbujesz się przełączyć jako nowe urządzenie główne. Podczas rozwiązywania problemów z własną migracją serwera musiałem wykonać następujące czynności przed uruchomieniem mojej instancji:

Użyj e2labelpolecenia, aby zmienić etykietę w systemie plików ext2 / ext3 / ext4, który utworzyłeś dla nowego urządzenia głównego.

Najpierw sprawdź etykietę systemu plików dla twojego obecnego urządzenia głównego.

$ sudo e2label /dev/xvda1
cloudimg-rootfs

Ustaw nowe urządzenie tak, aby miało tę samą etykietę systemu plików.

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

W moim przypadku była to etykieta cloudimg-rootfs. Czasami po prostu będzie /.

Ważne jest, aby zrozumieć, jak działa e2label; sprawdź man e2labelswój komputer lub odwiedź http://linux.die.net/man/8/e2label, aby uzyskać więcej informacji.

Joey
źródło
1
Jest to tak niezwykle ważne, że nie mogę zrozumieć, dlaczego ta odpowiedź nie jest częściej spotykana.
ays0110
3

To jest rozwiązanie sugerowane przez aws. Wolumin główny można odłączyć od oryginalnej instancji po jej zatrzymaniu. Wolumin główny jest dołączony do / dev / sda1. Po odłączeniu dołącz go do nowej instancji. Po podłączeniu woluminu może być konieczne zamontowanie go z poziomu systemu operacyjnego. Po zamontowaniu powinieneś zobaczyć zawarte w nim dane.

Po dodaniu nowego klucza możesz go odłączyć i podłączyć do oryginalnej instancji w / dev / sda1.

Proponuję stworzyć migawkę woluminu głównego przed wprowadzeniem jakichkolwiek zmian.

Przed wypróbowaniem jakichkolwiek rozwiązań po prostu wypróbuj w nieistotnych przypadkach lub wystąpieniach spotowych

yunus
źródło
1

Jeśli chcesz to zrobić za pośrednictwem CloudFormation, musisz wykonać następujące czynności:

  1. Utwórz migawkę z istniejącego woluminu głównego (przez konsolę lub CLI)
  2. Utwórz nowy AMI z tej migawki - zwiększ tutaj rozmiar woluminu głównego, upewnij się, że wybrałeś prawidłowy czas wirtualizacji (parawirtualny lub HVM).
  3. W zasobach AWS :: EC2 :: Instance ustaw parametr ImageId na nowo utworzony AMI

Rozłóż swój stos. Spowoduje to odtworzenie Twojej instancji, więc upewnij się, że używasz elastycznego adresu IP lub masz dostęp do DNS.

Powodem, dla którego musisz zastosować to obejście, jest to, że CF nie pozwala na dostosowanie rozmiaru woluminu głównego na EC2 BlockDeviceMappings ani na dostosowanie SnapshotId woluminu głównego.

Joe Alamo
źródło
0

Kiedy wolumen jest zamontowany, otrzymuje post-fix z numerami, np .: kiedy /dev/sdajest zamontowany, jest montowany w /dev/sda1, /dev/sda2zależności od partycji, które tworzysz. Ponieważ montujemy samo urządzenie root, zakłada się, że urządzenie jest już zamontowane, więc musimy dać/dev/sda1 za zamontowanie woluminu jako urządzenie główne. Uwaga: nie powinien być dołączony żaden wolumin główny.

Wykonaj następujące kroki: 1) Przejdź do swoich woluminów, wybierz dołącz woluminy z akcji. 2) Wybierz swoją instancję 3) Aby zamontować jako root, podaj nazwę urządzenia jako /dev/sda1 4) Uruchom instancję.

Prashanth
źródło