Aktionen

EXT4 Festplatte am Raspberry Pi mounten und formatieren

Aus znilwiki

Nach dem ich feststellen musste das eine USB-Festplatte mit NTFS-Dateisystem eine erbärliche Schreibperfomance hat wollte ich den Gegentest mit EXT4 machen - hier nun wie es geht.



Festplatte anschliessen und finden

Steckt die Platte an den USB-Anschluss eures Raspberry Pi ... und dann?
Und dann müssen wir diese suchen ...


Festplatte finden über lshw -C disk

Befehl:

lshw -C disk

Ausgabe:

 *-disk:0
      description: SCSI Disk
      physical id: 0.0.0
      bus info: scsi@2:0.0.0
      logical name: /dev/sda
      size: 32GiB (34GB)
      capabilities: partitioned partitioned:dos
      configuration: sectorsize=512 signature=00028135
 *-disk:1
      description: SCSI Disk
      physical id: 0.1.0
      bus info: scsi@2:0.1.0
      logical name: /dev/sdb
      size: 200GiB (214GB)
      capabilities: partitioned partitioned:dos
      configuration: sectorsize=512 signature=6da8bd46
 *-cdrom
      description: DVD-RAM writer
      physical id: 0.0.0
      bus info: scsi@1:0.0.0
      logical name: /dev/cdrom
      logical name: /dev/sr0
      capabilities: audio cd-r cd-rw dvd dvd-r dvd-ram
      configuration: status=open




Festplatte finden über /var/log/messages

macht ein

cat /var/log/messages

und ihr erhaltet etwas wie das hier:

Dec  1 20:40:15 piap kernel: [    3.771767] usb 1-1.2.3: new high-speed USB device number 5 using dwc_otg
Dec  1 20:40:15 piap kernel: [    3.933914] usb 1-1.2.3: New USB device found, idVendor=174c, idProduct=5106
Dec  1 20:40:15 piap kernel: [    3.945461] usb 1-1.2.3: New USB device strings: Mfr=2, Product=3, SerialNumber=1
Dec  1 20:40:15 piap kernel: [    3.955812] usb 1-1.2.3: Product: AS2105
Dec  1 20:40:15 piap kernel: [    3.963266] usb 1-1.2.3: Manufacturer: ASMedia
Dec  1 20:40:15 piap kernel: [    3.970432] usb 1-1.2.3: SerialNumber: S1WFJ9EB132942
Dec  1 20:40:15 piap kernel: [    4.001559] scsi0 : usb-storage 1-1.2.3:1.0
Dec  1 20:40:15 piap kernel: [    5.012467] scsi 0:0:0:0: Direct-Access     SAMSUNG  HM500JI          2AC1 PQ: 0 ANSI: 5
Dec  1 20:40:15 piap kernel: [    5.039962] sd 0:0:0:0: [sda] 976773168 512-byte logical blocks: (500 GB/465 GiB)
Dec  1 20:40:15 piap kernel: [    5.057344] sd 0:0:0:0: [sda] Write Protect is off
Dec  1 20:40:15 piap kernel: [    5.567049]  sda: sda1
Dec  1 20:40:15 piap kernel: [    5.616699] sd 0:0:0:0: [sda] Attached SCSI disk

Wir sehen meine "Samsung HM500JI" Festplatte - und in der Fett gedruckten Zeile lesen wir 'sda1' - das ist Angabe die wir suchen!



Festplatte finden über dmesg

Einfach den Befehl

dmesg

eingeben, da kommt im Prinzip das gleiche wie zuvor:

[    4.001559] scsi0 : usb-storage 1-1.2.3:1.0
[    5.012467] scsi 0:0:0:0: Direct-Access     SAMSUNG  HM500JI          2AC1 PQ: 0 ANSI: 5
[    5.039962] sd 0:0:0:0: [sda] 976773168 512-byte logical blocks: (500 GB/465 GiB)
[    5.057344] sd 0:0:0:0: [sda] Write Protect is off
[    5.071617] sd 0:0:0:0: [sda] Mode Sense: 23 00 00 00
[    5.072605] sd 0:0:0:0: [sda] No Caching mode page present
[    5.080839] sd 0:0:0:0: [sda] Assuming drive cache: write through
[    5.110083] sd 0:0:0:0: [sda] No Caching mode page present
[    5.131514] sd 0:0:0:0: [sda] Assuming drive cache: write through
[    5.567049]  sda: sda1
[    5.582282] sd 0:0:0:0: [sda] No Caching mode page present
[    5.590557] sd 0:0:0:0: [sda] Assuming drive cache: write through
[    5.616699] sd 0:0:0:0: [sda] Attached SCSI disk
[    5.634986] Registered led device: led0




Festplatte finden über /dev/

Einfach ein

ls -l /dev/sd*

gibt eine Ausgabe wie diese:

brw-rw---T 1 root floppy 8, 0 Jan  1  1970 /dev/sda
brw-rw---T 1 root floppy 8, 1 Jan  1  1970 /dev/sda1

Die erste können wir Ignorieren, die letzte ist es!

