Die Größe des Datenträgers (Micro-SD oder SD) manuell vergrößern

  • Speicher manuell erweitern bzw. vergrößern.


    Da ja mittlerweile die Grundspeichergröße von Raspbian nicht mehr ausreicht beschreibe ich Euch heute den Weg um dieses manuell anzupassen.
    Das hat einen entscheidenden Vorteil wenn man die Größe manuell festlegt als gegenüber der automatischen Anpassung (über raspi-config - Expand Filesystem). Der Vorteil besteht darin das, wenn man als Beispiel eine 16 GB große Micro-SD hat, man hier nicht den kompletten Speicher der Micro-SD Karte freigibt. Das Bedeutet wenn man ein komplettes dd Backup macht dann nicht 16 GB gesichert werden müssen sondern nur die vorher festgelegte Größe des Filesystem. Man kann auch später immer noch das Filesystem vergrößern wenn mal der Speicherplatz knapp wird.


    Ich finde dass das ein entscheidender Vorteil ist gegenüber der automatischen Anpassung die immer das Maximum des Speicherplatzes anlegt.



    Das folgende Kommando startet das Programm fdisk zum Partitionieren der SD-Karte, die mit mmcblk0 angegeben ist.

    Code
    sudo fdisk /dev/mmcblk0


    Wir drücken als nächstes die Taste " p " auf unserer Tastatur. Hier bekommen wir nun die Partitionen unserer Micro-SD oder SD Karte angezeigt:

    Was sehen wir hier nun:
    Wir sehen es sind 2 Partitionen angelegt, eine mit dem Namen mmcblk0p1und eine mit dem Namen mmcblk0p2.
    Die erste Partition ist auch sichtbar wenn man die SD Karte in eine Lesegerät am Windows Rechner steckt. Die zweite Partition ist am Windows Rechner nicht sichtbar.
    Die erste Partition bleibt so wie sie ist da hier keine Anpassung nötig ist, aber die zweite Partition werden wir gleich löschen und neu anlegen. Keine Angst es gehen hier normalerweise keine Daten verloren wenn die zweite Partition verändert wird.


    Aber bevor wir das machen ist es sehr wichtig sich hier den Startsector der zweiten Partition auf zu schreiben. Also in diesem Fall wäre es der Startsector 131072.
    Dieser Wert variiert von Karte zu Karte und ist somit nicht universal gültig. Solltet ihr hier vergessen haben den Startsector auf zu schreiben ist es einfacher das komplette System neu auf zu spielen als mit verschiedenen Werten herum zu experimentieren.


    Wir drücken als nächstes die Taste " d " (steht für delete) auf unserer Tastatur, anschliesend gleich die Taste 2 (steht für die 2. Partition). Nun haben wir die besagte Partition gelöscht.
    Jetzt brauchen wir eine neue, zweite Partition dies erledigen wir mit der Taste " n " (steht für new) gefolgt von der Taste " p " (Primäre Partition) und wiederum gefolgt von der Taste " 2 " (Damit fdisk weiß das wir hier die 2. Partition anlegen wollen).
    Fdisk legt jetzt eine neue 2. Primäre Partition an. Als nächstes fragt uns fdisk nach dem Startsector. Wir erinnern uns das wir den Wert aufgeschrieben haben und geben diesen Wert hier als Startsector wieder ein.



    Auf keinen Fall hier den standard Wert übernehmen den uns fdisk vorschlägt.


    Als nächstes frägt uns fdisk nach dem Endsector. Hier kann variiert werden aber ein durchaus gebräuchlicher Wert hat sich hier 5,7 GB bewährt. Also geben wir hier 12000000 ein.


    War das nun alles erfolgreich können wir, wieder, mittels der Taste " p " uns die Übersicht der Partitionen ansehen. Hier sehen wir nun das der Endsector der zweiten Partition auf 12000000 steht. Wenn dies der Fall ist, davon gehe ich normalerweise aus, drücken wir nun die Taste " w " unserer Tastatur um die neue Partition, mit der neuen Größe, zu schreiben.



    Hiermit beendet sich auch nun fdisk da nun alle nötigen Eingaben gemacht worden sind.



    Als nächstes müssen wir noch einen reboot (sudo reboot) machen.



    Wenn man sich wieder auf der Konsole angemeldet hat muß man dem System, in meinem Fall Raspbian, auch noch mitteilen das hier sich die Größe, des Datenträgers, sich verändert hat. Das machen wir mit folgendem Befehl:

    Code
    sudo resize2fs /dev/mmcblk0p2


    So das war es eigentlich schon. Wie man sieht ist dies kein Hexenwerk und man versteht nun auch was raspi-config im Hintergrund treibt wenn man auf Expand-Filesystem drückt.


    Ich hoffe das ich es einigermaßen verständlich rüber gebracht habe. Sollten hier noch Fragen offen sein dann schreibt bitte in dieses Thema Eure Fragen oder Verbesserungsvorschläge.

  • Hallo
    Ich habe gerade alles 1:1 durchgetestet aber danach startet mein Raspberry nicht mehr. Ich habe wo anders gelesen das es mit Debian nicht funktioniert.Stimmt das ? Wenn ja dann sollte darauf hingewiesen werden.
    Grüsse von der Spree

  • Hallo Soeren,
    Raspbian basiert auf Debian. Diese Anleitung ist für Raspbian diese sollte auch für die Debian Distri gehen. Da Du aber bestimmt Raspbian meinst kann ich Dir versichern das Diese Anleitung zu 100% funktioniert.


    Ich kann mir auch gut vorstellen was bei Dir schief gelaufen ist:


    Bei Anleitungen ist es immer wichtig Punkt für Punkt diese ab zu arbeiten und vor allem wenn wie hier explizit darauf hingewiesen wird den Startsector der SD-Karte zu notieren und diesen wieder ein zu tragen beim anlegen der neuen Partition.


    Da ich gestern, wieder einmal, frisch installiert habe und diese Prezedur auch vollzogen habe kann ich dir versichern das diese Anleitung wirklich funktioniert.

  • Ich habe geschrieben das ich es 1:1 abgearbeitet habe, aber den Wert habe ich von meiner karte kopi und past. Also nicht dein Wert "131072" mein Startpunkt war bei "122880"
    Ich habe es zwei mal mit zwei verschiedenen sd Karten getestet.
    mmmhhhh keeene Ahnung wat dit wieder is.
    Trotzdem Danke

  • Dann arbeiten wir es mal Punkt für Punkt durch, gemeinsam.


    Programm starten:
    sudo fdisk /dev/mmcblk0


    Taste drücken:
    p
    Hier bekommst Du alle Partitionen angezeigt.


    Taste drücken:
    d
    steht für delete


    Taste drücken:
    2
    2. Partition ausgewählt


    Taste drücken:
    n
    steht für new


    Taste drücken:
    p
    steht für primär


    Taste drücken:
    2
    2. Partition ausgewählt


    Start sector eingeben
    also bei Dir:
    122880


    End sector eingeben
    beliebige Größe, kleiner als vorher darf die Partition aber nicht sein!


    Taste drücken:
    p
    Damit Du siehst das der Endsector auf Deinen zuvor eingegebenen Wert geändert wurde


    Taste drücken:
    w
    Steht für write, dimit die Partition auch geschrieben wird.


    sudo reboot


    Nach dem Reboot:
    sudo resize2fs /dev/mmcblk0p2

  • Device Boot Start End Blocks Id System
    /dev/mmcblk0p1 8192 122879 57344 c W95 FAT32 (LBA)
    /dev/mmcblk0p2 12000000 15278079 1639040 83 Linux


    Command (m for help): d
    Partition number (1-4): 2


    Command (m for help): n
    Partition type:
    p primary (1 primary, 0 extended, 3 free)
    e extended
    Select (default p): p
    Partition number (1-4, default 2): 2
    First sector (2048-15278079, default 2048): 122880
    Last sector, +sectors or +size{K,M,G} (122880-15278079, default 15278079): 122880


    Command (m for help): w
    The partition table has been altered!


    Calling ioctl() to re-read partition table.


    Ich habe mal zum testen als Last sector 122880 genommen aber geht auch nicht.

  • Das kann dann nicht gehen, dann wäre Deine 2. Partition 0 Sectoren groß.
    Gebe mal als Endsector 12000000 ein.
    Danach die Taste"w".
    Danach"sudo reboot"
    Zum Schluß "sudo resize2fs /dev/mmcblk0p2"



    Zitat von abuzze

    /dev/mmcblk0p2 12000000 15278079 1639040 83 Linux

    Das kann nicht so stimmen. Dein Startsector ist bei 12000000!!!!!!


    So sieht es bei mir aus:

    Code
    /dev/mmcblk0p2      131072 8000000 7868929  3,8G 83 Linux
  • Das war auch nur ein Test hier nochmal richtig nach Anleitung


    root@raspberrypi:~# sudo fdisk /dev/mmcblk0


    Command (m for help): p


    Disk /dev/mmcblk0: 7822 MB, 7822376960 bytes
    4 heads, 16 sectors/track, 238720 cylinders, total 15278080 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0xa6202af7


    Device Boot Start End Blocks Id System
    /dev/mmcblk0p1 8192 122879 57344 c W95 FAT32 (LBA)
    /dev/mmcblk0p2 122880 15278079 7577600 83 Linux


    Command (m for help): d
    Partition number (1-4): 2


    Command (m for help): n
    Partition type:
    p primary (1 primary, 0 extended, 3 free)
    e extended
    Select (default p): p
    Partition number (1-4, default 2): 2
    First sector (2048-15278079, default 2048): 122880
    Last sector, +sectors or +size{K,M,G} (122880-15278079, default 15278079): 10000000


    Command (m for help): w
    The partition table has been altered!


    Calling ioctl() to re-read partition table.


    WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
    The kernel still uses the old table. The new table will be used at
    the next reboot or after you run partprobe(8) or kpartx(8)
    Syncing disks.
    root@raspberrypi:~# sudo resize2fs /dev/mmcblk0p2
    resize2fs 1.42.5 (29-Jul-2012)
    The filesystem is already 1894400 blocks long. Nothing to do!


    root@raspberrypi:~# reboot





    *********************************************************
    sudo resize2fs /dev/mmcblk0p2 habe ich zum testen vor dem reboot ausgeführt

  • Vielen Dank für die ausführliche Anleitung.


    Für eine Sicherung ist, bei heutigen Plattengrößen, dd aber eher eine schlechte Wahl. Grundsätzlich sollte dpkg --get-selections" sowie eine Kopie von /etc und /home (ggf. noch von einigen Teile von /var) ausreichen für einen bare metal restore.


    Wenn die Grundkonfiguration des DoorPi einmal läuft kann man auch mit clonezilla einmalig ein Image ziehen und dann nun noch die Variablen Dateien per cron job sichern. Bei Updates das Image erneuern nicht vergessen.


    Weitere Methoden zur Sicherung und Wiederherstellung sind hier ganz gut zusammengefasst: https://wiki.debian.org/BackupAndRecovery