2015-07-06 8 views
5

Ich habe die Anweisungen auf https://matt.berther.io/2015/02/03/how-to-resize-aws-ec2-ebs-volumes/ und http://atodorov.org/blog/2014/02/07/aws-tip-shrinking-ebs-root-volume-size/ verwendet, um auf ein EBS-Volume mit weniger Speicherplatz zu verschieben. In beiden Fällen, wenn angebracht ich die geschrumpften EBS-Datenträger (als/dev/xdva oder/dev/sda1, weder Werke) zu einer EC2-Instanz und starten Sie es, hält es auf seinem eigenen mit der MeldungWarum startet die EC2-Instanz nach der Größenanpassung des Root-EBS-Volumes nicht korrekt?

State transition reason 
Client.InstanceInitiatedShutdown: Instance initiated shutdown 

Some mehr basteln und ich fand, dass das neue Volume keine BIOS-Boot-Partition hatte. Also habe ich gdisk benutzt, um eins zu machen und den MBR von dem ursprünglichen Volume (das funktioniert und mit dem ich Instanzen starten kann) auf das neue Volume kopiert. Jetzt wird die Instanz nicht beendet, aber ich kann nicht in die neu gestartete Instanz wechseln.

Was könnte der Grund dafür sein? Wie kann ich mehr Informationen (über Protokolle/AWS-Konsole usw.) erhalten, warum dies geschieht?

+0

Welches Betriebssystem verwenden Sie für Ihre Maschine? Haben Sie etwas in der AWS EC2 Console -> Syslog? – Mircea

+0

Amazon Linux und die AWS EC2-Konsole war leer. –

Antwort

2

Das Problem war mit der BIOS-Boot-Partition. Ich konnte dies lösen, indem ich zuerst eine Instanz mit einem kleineren EBS-Volumen initialisierte. Dann wird das Volumen gelöst und an eine Instanz angehängt, die verwendet wird, um den Inhalt von dem größeren Volumen oder dem kleineren Volumen zu kopieren. Das erzeugte eine BIOS-Boot-Partition, die tatsächlich funktioniert. Einfach ein neues erstellen und die Boot-Partition kopieren funktioniert nicht.

Wenn Sie nun die in den beiden Links beschriebenen Schritte befolgen, kann das Volumen des Root-EBS verringert werden.

3

schrumpfen ein GPT-Boot-EBS-Datenträger unter dem 8 GB partitioniert, dass Standardbilder zu verwenden scheinen Sie folgende tun können: (eine leichte Variation der dd Methode von https://matt.berther.io/2015/02/03/how-to-resize-aws-ec2-ebs-volumes/)

Quelllaufwerk ist /dev/xvdf, ist Ziel /dev/xvdg

  1. Shrink Quellpartition

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

    pr Will int so etwas wie

    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. 
    

    ich das MB umgewandelt, das heißt 257.491 * 4/1024 ~ = 1006 MB

  2. Kopie über Größe + ein bisschen mehr von Gerät zu Gerät (!), nicht nur partitionieren zu Partition, da, dass beide Partitionstabelle & Daten in der Partition Boot enthält

    $ sudo dd if=/dev/xvdf of=/dev/xvdg bs=1M count=1100 
    
  3. jetzt gdisk verwenden, um die GPT-Partition auf die neue Festplatte zu beheben

    $ sudo gdisk /dev/xvdg 
    

    Sie werden mit rund

    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): 
    

    Das Folgende ist die Tastatureingabe in gdisk begrüßt. Um die Probleme zu beheben, muss die Datenpartition, die in der kopierten Partitionstabelle vorhanden ist, so angepasst werden, dass sie auf die neue Festplatte passt. Dies bedeutet, dass es kleiner neu erstellt werden muss und dass die Eigenschaften so festgelegt werden müssen, dass sie der alten Definition der Partition entsprechen. testet es nicht so ist es vielleicht nicht die Backup-Tabelle auf das tatsächliche Ende der Platte zu verlagern erforderlich, aber ich habe es trotzdem:

    • , um zusätzliche Optionen für Experten gehen: x
    • relocate Backup-Datenstrukturen das Ende der Platte: e
    • zurück zum Hauptmenü: m

    nun die Partitionsgröße

    zur Festsetzung 10
    • Druck und notieren Sie einige Eigenschaften von Partition 1 (und andere Nicht-Boot-Partitionen, wenn sie vorhanden ist):
      i
      1
      Zeigen etwas wie

      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' 
      
    • jetzt löschen
      d
      1
      und erstellen Sie die Partitionneu n
      1
      Geben Sie die erforderlichen Parameter ein. Alle Standardwert funktionierten für mich hier (= drücken Sie die Eingabetaste), wenn im Zweifel beziehen sie Informationen von oben

      • Ersten Sektor partitionieren = 4096
      • Letzten Sektor = was auch immer das tatsächliche Ende der neuen Platte ist - nehmen Sie den Standard hier
      • type = 8300 (Linux)
    • der Standardname der neuen Partition nicht den alten entsprechen. So ändern Sie mit dem Original
      c
      1
      Linux (siehe Partition name von oben)

    • Das nächste, was zu ändern ist die GUID Partition
      x
      c
      1
      DBA66894-D218-4D7E-A33E-A9EC9BF045DB (siehe Partition unique GUID, nicht die Partition Guid-Code über das)
    • Das sollte es sein. Zurück zum Hauptmenü & Druckzustand
      m
      i
      1
      Wird jetzt

      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' 
      

      Die einzige Änderung, die Partition size drucken sollte.

    • Schreiben auf Festplatte und Ausfahrt
      w
      y
  4. wachsen Dateisystem gesamte (kleinere) Platte passen. Der erste Schritt hat es auf die minimale Größe geschrumpft

    $ sudo resize2fs -p /dev/xvdg1 
    
  5. Wir sind fertig. Trennen Sie das Volume & Schnappschuss.

  6. Optionaler Schritt. Auswahl der richtigen Kernel-ID für das AMI.

Wenn Sie den Umgang mit PVM Bild und Begegnung folgenden mount error in Beispiel protokolliert

Panik Kernel - nicht synchronisiert: VFS: Kann nicht Wurzel montieren

wenn Ihre Instanz doesn Wenn Sie keine Startup-Prüfungen bestehen, müssen Sie möglicherweise diesen zusätzlichen Schritt ausführen.

Die Lösung für diesen Fehler besteht darin, die richtige Kernel-ID für Ihr PVM-Image während der Image-Erstellung aus Ihrem Snapshot auszuwählen. Die vollständige Liste der Kernel-IDs (AKIs) kann abgerufen werden here.

Wählen Sie die richtige AKI für Ihr Bild, sie sind durch Regionen und Architekturen eingeschränkt!

+0

Löschung/Wiederherstellung hat keine Auswirkungen auf die tatsächlichen Daten? Nur Partitionstabelle? – Suncatcher

+0

@Suncatcher ja, die Partitionstabelle weiß nicht über die Daten im Dateisystem, es muss nur wissen, wo die Dateisysteme in Bezug auf Bytegrenzen sind, und Sie erstellen diese Daten erneut – zapl

+0

Endlich getan! Heiliger *** t! Drei Tage verloren :) – Suncatcher