2015-07-06 32 views
5

Używałem instrukcji na temat https://matt.berther.io/2015/02/03/how-to-resize-aws-ec2-ebs-volumes/ i http://atodorov.org/blog/2014/02/07/aws-tip-shrinking-ebs-root-volume-size/, aby przejść do woluminu EBS przy mniejszej ilości miejsca na dysku. W obu przypadkach, kiedy załączeniu Termokurczliwe objętości EBS (jako/dev/xdva lub/dev/sda1, ani prace) do instancji EC2 i uruchomić go, zatrzymuje się na własną rękę z komunikatemDlaczego instancja EC2 nie uruchamia się poprawnie po zmianie rozmiaru woluminu root EBS?

State transition reason 
Client.InstanceInitiatedShutdown: Instance initiated shutdown 

Some więcej majstrowania i odkryłem, że nowy wolumin nie ma partycji rozruchowej BIOS. Użyłem więc gdisk, aby go utworzyć i skopiowałem MBR z oryginalnego woluminu (który działa i za pomocą którego mogę uruchomić instancje) do nowego woluminu. Teraz instancja nie kończy się, ale nie mogę ssh do nowo uruchomionej instancji.

Jaki może być tego powód? Jak mogę uzyskać więcej informacji (z logów/konsoli AWS itp.) Na temat tego, dlaczego tak się dzieje?

+0

jakiego os używasz do swojej maszyny? czy masz coś w konsoli AWS EC2 -> Syslog? – Mircea

+0

Amazon Linux i konsola AWS EC2 była pusta. –

Odpowiedz

2

Problem dotyczył partycji rozruchowej systemu BIOS. Byłem w stanie rozwiązać ten problem, najpierw inicjując instancję z mniejszym woluminem EBS. Następnie odłączenie woluminu i dołączenie go do instancji, której użyjemy, spowoduje skopiowanie zawartości z większej objętości o mniejszej objętości. To stworzyło partycję rozruchową BIOS-u, która faktycznie działa. Po prostu tworzenie nowego i kopiowanie partycji rozruchowej nie działa.

Teraz postępując zgodnie z krokami opisanymi w jednym z dwóch linków, pomożecie zmniejszyć objętość root EBS.

3