Important.png
Hinweis: Wenn Ihr kein /dev/sda1 habt sondern nur /dev/sba so gibt es noch gar keine Partition auf der Festplatte. Dann müsst Ihr zuvor eine erstellen - siehe nächsten Abschnitt




Partition erstellen

Warning.png
Warnung: Das müsst Ihr nur machen falls Ihr noch keine Partition habt, also kein /dev/sda1 sondern nur /dev/sda


Wir tippen ein:

fdisk /dev/sda

Da kommt dann vil Text und die Aufforderung

Command (m for help):

Wir drücken

n

um eine neue Partition zu erstellen und dann

p

für eine Primäre Partition, dann

1

für die erste Partition.
Dann drückt 2x Enter um die vorgeschlagenen Werte zu übernehmen.
Jetzt sollte da wieder

Command (m for help):

stehen und wir drücken

w

um das ganze auf die Platte zu schreiben.

Das sollte also etwas so aussehen:

root@pi7 ~ # fdisk /dev/sda
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0xb24e7835.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

The device presents a logical sector size that is smaller than
the physical sector size. Aligning to a physical sector (or optimal
I/O) size boundary is recommended, or performance may be impacted.

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

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

Calling ioctl() to re-read partition table.
Syncing disks.




Festplatte mit EXT4 Dateisystem formatieren

Wenn Ihr die Festplatte formatieren wollt:

  • Erst formatieren
  • Dann mounten!
  • Sonst vorher unmounten (siehe letzten Abschnitt)

Formatieren ist auch ganz einfach:

mkfs.ext4 /dev/sda1

Ausgabe sollte wie folgt sein:

mke2fs 1.42.5 (29-Jul-2012)
Dateisystem-Label=
OS-Typ: Linux
Blockgröße=4096 (log=2)
Fragmentgröße=4096 (log=2)
Stride=0 Blöcke, Stripebreite=0 Blöcke
30531584 Inodes, 122095872 Blöcke
6104793 Blöcke (5.00%) reserviert für den Superuser
Erster Datenblock=0
Maximale Dateisystem-Blöcke=0
3727 Blockgruppen
32768 Blöcke pro Gruppe, 32768 Fragmente pro Gruppe
8192 Inodes pro Gruppe
Superblock-Sicherungskopien gespeichert in den Blöcken:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
        102400000

Platz für Gruppentabellen wird angefordert: erledigt
Inode-Tabellen werden geschrieben: erledigt
Erstelle Journal (32768 Blöcke): erledigt
Schreibe Superblöcke und Dateisystem-Accountinginformationen: erledigt




Festplatte mounten

Mounten ist der englische Begriff dafür die Festplatte einzubinden (ich übersetze das mal mit 'to mount' = 'etwas montieren')
Wir wissen das die Platte in diesem Fall sda1 heisst.
Zuvor brauchen wir jedoch einen Ort = Verzeichnis welches dann für düe Festplatte steht.
Typische Ort dafür sind

/mnt/...
/media/...

'mnt' ist dabei eher für "interne" Medien gedacht, 'media' eher für externe - na gut, nehmen wir 'media' und erstellen uns ein neues Verzeichnis

mkdir /media/Samsung500

Den Namen könnt Ihr völlig frei wählen.

In diese neue, leere (!!!) Verzeichnis mounten wir nun die Festplatte:

mount /dev/sda1 /media/Samsung500/




Mounten überprüfen

Ob das geklappt habt können wir auf mehrere Arten testen:



mtab

cat /etc/mtab

ergibt eine Liste an (wahrscheinlich) deren Ende unsere neuer Platte steht:

rootfs / rootfs rw 0 0
/dev/root / ext4 rw,noatime,data=ordered 0 0
devtmpfs /dev devtmpfs rw,relatime,size=240492k,nr_inodes=60123,mode=755 0 0
tmpfs /run tmpfs rw,nosuid,noexec,relatime,size=49752k,mode=755 0 0
tmpfs /run/lock tmpfs rw,nosuid,nodev,noexec,relatime,size=5120k 0 0
proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0
sysfs /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0
tmpfs /run/shm tmpfs rw,nosuid,nodev,noexec,relatime,size=99500k 0 0
devpts /dev/pts devpts rw,nosuid,noexec,relatime,gid=5,mode=620 0 0
/dev/mmcblk0p5 /boot vfat rw,relatime,fmask=0022,dmask=0022,codepage=cp437,iocharset=ascii,shortname=mixed,errors=remount-ro 0 0
fusectl /sys/fs/fuse/connections fusectl rw,relatime 0 0
/dev/sda1 /media/Samsung500 fuseblk rw,nosuid,nodev,relatime,user_id=0,group_id=0,allow_other,blksize=4096 0 0




df -l

oder wie schauen uns die Datenträger an: (-l steht für "nur lokale Dateisysteme", -h für "Lesbar für Menschen" - dann nimmt der MByte und Gigybyte)

df -l -h


