2010-01-17 15 views

Odpowiedz

78

Możesz przeprowadzić migrację działającej instancji do AMI wspieranego przez EBS. Oto jak to zrobiłem:

  • uruchomić regularną S3 AMI kopii instancji (albo ponieważ już mam instancję jesteś zadowolony, że używać)
  • Złóż objętość EBS tej samej wielkości jako główną partycję sda1 (obecnie domyślną wartością jest 10G dla m1.small i prawdopodobnie innymi)
  • Dołącz wolumin EBS do wolnego urządzenia blokowego na instancji za pomocą konsoli internetowej lub narzędzi wiersza poleceń (np./dev/sdd)
  • Zatrzymaj usługi w instancji (np. /etc/init.d/mysql stop itp.)
  • kopiowania ulotne objętość głównego do objętości EBS:

dd bs = 65536 if =/dev/sda1 z =/odchylenie/SDD

  • sprawdzić objętość EBS dla spójności:

fsck/dev/SDD

  • montażu objętość EBS na przykład:

mocowanie/odchylenie/SDD/root/EBS obj

  • usunąć wejścia/mnt z fstab na Twoje EBS vol:

vim/root/EBS obj/itp/fstab

  • Unmout objętości EBS:

odmontowana/odchylenie/SDD

  • utworzyć migawkę wolumin EBS przy użyciu konsoli zarządzania AWS (lub narzędzi interfejsu API wiersza poleceń)
  • Zanotuj t on migawki id
  • rejestracja obrazu migawki z AWS i zapoznanie się z id AMI produkowanego przy rejestracji należy pamiętać, aby określić obraz jądra i ramdysku (te powinny być takie same jak te wykorzystywane w bieżącej instancji):

EC2 zarejestrować -s snap-12345 -a i386 -d "opis AMI" -n "name-of-obrazie" -k aki-12345 -r ari-12345

  • Do utworzyć instancję z więcej niż 10G pamięci trwałej, musisz użyć narzędzi cli. na przykład dla 20G

ec2-run-instances ami-54321 -t m1.mały -n 1 -g domyślny --availability-zone = eu-west-1a -k EC2-klucz1 -b/dev/sda1 = snap-12345: 20: false

  • Jeśli rozruchu przykład na podstawie jednego z tych Amis z> domyślny rozmiar objętość, po jego uruchomieniu można zrobić Resize internetowego systemu plików:

resize2fs/dev/sda1

+2

+1 ładne instrukcje, chociaż nie sądzę, że to, co PO chce. – kdgregory

+1

Dziękuję bardzo za wyczerpującą odpowiedź. To świetnie – Sug

+3

Zasadniczo zrobiliśmy to samo, ale użyliśmy rsync z wykluczeniami zamiast dd, działaliśmy też jak czar. Jeszcze jedna rzecz do załatwienia (wiem, że to oczywiste, ale zdarza się to w kółko): podczas tworzenia woluminu EBS upewnij się, że jest on sprawny w tym samym regionie co instancja, do której chcesz go dołączyć; -) –

0

W miejsce drugiego długim komentarzu tutaj użyłem następujące polecenie, aby to zrobić:

EC2 zarejestrować --snapshot przystawki 9eb4ecf6 --architecture i386 - nazwa "Zenoss Enterprise 3.0 beta 2 na centOS" - opis "To jest z instalacji zenoss core beta 1 i zenoss enterprise beta 2, obie wersji 3.0 (lub wewnętrznie 2.5.70 217). Dodano moduł blokowania ebs, a system plików został zsynchronizowany, a następnie ebs został zarchiwizowany i jest to oparte na tym. "- root-device-name/dev/sda1 --kernel aki-9b00e5f2

13

można to zrobić bez tworzenia nowego AMI i bez uruchamiania nowa instancja. Kiedy to zrobi, pierwotny wolumin root pozostanie podłączony na/dev/sda1 (lub gdziekolwiek był oryginalnie zamontowany./Dev/sda1 jest domyślnym dla wielu AMI). Pierwotny wolumin główny nie zostanie podłączony do systemu plików - musisz to zrobić samodzielnie za pomocą polecenia "mount".

Technika wymaga najnowszych jąder Ubuntu, tych, które działają w wersjach 10.04 i 10.10. Aby uzyskać najnowsze identyfikatory AMI dla tych wydań Ubuntu, sprawdź numer alestic.com. Te najnowsze jądra są skonfigurowane do uruchamiania z dowolnego podłączonego urządzenia, którego etykieta woluminu to "uec-rootfs". Jeśli używasz jednego z tych jąder, wszystko, co musisz zrobić, to zmienić etykietę woluminu bieżącego (root-store) woluminu root na coś innego, zmienić etykietę woluminu nowego katalogu root na uec-rootfs, a następnie zrestartować komputer. Jeśli nie używasz jednego z tych ziaren, nie możesz użyć tej techniki.

Oto kod. Umieścić to w pliku (reroot.sh) na przykład:

#! /bin/bash 
device=$1 
# change the filesystem labels 
e2label /dev/sda1 old-uec-rootfs 
e2label $device uec-rootfs 

Pierwszy byś dołączyć głośność EBS chcesz działać jako nowy korzeń jednego z dostępnych urządzeń /dev/sdf../dev/sdp. Można to zrobić za pomocą bezpośrednich wywołań API EC2, z EC2 Command Line API tools (wolumin przyłączenia ec2) lub z biblioteką, taką jak boto lub za pomocą interfejsu użytkownika konsoli zarządzania AWS.

Następnie uruchom reroot.sh skrypt jako root, i dostarczyć urządzenie, do którego dołączony nowy tom głównego w następujący sposób:

sudo reroot.sh /dev/sdp 

Będzie to zrobić brudną robotę.Następnie wystarczy ponownie uruchomić komputer:

sudo shutdown -r now 

Altówka.

Aby to sprawdzić, należy utworzyć wolumin EBS, o którym wiadomo, że zostanie poprawnie uruchomiony. Lubię to zrobić, snapshotując główny wolumen AMI wspieranych przez EBS z wyżej wymienionych AMI Ubuntu. Z tej migawki można utworzyć nowy, rozruchowy wolumin EBS w dowolnej strefie dostępności. Upewnij się, że można odróżnić pierwotnej objętości głównego uruchomionej instancji i nowego tomu głównego EBS - przed uruchomieniem procedury reroot powyżej można umieścić w „znacznika” pliku na starym objętości root:

cd 
touch this-is-the-original-root-volume 

Następnie, po ponownym uruchomieniu i ponownym uruchomieniu komputera, jeśli plik ten istnieje w katalogu domowym, nadal działa z oryginalnym woluminem głównym. Jeśli go tam nie ma, uruchomiono ponowne uruchomienie i ponowne uruchomienie.

Oto dwa przypadki użycia tego przykładem techniki, z gruntownych wyjaśnień:

http://shlomoswidler.com/2011/02/play-chicken-with-spot-instances.html

http://shlomoswidler.com/2011/02/recapture-unused-ec2-minutes.html

+1

+1, i dziękuję za sporządzenie notatki o mojej odpowiedzi ... została ona teraz usunięta. – kdgregory