Aby pomniejszyć GPT rozdzielono startowy wolumin EBS poniżej 8GB że standardowe obrazy zdają się wykorzystywać można wykonać następujące czynności: (nieznaczny odmianę metody dd od https://matt.berther.io/2015/02/03/how-to-resize-aws-ec2-ebs-volumes/)

dysk źródłowy jest /dev/xvdf, cel jest /dev/xvdg

  1. partycji źródło skurczowa

    $ sudo e2fsck -f /dev/xvdf1 
    $ sudo resize2fs -M /dev/xvdf1 
    

    Will pr int coś

    resize2fs 1.42.12 (29-Aug-2014) 
    Resizing the filesystem on /dev/xvdf1 to 257491 (4k) blocks. 
    The filesystem on /dev/xvdf1 is now 257491 (4k) blocks long. 
    

    konwertowane to do MB, czyli 257491 * 4/1024 ~ = 1006 MB

  2. kopia powyżej wielkości + trochę więcej od urządzenia (!), a nie tylko podzielić się partycji, ponieważ obejmuje zarówno tablica partycji & danych w partycji rozruchowej

    $ sudo dd if=/dev/xvdf of=/dev/xvdg bs=1M count=1100 
    
  3. teraz używać gdisk naprawić partycję GPT na nowym dysku

    $ sudo gdisk /dev/xvdg 
    

    Będziesz witany z grubsza

    GPT fdisk (gdisk) version 0.8.10 
    
    Warning! Disk size is smaller than the main header indicates! Loading 
    secondary header from the last sector of the disk! You should use 'v' to 
    verify disk integrity, and perhaps options on the experts' menu to repair 
    the disk. 
    Caution: invalid backup GPT header, but valid main header; regenerating 
    backup header from main header.# 
    
    Warning! One or more CRCs don't match. You should repair the disk! 
    
    Partition table scan: 
        MBR: protective 
        BSD: not present 
        APM: not present 
        GPT: damaged 
    
    **************************************************************************** 
    Caution: Found protective or hybrid MBR and corrupt GPT. Using GPT, but disk 
    verification and recovery are STRONGLY recommended. 
    **************************************************************************** 
    
    Command (? for help): 
    

    Poniżej znajduje się klawiatura ciągu gdisk. Aby naprawić problemy, partycja danych, która jest obecna w skopiowanej tabeli partycji, musi zostać przeskalowana, aby zmieściła się na nowym dysku. Oznacza to, że należy go odtworzyć mniejszym, a jego właściwości należy ustawić tak, aby pasowały do ​​starej definicji partycji. nie testowałem go tak, to być może nie jest wymagane, aby przenieść tabelę zapasową do rzeczywistej końcu dysku, ale zrobiłem to tak czy inaczej:

    • przejść do dodatkowych opcji Ekspert: x
    • struktur danych kopii zapasowych przeprowadzić do koniec dysku: e
    • z powrotem do głównego menu: m

    teraz do ustalania rozmiaru partycji

    • druku i zauważyć pewne właściwości partycji 1 (oraz inne partycje bez butów, jeśli takie istnieją):
      i
      1
      Will pokazać coś podobnego

      Partition GUID code: 0FC63DAF-8483-4772-8E79-3D69D8477DE4 (Linux filesystem) 
      Partition unique GUID: DBA66894-D218-4D7E-A33E-A9EC9BF045DB 
      First sector: 4096 (at 2.0 MiB) 
      Last sector: 16777182 (at 8.0 GiB) 
      Partition size: 16773087 sectors (8.0 GiB) 
      Attribute flags: 0000000000000000 
      Partition name: 'Linux' 
      
    • teraz usuwać
      d
      1 i odtwórz partycję
      n
      1
      Wprowadź wymagane parametry. Wszystkie domyślnie pracował dla mnie tutaj (= naciśnij enter), w razie wątpliwości patrz podzielić informacjami z powyższym

      • pierwszy sektor = 4096
      • ostatni sektor = cokolwiek jest rzeczywisty koniec nowego dysku - przyjąć domyślną tutaj
      • type = 8300 (Linux)
    • domyślna nazwa nowej partycji nie pasuje do starego. Więc go zmienić na oryginalnym Jeden
      c
      1
      Linux (patrz Partition name z góry)

    • Następną rzeczą do zmiany jest partycji GUID
      x
      c
      1
      DBA66894-D218-4D7E-A33E-A9EC9BF045DB (patrz Partition unique GUID, nie kod partycji guid powyżej)
    • To powinno być to. Powrót do głównego menu & stanu druku
      m
      i
      1
      będzie teraz drukować

      Partition GUID code: 0FC63DAF-8483-4772-8E79-3D69D8477DE4 (Linux filesystem) 
      Partition unique GUID: DBA66894-D218-4D7E-A33E-A9EC9BF045DB 
      First sector: 4096 (at 2.0 MiB) 
      Last sector: 8388574 (at 4.0 GiB) 
      Partition size: 8384479 sectors (4.0 GiB) 
      Attribute flags: 0000000000000000 
      Partition name: 'Linux' 
      

      Jedyna zmiana powinna być Partition size.

    • zapisu na dysk i wyjściem
      w
      y
  4. rosną systemu plików, aby dopasować cały dysk (mniejszy). Krok pięści zmniejszył go do minimalnego rozmiaru, który może zmieścić. Jest on gotowy do wykonania. Odłącz wolumin & Snapshot to.

  5. Krok opcjonalny. Wybór właściwego ID jądra dla AMI.

Jeśli masz do czynienia z PVM obraz i spotkanie po mount error na przykład rejestruje

Kernel panic - nie synchronizowania: VFS: Nie można zamontować roota

gdy instancja robi nie przejdzie kontroli uruchamiania, prawdopodobnie będziesz musiał wykonać ten dodatkowy krok.

Rozwiązaniem tego problemu byłoby wybranie właściwego ID jądra dla obrazu PVM podczas tworzenia obrazu z migawki. Pełną listę identyfikatorów jądra (AKI) można uzyskać pod numerem here.

Wybierz odpowiedni AKI dla swojego obrazu, są one ograniczone przez regiony i architektury!

+0

Usunięcie/odtwarzanie nie wpływa na rzeczywiste dane? Tylko tabela partycji? – Suncatcher

+0

@Suncatcher Tak, tabela partycji nie wie o danych w systemie plików, musi tylko wiedzieć, gdzie są systemy plików pod względem granic bajtów i odtworzyć te dane. – zapl

+0

W końcu to zrobiłem! Holy *** t! Trzy dni stracone :) – Suncatcher