Dateisystem    Größe Benutzt Verf. Verw% Eingehängt auf
rootfs           15G    4,0G   10G   29% /
/dev/root        15G    4,0G   10G   29% /
devtmpfs        438M       0  438M    0% /dev
tmpfs            88M    260K   88M    1% /run
tmpfs           5,0M       0  5,0M    0% /run/lock
tmpfs           175M       0  175M    0% /run/shm
/dev/mmcblk0p1   56M     16M   41M   28% /boot
/dev/sda1       917G    108G  763G   13% /media/Samsung500
none            438M       0  438M    0% /sys/fs/cgroup




Kleiner Benchmark der Leistung?

Nur aus Spaß - mal eben testen wie schnell die Festplatte denn ist.
Zuerst ins Verzeichnis der Festplatte:

cd /media/WDMyPassport/

Und dann der Benchmark den ich auch für den Test der SD-Karten einsetze (Gemäß http://elinux.org/RPi_SD_cards#Terminal_Commands, nur angepasst)

sync; time dd if=/dev/zero of=./test.tmp bs=500K count=1024; time sync
dd if=./test.tmp of=/dev/null bs=500K count=1024
rm ./test.tmp


Bei mir ergab das folgendes:

1024+0 Datensätze ein
1024+0 Datensätze aus
524288000 Bytes (524 MB) kopiert, 19,3391 s, 27,1 MB/s

real    0m19.396s
user    0m0.020s
sys     0m9.510s 

real    0m0.678s
user    0m0.010s
sys     0m0.000s
root@piap /media/Samsung500 #  dd if=./test.tmp of=/dev/null bs=500K count=1024
1024+0 Datensätze ein
1024+0 Datensätze aus
524288000 Bytes (524 MB) kopiert, 22,3363 s, 23,5 MB/s

Damit ist die Schreibrate schon mal erheblich besser als die Festplatte mit NTFS (die hatte nur 3,9 MB/s geschafft)


Unmounten der Festplatte

Tja, hat ja alles gut geklappt - und nun wieder ab damit:

umount /dev/sda1

prüfen können wir das wieder mit dem

df -l -h

da sollte der letzte Eintrag dann wieder fehlen.

Kommt da ein

umount: /media/WDMyPassport: device is busy.
       (In some cases useful info about processes that use
        the device is found by lsof(8) or fuser(1))

dann geht z.B. mit

cd /

vorher wieder aus dem Verzeichnis raus - bzw. irgendeins hat irgendetwas noch auf der Platte offen oder greift darauf zu



Automatisch beim Booten mounten

So, klappt alles - aber leider ist die Platte nach dem nächsten Reboot nicht mehr da. Wer diese dauerhaft mounten will hat verschiedene Möglichkeiten - die hier vorgestellte ist nur eine davon.
Die Methode hier hat das die Platte X auch immer zu Verzeichnis Y gemountet wird, auch wenn diese mal an einem anderen Port hängt oder mal nicht die sda1 sondern die sda2 ist.



UUID herausbekommen

Wir geben folgenden Befehl ein:

ls -l /dev/disk/by-uuid/

und erhalten eine Ausgabe wie diese:

lrwxrwxrwx 1 root root 15 Jan  1  1970 03A0-BE2D -> ../../mmcblk0p5
lrwxrwxrwx 1 root root 15 Jan  1  1970 1ae5432c-b5bf-41fe-aff5-e8453cdf08d3 -> ../../mmcblk0p3
lrwxrwxrwx 1 root root 15 Dez 15 22:51 5e37cae6-21bb-45a0-b40d-fbb17b5db0d2 -> ../../mmcblk0p6
lrwxrwxrwx 1 root root 15 Jan  1  1970 9016-4EF8 -> ../../mmcblk0p1
lrwxrwxrwx 1 root root 10 Dez 15 22:51 efd48c69-3780-44f2-8262-1f54c1a4aae6 -> ../../sda1

Der letzte Eintrag mit dem sda1 am Ende - das ist unser. Die UUID ist der Wert in der Mitte - hier also efd48c69-3780-44f2-8262-1f54c1a4aae6



Festplatte in fstab eintragen

Erst eine Kopie der sensiblen Datei:

cp /etc/fstab /etc/fstab.backup

und dann bearbeiten

nano /etc/fstab

Für die obige Festplatte würden wir folgende Zeile hinzufügen:

UUID=efd48c69-3780-44f2-8262-1f54c1a4aae6 /media/usbdisk ext4 defaults 0 0

Die Werte bedeuten:

UUID=efd48c69-3780-44f2-8262-1f54c1a4aae6   : Die UUID des Datenträgers
/media/usbdisk                              : Das Verzeichnis in das gemountet werden soll
ext4                                        : Welches Dateisystem soll gemountet werden, ggf. auch mit auto probieren
defaults                                    : Mit Standardeinstellungen / Rechten mounten, Detail siehe z.B. hier: https://wiki.archlinux.de/title/Fstab
0                                           : Für den Befehl Dump, 0 bedeutet "keine Systempartition"
0                                           : Für Dateisystemprüfung, 0 bedeutet "ohne Prüfung" einbinden


Als Test einen kleinen Reboot - danach sollte die Platte weiterhin/wieder eingehängt sein.



Loading comments...