Benutzung eines USB Sticks oder einer USB Platte für die Rootpartition

L I V E Stammtisch ab 20:30 Uhr im Chat
  • === Übersicht ===

    • - Das Ziel
    • - Die Voraussetzungen
    • - Die einzelnen Schritte
    • - Der einfache Weg - Benutzung des Scripts raspiSD2USB


    === Das Ziel ===

    Jeder, der mit der Pi zu arbeiten beginnt, benutzt SD Karten zur Speicherung des Betriebssystems und der Daten. Nach einer gewissen Zeit möchte man dann ein schnelleres und/oder größeres Speichermedium benutzen. Leider kann man die Pi nicht ohne SD Karte betreiben. Allerdings ist sie nur zum Startzeitpunkt notwendig und es wird nur die erste Partition, die Bootpartition, der SD Karte benötigt. Sämtliche Betriebssystemdaten wie Benutzerdaten, die auf der zweiten Partition, der root Partition, liegen, können auf einem beliebigen anderen Speichermedium wie einem USB Stick oder einer USB Platte liegen.

    Es sind relativ wenige Schritte notwendig um die existierende root Partition der SD Karte auf eine andere Partition umzukopieren und die SD Karte so zu ändern, dass danach nur noch die externe root Partition benutzt wird. Dazu kann man die Pi mit ihrem Linux benutzen. Entweder ändert man das aktuell laufende Linux oder man ändert eine andere SD Karte, die per USB CardReader an der Pi angeschlossen ist.

    Nach der Umstellung wird die existierende root Partition der SD Karte nicht mehr benutzt. Wichtig ist, dass zum Zeitpunkt der Umstellung eine weitere Platte bzw ein USB Stick als erstes an der Pi angeschlossen wurde. Ansonsten kann es vorkommen, dass sich die aktuellen Partitionsdaten zum Zeitpunkt der Umstellung (z.B. /dev/sdc1) von denen wie sie nach einem Pi Reboot vorliegen (z.B. /dev/sda1) unterscheiden und die Pi nicht die richtige Datenpartition findet und nicht bootet.

    Wer die Änderung nicht im Einzelnen verstehen und vornehmen will kann auch das am Ende des Tutorials verlinkte Script benutzen um die Änderung automatisch vornehmen zu lassen. Dabei muss aber sichergestellt sein, dass die Partitionierung der neuen Rootpartition schon erfolgte. Speziell wenn mehrere USB Geräte an der Raspi angeschlossen werden sollen muss die neue Rootpartition mit gpt angelegt worden sein. Wie das geht ist weiter unten in Schritt 1 beschrieben.

    Wenn man mehrere USB Platten an der Raspberry betreibt muss die USB Platte die das Rootfilesystem bekommen soll, eine GPT Partitionstabelle besitzen, damit zum Bootzeitpunkt erkannt werden kann, welche USB Platte die Rootpartition beherbergt. Eine existierende msdos Partitionstabelle muss man dann erst mit gdisk in eine gtp Tabelle umwandeln.

    === Die Voraussetzungen ===

    • Ein laufendes Linux Betriebssystem auf einer Pi (Raspbian, XBMC, ...)
    • Zugriff auf die Pi entweder per Tastatur und Bildschirm direkt oder per ssh oder putty über eine bestehende Netzwerkverbindung
    • Optional: USB CardReader wenn man nicht das aktuell laufende System ändern möchte

    Nicht erforderlich ist ein dediziertes Linux System. Warum auch? Die Pi hat ja ein Linux welches man dazu nutzen kann :D

    === Die einzelnen Schritte ===

    Die folgenden Schritte sind notwendig für die Umstellung und können alle auf der Pi vorgenommen werden. Als Beispiel in den Befehlen wird die Beispielplatte /dev/sda und die Partition /dev/sda1 genommen und auf der Pi mit angeschlossenem weiteren USB Platte die Befehle ausgeführt werden. Dazu meldet man sich entweder direkt an der Pi mit Tastatur und Bildschirm an oder verbindet sich per ssh von einem Linux bzw mit putty von einem Windows von einem anderen Rechner im lokalen Netz.

    Mit

    Code
    sudo fdisk -l

    (kleines l) kann man rausfinden unter welchem Namen das externe USB Laufwerk von der Pi erkannt wurde. Bei mir sieht das dann z.B. so aus:

    Spoiler anzeigen

    pi@raspifix ~ $ sudo fdisk -l

    Disk /dev/mmcblk0: 7851 MB, 7851737088 bytes
    4 heads, 16 sectors/track, 239616 cylinders, total 15335424 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: 0x00047c7a

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

    Disk /dev/sda: 1000.2 GB, 1000204886016 bytes
    255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 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: 0x001a1bf8

    Device Boot Start End Blocks Id System
    /dev/sda1 2048 1953521663 976759808 83 Linux

    Wer die Schritte nicht manuell ausführen will kann auch ans Ende des Tutorials springen und findet dort einen Link auf ein Script welches die Umstellung automatisch vornimmt. Zwecks Verständnisses der Zusammenhänge ist es aber trotzdem sehr sinnvoll sich die folgenden Schritte anzusehen und zu verstehen.

    0) Wichtig: Erstellen eines Backups der SD Karte zur Sicherheit. Das sollte man eigentlich sowieso schon haben, denn es ist ärgerlich wenn mal die SD Karte ihren Geist aufgibt und alle Daten und EInstellungen verloren sind. Das kommt leider häufiger vor als man denkt. Ich benutze z.B. dazu dieses hier beschriebene Script. Wer mit Linux vertraut ist und die wichtige Originaldatei wie unten beschrieben sichert kann es aber auch lassen denn man kann schnell die alten Konfigdateien wieder aktivieren.

    1) Erstellen einer Partition auf einem USB Stick oder einer USB Platte. Die Standardtools unter Linux ist dazu fdisk bzw gdisk. Dort erstellt man verschiedene Partitionen auf einem Medium mit ihren Größen.

    Code
    sudo fdisk /dev/sda


    Will man mehrere USB Platten an der Raspberry betreiben muss man sie mit gdisk anlegen.

    Code
    sudo gdisk /dev/sda


    Einfacher geht es aber wenn man die USB Platte normal mit einem MBR erstellt hat und vermittels gdisk von mbr zu gpt ändern lässet. Die Umwandlung sieht dann wie folgt aus:

    Spoiler anzeigen

    root@jessie:/backup# gdisk /dev/sda
    GPT fdisk (gdisk) version 0.8.10

    Partition table scan:
    MBR: MBR only
    BSD: not present
    APM: not present
    GPT: not present


    ***************************************************************
    Found invalid GPT and valid MBR; converting MBR to GPT format
    in memory. THIS OPERATION IS POTENTIALLY DESTRUCTIVE! Exit by
    typing 'q' if you don't want to convert your MBR partitions
    to GPT format!
    ***************************************************************

    Command (? for help): w

    Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
    PARTITIONS!!

    Do you want to proceed? (Y/N): y
    OK; writing new GUID partition table (GPT) to /dev/sdc.
    The operation has completed successfully.


    Danach wird gpt benutzt und es sieht sie wie folgt aus:

    Spoiler anzeigen

    root@jessie:/backup# gdisk /dev/sdc
    GPT fdisk (gdisk) version 0.8.10

    Partition table scan:
    MBR: protective
    BSD: not present
    APM: not present
    GPT: present

    Found valid GPT with protective MBR; using GPT.

    2) Formatieren der neuen Partition mit ext4. Das geht nur unter Linux auf der Pi oder einem anderen Linuxsystem:

    Code
    sudo mkfs.ext4 /dev/sda1

    3) Stoppen aller laufenden Services wie samba, vpn, seafile, apache, ...

    4) Kopieren der SD Karten Datenpartition auf die neue USB Partition. Dazu wird tar, ein altbewehrtes Linux Tool zum Erstellen von Dateisammlungen benutzt. Bekannte Tools unter Windows die ähnliche Funktionen liefern sind winzip und winrar. Der Vorteil von tar liegt darin, dass sämtliche Linuxattribute der Dateien gesichert werden und wieder zurückgespielt werden können.

    Code
    sudo mount /dev/sda1 /mnt
    cd /
    sudo tar cf - --one-file-system --exclude=/mnt/*  --exclude=/proc/* --exclude=/lost+found/* --exclude=/sys/* --exclude=/media/* --exclude=/dev/* --exclude=/tmp/* --exclude=/boot/* --exclude=/run/* / | ( cd /mnt; sudo tar xfp -)

    5) Ändern der /mnt/etc/fstab auf der neuen USB Partition von

    Code
    /dev/mmcblk0p1  /boot           vfat    defaults         0       0
    /dev/mmcblk0p2    /               ext4    defaults,noatime 0       0

    nach

    Code
    /dev/mmcblk0p1  /boot           vfat    defaults         0       0
    /dev/sda1    /               ext4    defaults,noatime 0       0

    Der Befehl zum Ändern ist

    Code
    sudo nano /mnt/etc/fstab

    Hat man mehrere USB Platte angeschlossen muss es wie folgt geändert werden:

    Code
    /dev/mmcblk0p1  /boot           vfat    defaults         0       0
    PARTUUID=7C32EB25-0462-429F-BF92-90FFD81FC8FE    /               ext4    defaults,noatime 0       0

    Die kryptische Sequenz ist die PartitionUUID und die bekommt man durch folgenden Befehl heraus:

    Code
    sudo sgdisk -i 1 /dev/sda | grep unique | cut -d ' ' -f 4
    7C32EB25-0462-429F-BF92-90FFD81FC8FE

    Dadurch wird nicht mehr mmcblk0p2 sondern die neue Partition sda1 als Rootfilesystem eingebunden.

    6) Anlegen einer Sicherung der alten /boot/cmdline.txt

    Code
    sudo cp /boot/cmdline.txt /boot/cmdline.txt.sd

    Mit dem folgenden Befehl kann man im Notfall jederzeit wieder die alte SD Datenpartition benutzen indem man die gesicherte Datei wieder auf die Originaldatei kopiert.

    Code
    sudo cp /boot/cmdline.txt.sd /boot/cmdline.txt

    7) Ändern in der der Datei /boot/cmdline.txt den Teil mit root=/dev/mmcblk0p2 nach root=/dev/sda1

    Beispiel (Die Zeile kann auch anders aussehen. Der Teil mit root= wird aber identisch sein)

    Code
    dwc_otg.lpm_enable=0 root=/dev/mmcblk0p2 rootfstype=ext4 noatime quiet rootwait loglevel=1 zram.num_devices=2


    nach

    Code
    dwc_otg.lpm_enable=0 root=/dev/sda1 rootfstype=ext4 noatime quiet rootwait loglevel=1 zram.num_devices=2

    Wenn man mehrere USB Platten angeschlossen hat muss wie schon oben beschrieben die PartitionsUUID anstelle von /dev/sda1 eingetragen werden.

    Code
    dwc_otg.lpm_enable=0 root=PARTUUID=7C32EB25-0462-429F-BF92-90FFD81FC8FE rootfstype=ext4 noatime quiet rootwait loglevel=1 zram.num_devices=2


    Der Befehl zum Ändern ist

    Code
    sudo nano /boot/cmdline.txt

    Sollte danach die Pi wegen irgendwelcher Tipfehler nicht mehr booten kann man den vorherigen Zustand schnell wieder herstellen indem man ein anderes Raspbian bootet, dann die SD Karte an einem USB Cardreader dort anschliesst und die gesicherte cmdline.txt.sd wieder auf cmdline.txt in der boot Partition kopiert. Alternativ kann man die Datei auch unter Windows zurückkopieren.

    === Der einfache Weg - das Script ===

    Alternativ kann man hier ein von mir erstelltes Script runterladen, auf die Pi kopieren. Nachdem das weitere USB Gerät angeschlossen wurde und alle laufenden Services wie vpn, samba, seafile usw gestoppt wurden, ausführen. Es nimmt alle oben beschriebenen Schritte automatisch am aktuell laufenden System vor. Das o.g. Beispiel sieht dann wie folgt aus:

    Spoiler anzeigen


    raspiSD2USB.py V0.2.1 2015-04-12/20:41:05 0ff0dfd
    RSD0002I --- Folgende Partitionen wurden erkannt
    RSD0003I --- /dev/mmcblk0p1 - Größe: 112.00 MB - Frei: 97.53 MB - Mountpunkt: /boot - Partitionstyp: vfat - Partitiontabelle: None
    RSD0003I --- /dev/mmcblk0p2 - Größe: 2.85 GB - Frei: 221.95 MB - Mountpunkt: / - Partitionstyp: ext4 - Partitiontabelle: None
    RSD0003I --- /dev/mmcblk0p3 - Größe: 804.00 MB - Frei: NA - Mountpunkt: None - Partitionstyp: ext4 - Partitiontabelle: None
    RSD0003I --- /dev/sda1 - Größe: 3.84 GB - Frei: 3.50 GB - Mountpunkt: /mnt - Partitionstyp: ext4 - Partitiontabelle: msdos
    RSD0028I --- Partition /dev/mmcblk0p1 wird übersprungen - Partition ist auf der SD Karte
    RSD0028I --- Partition /dev/mmcblk0p2 wird übersprungen - Partition ist auf der SD Karte
    RSD0028I --- Partition /dev/mmcblk0p3 wird übersprungen - Partition ist auf der SD Karte
    RSD0009I --- Ziel root Partitionskandidaten: /dev/sda1
    RSD0011I --- Quell root Partition /dev/mmcblk0p2: Größe: 2.85 GB Typ: ext4
    RSD0012I --- Partition /dev/sda1 wird getestet: Größe: 3.84 GB Freier Speicherplatz: 3.50 GB Typ: ext4
    RSD0005I --- Folgende Partitionen sind mögliche neue Ziel root Partition
    RSD0006I --- /dev/sda1
    RSD0007I --- Partion eingeben: /dev/sda1
    RSD0019I --- Partition /dev/mmcblk0p2 wird auf Partition /dev/sda1 kopiert und wird die neue root Partition
    RSD0020I --- Bist Du sicher (j/N) ?
    J
    RSD0021I --- Rootpartition wir kopiert ... Bitte Geduld
    tar: Removing leading `/' from member names
    tar: Write checkpoint 1000
    ...
    tar: Write checkpoint 236000
    tar: proc: implausibly old time stamp 1970-01-01 01:00:00
    RSD0022I --- /etc/fstab wird auf /dev/sda1 angepasst
    RSD0023I --- /boot/cmdline.txt wird auf /dev/sda1 gesichert
    RSD0024I --- /boot/cmdline.txt wird auf /dev/sda1 angepasst
    RSD0025I --- Umzug von root Partition von /dev/mmcblk0p2 auf Partition /dev/sda1 beendet

    Das Script wurde mit einer anderen schnelleren SD Karte, einem USB Stick und einer USB Platte getestet. Es löscht definitiv keine Daten und kopiert nur die aktuelle Datenpartition auf die neue Partition. Falls doch irgendwas schief laufen sollte kann man durch Zurückkopieren der gesicherten /boot/cmdline.txt.sd auf die /boot/cmdline.txt immer wieder die alte originale Datenpartition auf der SD Karte benutzen. Danach muss man nur die Zielpartition wieder löschen und hat den alten Originalzustand.

    Trotzdem gilt natürlich der übliche Disclaimer dass man zur Sicherheit immer vor solch einer Umstellung ein Backup erstellen sollte um gegen Datenverlust gewappnet zu sein.

    raspiSD2USB.py steht unter der GPL auf github zur allgemeinen Verfügung.

  • Benutzung eines USB Sticks oder einer USB Platte für die Rootpartition? Schau mal ob du hier fündig wirst!

  • Hallo framp,

    eine schöne Anleitung, allerdings habe ich ein paar Fragen und Anregungen dazu.

    Zitat

    Wichtig ist, dass zum Zeitpunkt der Umstellung nur eine weitere Platte bzw einen USB Stick an der Pi angeschlossen ist.

    Warum wird dann deine Festplatte als /dev/sdb erkannt? Wenn nur eine Festplatte oder ein USB-Stick am Raspberry sein darf, dann bekommt dieses Gerät /dev/sda zugewiesen. Das wird sicher bei dem einen oder anderen zu Problemen führen wenn die Befehle einfach nur kopiert werden. Wäre vielleicht besser hier /dev/sda zu verwenden.

    Zitat

    Die folgenden Schritte sind notwendig für die Umstellung und können alle auf der Pi vorgenommen werden.

    Das würde ich persönlich nicht machen. Ein laufendes Betriebssystem zu kopieren kann immer wieder zu Problemen führen. Du kannst nicht sicher sein, dass alle Daten auf der SD-Karte gültig sind und sich im Cache nicht noch etwas befindet was auch kopiert werden muss.

    Zitat

    Alternativ kann die Partition auch unter Windows mit den bekannten Mitteln erstellt werden.

    Wenn die Partition unter Windows angelegt wird, stimmt der Partition Type nicht. Dieser sollte wenn man ein Linux-Dateisystem in der Partition erstellt auch entsprechend gesetzt sein. Das kann man unter Windows allerdings nicht.

    Zitat

    3) Kopieren der SD Karten Datenpartition auf die neue USB Partition:

    Anstelle von tar würde ich hier auf dd zurückgreifen und die Partition auf dem Zieldatenträger später vergrößern. Ich denke durch das Komprimieren und anschließende Entpacken auf der Zielpartition wird der Vorgang den Raspberry Pi ganz schön ins schwitzen bringen.

    Zitat

    4) Ändern der /mnt/etc/fstab auf der neuen USB Partition

    Wenn du in der /etc/fstab nicht die Gerätedatei sondern die UUID der neuen Root-Partition angibst, kannst du Problemen durch eine Änderung der Gerätedatei vorbeugen.

    Zitat

    6) Ändern der Datei /boot/cmdline.txt von

    Hier könnte man ebenfalls mit der UUID arbeiten.

    Zitat

    Es löscht definitiv keine Daten und kopiert nur die aktuelle Datenpartition auf die neue Partition.

    Abgesehen von den Daten auf dem USB-Datenträger ;)

    Sollte jemand Raspbian direkt auf einen USB-Datenträger installieren wollen, kann dies auch nach der folgenden Anleitung machen. Dabei wird aus dem Raspbian-Image nur die Boot-Partition auf die SD-Karte geschrieben und die Root-Partition direkt auf den USB-Datenträger kopiert. Der Umweg über eine vollständige Installation auf die SD-Karte entfällt in diesem Fall.

    http://www.gtkdb.de/index_7_2006.html

    Hier habe ich aber auch noch keine UUID verwendet ;)

    Gruß Georg

  • Die Frage die sich bei mir dabei stellt ist:

    Warum?

    USB-Platten schaffen an Pi unter optimalen Bedingungen den halben Datendurchsatz der SD-Karte, dann darf aber nichts im Netzwerk los sein und keine Taste berührt werden.
    Man kann unter Linux die USB-Platte in jedem Verzeichnis einbinden, in dem man Platz braucht, warum sollte man dann das System mit Gewalt ausbremsen?

  • Zitat von boandlkramer pid=9087 dateline=1364630628


    Hallo framp,

    eine schöne Anleitung, allerdings habe ich ein paar Fragen und Anregungen dazu.


    Hallo boandlkramer,

    so muss es sein. Diskussionen erhoehen die Qualitaet des Tutorials und sind notwendig. Danke fuer Deine Anregungen.

    Zitat

    Warum wird dann deine Festplatte als /dev/sdb erkannt? Wenn nur eine Festplatte oder ein USB-Stick am Raspberry sein darf, dann bekommt dieses Gerät /dev/sda zugewiesen. Das wird sicher bei dem einen oder anderen zu Problemen führen wenn die Befehle einfach nur kopiert werden. Wäre vielleicht besser hier /dev/sda zu verwenden.


    Guter Punkt. Das von mir geschriebene Script lief auf einem Labtop, der natuerlich eine sda hatte. Deshalb taucht hier sdb auf. Ich haben das oben in sda geaendert.

    Zitat

    Das würde ich persönlich nicht machen. Ein laufendes Betriebssystem zu kopieren kann immer wieder zu Problemen führen. Du kannst nicht sicher sein, dass alle Daten auf der SD-Karte gültig sind und sich im Cache nicht noch etwas befindet was auch kopiert werden muss.


    Es funktioniert. Ich habe es unter xbmc und raspian ausprobiert. Aber die sicherste Methode ist natuerlich das extern mit einem USB Cardreader vorzunehmen. Das Problem was ich sehe ist, dass ein ungeuebter Benutzer dann mit den Partitionen durcheinander kommt. Wenn nach dem Booten die externe USB einen anderen Mountpoint hat funktioniert nix mehr. Aber Du hast ja weiter unten die Idee mit er UUID aufgebracht. Das werde ich mir mal ansehen und dann einarbeiten.

    Zitat

    Wenn die Partition unter Windows angelegt wird, stimmt der Partition Type nicht. Dieser sollte wenn man ein Linux-Dateisystem in der Partition erstellt auch entsprechend gesetzt sein. Das kann man unter Windows allerdings nicht.


    Mit WIndows bin ich nicht so vertraut. Das war mir nicht klar. Das aendere ich.

    Zitat

    Anstelle von tar würde ich hier auf dd zurückgreifen und die Partition auf dem Zieldatenträger später vergrößern. Ich denke durch das Komprimieren und anschließende Entpacken auf der Zielpartition wird der Vorgang den Raspberry Pi ganz schön ins schwitzen bringen.


    Das Tutorial geht davon aus dass man vorher die Partition in der gewuenschten Groesse anlegt. Wie gesagt habe ich das auf meiner Pi getestet. Es dauert ein wenig - aber es funktioniert. Der Vorteil ist, dass so auch reine Windowsnutzer die Umstellung vornehmen koennen.

    Zitat

    Wenn du in der /etc/fstab nicht die Gerätedatei sondern die UUID der neuen Root-Partition angibst, kannst du Problemen durch eine Änderung der Gerätedatei vorbeugen.

    Hier könnte man ebenfalls mit der UUID arbeiten.


    Guter Punkt. Hatte ich auch schon dran gedacht. Nur glaube ich das die UUID in der cmdline.txt nicht funktionieren wird. Ich sehe mir das aber mal an und werde das einarbeiten wenn es funktioniert.

    Zitat

    Abgesehen von den Daten auf dem USB-Datenträger ;)


    Nein, das Script loescht definitiv nix. Ausserdem muss die neue Datenpartition frei sein. Das prueft das Script. ;)

  • Leider kann man die UUID nicht als Parameter für root angeben -> kernel boot parameter Somit ist man auf der sicheren Seite wenn man die Umstellung direkt auf der Pi vornimmt.

    Zitat von orb pid=9089 dateline=1364631756

    Die Frage die sich bei mir dabei stellt ist:

    Warum?

    USB-Platten schaffen an Pi unter optimalen Bedingungen den halben Datendurchsatz der SD-Karte, dann darf aber nichts im Netzwerk los sein und keine Taste berührt werden.
    Man kann unter Linux die USB-Platte in jedem Verzeichnis einbinden, in dem man Platz braucht, warum sollte man dann das System mit Gewalt ausbremsen?

    Performanceanalysen habe ich nicht gemacht. Es finden sich aber immer wieder Leute die fragen wie man sowas macht.

  • Möchte eben meinen Senf dazu geben:

    Ich nutze als systempartition auch einen 32gb usb Stick (15€ Platinum aus dem Al....).
    Warum?
    Weil die SD Karte bei 1GHz und bei overvolt 6 regelmässig geschrottet wird. Ich persönlich ziehe nach dem boot in dem moment in dem der Bildschirm schwarz und der xdesktop geladen wird die SD Karte raus. wenig elegant, aber 1GHz takt ist so kein Problem mehr.

    Nach einigem probieren stelle ich mittlerweile aber bei 1GHz das overvolt auf 4. Die SD Karte scheint das nicht mehr zu stören, kann sie also drin lassen. Läuft bisher genau so stabil wie bei overvolt 6 und ohne SD Karte, aber das kann Glückssache sein. (cf memory C10 16GB)

    Alles in allem habe ich "gefühlt" eine bessere performance.
    Vielleicht erklärt noch mal jemand, wie man den Datendurchsatz testen kann, ich würde beides vergleichen wollen.

    Grüße

    Bierdieb

    Einmal editiert, zuletzt von Bierdieb (31. März 2013 um 17:45)

  • Zitat von Bierdieb pid=9192 dateline=1364744568


    ...Vielleicht erklärt noch mal jemand, wie man den Datendurchsatz testen kann, ich würde beides vergleichen wollen...

    Es gibt da ein nettes Tülchen namens bonnie Einfach

    Code
    sudo apt-get install bonnie


    und dann aufrufen. Das stresst die Platte bzw den Stick mächtig und liefert dann am Ende Performancedaten:rolleyes:

  • Anbei mal meine Messergebnisse mit bonnie, die beweisen, dass es Sinn macht von der SD Karte wegzugehen.

    SD Karte (Transcend SDHC Class 10, 8GB, ext4)

    Code
    Version  1.96       ------Sequential Output------ --Sequential Input- --Random-
    Concurrency   1     -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
    Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
    raspian          1G    47  97 11324  16  7027  13   395  98 21592  18  91.3   8
    Latency               665ms    6070ms    3029ms   38518us   16869us   30676us
    Version  1.96       ------Sequential Create------ --------Random Create--------
    raspian             -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
                  files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                     16  1872  42 +++++ +++  2255  32  1445  32 +++++ +++  1392  20
    Latency             11739us    5431us   10271us   11666us     916us   10375us

    USB Stick (Corsair Voyager 3.0, 16GB, ext4)

    Code
    Version  1.96       ------Sequential Output------ --Sequential Input- --Random-
    Concurrency   1     -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
    Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
    raspian          1G    49  98 10824  18  9362  20   391  99 28112  27  91.7  11
    Latency               309ms    5598ms    8326ms   24952us   18987us   26883us
    Version  1.96       ------Sequential Create------ --------Random Create--------
    raspian             -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
                  files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                     16  1382  28 +++++ +++  4745  61  3345  66 +++++ +++  4435  59
    Latency              7331ms    4268us    4763us    1578us     257us     782us

    USB Platte (Treckstor mit WDC WD50 00AAVS-00ZTB0, ext4)

    Code
    Version  1.96       ------Sequential Output------ --Sequential Input- --Random-
    Concurrency   1     -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
    Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
    raspian          1G    48  99 27440  47 12754  28   351  99 32578  33 191.0  23
    Latency               248ms     566ms    1329ms   38643us   16875us    1563ms
    Version  1.96       ------Sequential Create------ --------Random Create--------
    raspian             -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
                  files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                     16  3836  87 +++++ +++  5788  84  4059  89 +++++ +++  5612  84
    Latency              4580us    4414us    4773us     919us     329us     699us
  • Hallo, Framp.

    Paar infos noch, bitte: 1. Welche SD Karte nutzt du ? (Größe, classe, Hersteller)
    2. Welchen USB Stick ?
    3. Wie ist deine USB Platte formattiert? ( NTFS, EXT4, FAT32).

    Habe Frau Bonnie selbst noch nicht bemüht, werde das aber sicherlich in Bastellaune nachholen....

    MFG

    Bierdieb

  • Zitat von Bierdieb pid=9250 dateline=1364823270


    Paar infos noch, bitte: 1. Welche SD Karte nutzt du ? (Größe, classe, Hersteller)
    2. Welchen USB Stick ?
    3. Wie ist deine USB Platte formattiert? ( NTFS, EXT4, FAT32).


    Die Infos habe ich wie gewuenscht alle oben bei der Bonnieausgabe nachgetragen :shy:

  • jupp, Danke!

    Allgemeiner Hinweis: Viele Leute schleppen Ihre USB_Festplatten zwischen verschiedenen Rechnern hin und her. Das hat meist zur Folge, dass die Platte NTFS-Formatiert ist, zumindest bei denjenigen mit Windowsrechnern!
    NTFS ist auf dem Pi übel langsam! (Jedenfalls wenn man ntfsprogs benutzt)

    Wenn Ihr eure USB-Platte also mehr für den Pi und weniger für Windoof benutzt ist ext4 zu empfehlen. Das ist unter Windoof nicht ideal, vor allem bei wartungs-, reparatur- oder Datenrettungsvorgängen guckt man von MS-Seite häufig in die Röhre, aber um eben nur Daten vom Windoof auf die Platte zu schaufeln tuts das allemal (zumindest ab Vista, bei älteren Versionen könnte zusätzliche Software nötig sein, weiss nicht genau ab wann ext4 unterstützt wurde).

    Der Datendurchsatz unter raspbian steigt damit jedenfalls gewaltig an.

    Grüße

    Bierdieb

    Einmal editiert, zuletzt von Bierdieb (1. April 2013 um 17:13)

  • BTW: Sollte weiteres Interesse bestehen Platten-/USB/SD performance zu diskutieren bzw Erfahrungen auszutauschen schlage ich vor dafuer einen neuen Thread zu erstellen und von hier aus dahin zu verlinken. Das hat ja mit dem Tutorial nichts mehr zu tun :rolleyes:

  • Zitat


    [font="Tahoma"]Weil die SD Karte bei 1GHz und bei overvolt 6 regelmässig geschrottet wird. Ich persönlich ziehe nach dem boot in dem moment in dem der Bildschirm schwarz und der xdesktop geladen wird die SD Karte raus. wenig elegant, aber 1GHz takt ist so kein Problem mehr.[/font]


    Da ich die "gute" SD-Karte auch schon geschrottet hab möchte ich meine neue Erkenntnis mitteilen:

    Man kann die Boot-SD-Karte sauber entfernen, wenn man in /etc/fstab die Zeile auskommentiert, in der mmcblk0p2 gemountet wird. Ich denke das hat was mit "pre-boot mounting" zu tun. Auf dem Desktop angekommen kann man die Boot-Karte unmounten und rausziehen. Ich lasse sie allerdings drin, seither war die aber nicht mehr corrupted.

    Noch besser ist die "neue" Systempartition in fstab direkt zu mounten. Einfach die Zeile mit mmcblk0p2 kopieren und stattdessen z.B. sda2 eintragen.

  • Hallo,


    jetzt habe ich hier leider zwei Stunden umsonst verbracht, die Anleitung funktioniert so nicht, jedenfalls
    nicht auf meinem PI. Raspbian war extra frisch installiert und hat sich normal verhalten.

    Code
    sudo tar cf - * | ( cd /mnt; tar xfp -)


    geht nicht,aber auch

    Code
    sudo tar cf - * | ( cd /mnt;sudo tar xfp -)


    scheitert nach ca. 3 Minuten, er hängt sich auf.


    Und wenn man die komplette SD mit dd auf USB Stick kopiert bootet der PI nach Änderung auf

    Code
    /dev/mmcblk0p1  /boot           vfat    defaults         0       0
    
    
    /dev/sda1    /               ext4    defaults,noatime 0       0


    sowie

    Code
    dwc_otg.lpm_enable=0 root=/dev/sda1 rootfstype=ext4 noatime quiet rootwait loglevel=1 zram.num_devices=2

    leider nicht.


    Vor längerer Zeit hatte ich es schon einmal geschafft mit kopieren durch dd und ändern der
    UUID das System einwandfrei vom USB Stick zu starten, leider finde ich die damals gefundene
    Gedankenstütze nicht wieder, und aus dem Kopf weiß ich es heute nicht mehr.


    Vielleicht kann jemand etwas dazu sagen.


    Mit freundlichen Grüßen

  • Hallo,


    so ich habe es jetzt geschafft. Der tar Befehl hatte sich wie gesagt auf dem PI aufgehangen.
    Mit dd hatte es auf dem Gerät selbst auch nicht funktioniert.

    Nun habe ich am normalen Rechner mit


    Code
    sudo dd if=/dev/mmcblk0p2 of=/dev/sdb1/ bs=512

    die SD Partition auf den USB Stick kopiert und sonst alles wie in der Anleitung beschrieben gemacht.
    Das Ziel of= kann natürlich bei jedem anders sein.


    Mit freundlichen Grüßen

    Einmal editiert, zuletzt von erz (17. Mai 2013 um 22:59)

  • Hallo framp,

    er hat nicht nur dd anstelle von tar verwendet, er hat den Kopiervorgang auf einem anderen Rechner durchgeführt. Das bedeutet, dass das Raspbian System zu dem Zeitpunkt nicht aktiv war. Wie bereits weiter oben geschrieben sollte man auch ein laufendes System nicht kopieren. Du kannst nicht sicher stellen, dass alle Daten verfügbar sind und auch kopiert wurden. Es können sich nach wie vor irgendwelche Systemdaten im Cache befinden.

    Gruß Georg

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!