F2FS

Das Flash-Friendly File System (F2FS) ist ein Open-Source Projekt unter der Federführung von Samsung.  Es sorgt im Wesentlichen dafür, dass die Schreibzugriffe gleichmäßig über den Speicher verteilt werden. Das erhöht die Lebensdauer einer SD-Karte deutlich, weshalb F2FS eine gute Alternative zum Standard-Filesystem von Raspbian ist: ext4.

Sie können Ihr Raspbian nach F2FS migrieren, indem Sie einen USB-Stick als Zwischenspeicher verwenden.

Backup

Zunächst müssen Sie eine Sicherung der Daten von der SD-Karte und vom USB-Stick machen.

Konvertierung

Sie installieren die benötigten Softwarepakete.

sudo apt-get update
sudo apt-get install f2fs-tools

Das Dateisystem des USB-Sticks (in meinem Fall auf dem Device /dev/sda erkannt) wird mit fdisk für den Transfervorgang neu erstellt.

pi@raspberrypi:~ $ sudo fdisk /dev/sda

Welcome to fdisk (util-linux 2.29.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): p
Disk /dev/sda: 7.2 GiB, 7743995904 bytes, 15124992 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
Disklabel type: dos
Disk identifier: 0xc3072e18

Device     Boot Start      End  Sectors  Size Id Type
/dev/sda1        8064 15124991 15116928  7.2G 82 Linux swap / Solaris

Command (m for help): d
Selected partition 1
Partition 1 has been deleted.

Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p):

Using default response p.
Partition number (1-4, default 1):
First sector (2048-15124991, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-15124991, default 15124991):

Created a new partition 1 of type 'Linux' and of size 7.2 GiB.

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

pi@raspberrypi:~ $ sudo mkfs.ext4 /dev/sda1
mke2fs 1.43.4 (31-Jan-2017)
Creating filesystem with 1890368 4k blocks and 473280 inodes
Filesystem UUID: 923c060e-48fe-40e8-aa8b-025e934bc623
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done

Das Filesystem wird montiert und die Daten kopiert.

sudo mount /dev/sda1 /mnt
sudo rsync -avx / /mnt/

Boot from USB

Um von dem USB-Stick booten zu können, muss in der Datei /mnt/etc/fstab die Rootpartition auf /dev/sda1 gelegt werden.

proc            /proc           proc    defaults          0       0
PARTUUID=e1bb85a1-01  /boot           vfat    defaults          0       2
#PARTUUID=e1bb85a1-02  /               ext4    defaults,noatime  0       1
/dev/sda1             /               ext4    defaults,noatime  0       1
# a swapfile is not a swap partition, no line here
#   use  dphys-swapfile swap[on|off]  for that

In der Datei /boot/cmdline.txt wird der Eintrag root= angepasst.

dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/sda1 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait

Jetzt wird der Pi vom USB-Stick gebootet.

sudo umount /mnt
sudo shutdown -r 0

Boot from F2FS

Nun wird das Filesystem auf der SD-Karte initialisiert und anschließend alles zurück kopiert.

sudo mkfs.f2fs /dev/mmcblk0p2
sudo mount /dev/mmcblk0p2 /mnt
sudo rsync -avx / /mnt/

Um von dem F2FS booten zu können, muss in der Datei /mnt/etc/fstab die Rootpartition wieder zurück gelegt werden. Dieses mal ändert sich der Typ des Filesystems auf f2fs.

proc            /proc           proc    defaults          0       0
PARTUUID=e1bb85a1-01  /boot           vfat    defaults          0       2
PARTUUID=e1bb85a1-02  /               f2fs    defaults,noatime  0       1
# a swapfile is not a swap partition, no line here
#   use  dphys-swapfile swap[on|off]  for that

In der Datei /boot/cmdline.txt wird der Eintrag root= erneut und der Eintrag rootfstype= erstmalig angepasst.

dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=e1bb85a1-02 rootfstype=f2fs elevator=deadline fsck.repair=yes rootwait

Jetzt kann der USB-Stick entfernt und der Pi vom F2F2 gebootet werden.

sudo umount /mnt
sudo shutdown -r 0

Previous page: Lebensdauer der SD-Karten Next page: Network Boot