Wiki RaspberryPi remplacer son Système de Fichier par F2FS (formatage)

1
10
fév.
2017

Introduction

  • F2FS ("flash-friendly file system") est un système de fichiers (filesystem) conçu pour les mémoires Flash. Sa conception lui permet d'être réputé plus rapide en écriture que les autres systèmes de fichiers (NTFS, ext4, zfs) sur les mémoires flash (SSD, eMMC, etc). La différence est significative sur raspberry pi.

Note : je vous conseil de d'abord tester sur une seconde carte mémoire
Note Bis : vous pouvez suivre exactement la même procédure pour formater la carte mémoire de votre appareil Android, arrêtez-vous juste après "Injection des fichiers précédemment sauvegardé"

Résumé de la procédure :

  1. Copie sur PC (Linux) de TOUS les fichiers de la carte SD/microSD du Raspberry Pi
  2. Formatage de la carte SD/microSD en F2FS
  3. Ré-injection des fichiers précédemment sauvegardés
  4. Édition des fichiers de démarrage du système

Mise en place en ligne de commande

Note : la carte mémoire du Raspberry Pi est divisée en deux partitions, une pour le boot (dont nous éditerons juste un fichier) et la seconde qui est celle que nous allons formater en F2FS et qui contient le Système de Fichier.

  1. Branchez votre carte mémoire à votre ordinateur

  2. Ouvrez un Terminal de commande (shell)

  3. Créez le dossier où ranger les fichiers du Raspberry Pi pendant le formatage

    mkdir /tmp/backup_sd

    • Ici j'ai choisi de créer un dossier dans /tmp/ ainsi le dossier et son contenu seront supprimés au redémarrage de la machine.
  4. Copiez les fichiers de votre carte mémoire vers un dossier sur votre ordinateur

    sudo cp -v -a /mnt/cartememoire/* /tmp/backup_sd

    • /mnt/cartememoire/ est le path du point de montage de votre carte mémoire (l'option -a est nécessaire). Sur Ubuntu par défaut le montage s'effectue dans /media/$USER/identifiant-partition-sur-carte-memoire/
  5. Installez le package f2fs-tools

    sudo apt-get install f2fs-tools

  6. Récupérez le path de la partition à formater. (par exemple /dev/sdf2)

    df -h

  7. Démontez la partition que nous allons formater

    sudo umount /media/$USER/identifiant-partition-sur-carte-memoire

  8. Formatage de la partition root de la carte mémoire

    sudo mkfs.f2fs /dev/sdf2

  9. Montage de la partition créée (sur ubuntu la partition s'auto-monte automatiquement)

    sudo mount -t f2fs /dev/sdf2 /media/raspberrypi

  10. Injection des fichiers précédemment sauvegardé

    sudo cp -v -a /tmp/backup_sd/* /mnt/cartememoire

  11. Éditez le fichier /etc/fstab sur la partition précédemment formatée de notre carte mémoire. La ligne correspondant à / (la racine) doit ressembler à quelque chose du style :

    /dev/mmcblk0p2 / f2fs defaults,noatime,discard 0 0

  12. Enfin remplacez rootfstype=ext4 par rootfstype=f2fs (en minuscule) dans le fichier cmdline.txt lui-même dans la partition intitulée "boot" de votre carte mémoire

  13. Démontez la carte SD

    sudo umount /dev/sdf1 & sudo umount /dev/sdf2

  14. C'est terminé !

  • # Participez

    Posté par . Évalué à 1 (+0/-0).

    La page wikipedia francophone traitant de F2FS est quasi vide, n'hésitez pas à y contribuer svp :) (voila l'anglophone)

    Donation Bitcoin : 1N8QGrhJGWdZNQNSspm3rSGjtXaXv9Ngat

  • # Question

    Posté par . Évalué à 4 (+0/-0).

    Merci, très intéressant.
    Quelles sont sommairement les qualités de f2fs par rapport à ext4 par exemple ?
    De manière plus précise, voici mes questions:
    - est ce que f2fs est moins sensible à la corruption des cartes SD sur un RPi ?
    - est ce que f2fs est un meilleur choix pour un mobile Android si la ROM de ce dernier le supporte ?

    • [^] # Re: Question

      Posté par . Évalué à 1 (+0/-0).

      Il va falloir l'expertise des autres LinuxFRiens car pour le moment je suis hélas dans l'incapacité de répondre à tes questions et je m'en excuse.
      J'ai découvert F2FS hier en lisant la dépêche sur le dernier kernel qui m'a donné envie de tester ce FS, voir se qu'il a dans le ventre :) (le fait que Samsung soit derrière a aussi participé à ma motivation: pour mes RPI j'ai testé des cartes microSD de chez Samsung, Kingston et Sandisk et pour le moment les samsung sont celles qui m'ont le mieux marqué (sans vouloir faire de pub)).

      Donation Bitcoin : 1N8QGrhJGWdZNQNSspm3rSGjtXaXv9Ngat

  • # réflexe

    Posté par . Évalué à 2 (+0/-0). Dernière modification le 12/03/17 à 22:43.

    Par habitude j'aurai utilise tar (+gz) au lieu de cp.
    Je dirai que c'est plus rapide, plus fiable et que ça prend moins de place.
    J'ai pas vraiment benché…

    • [^] # Re: réflexe

      Posté par . Évalué à 0 (+0/-0). Dernière modification le 17/03/17 à 00:23.

      Ici cp est utilisé avec l'argument -a qui signifie "conserve les droits/permissions des fichiers/dossiers". tar permet de faire ça?

      Tite question : cp vérifie-t-il les fichiers après copie (par exemple via hash)?

      Donation Bitcoin : 1N8QGrhJGWdZNQNSspm3rSGjtXaXv9Ngat

      • [^] # Re: réflexe

        Posté par . Évalué à 2 (+0/-0).

        Le "a" de cp signifie "archive" et tar signifie "tape archive" donc oui, ça conserve tout ça.

        cp ne vérifie rien, pas plus que tar. zip le ferai.

        Ce que j'aime bien avec tar (valable avec zip) c'est que:

        • cela ne crée pas plein de fichiers sur le filesystem de destination. Pour ne pas les utiliser ensuite (puisque le but est de restaurer sur une autre carte).
        • cela permet d'utiliser la compression ce qui améliore les performances globales et réduit la taille de stockage.

        Tar permet de sauvegarder directement par le réseau, sans passer par un disque local (un peu comme rsync). Sur la destination : netcat -l -p port | tar x. Puis sur la source : tar c . > /dev/tcp/ipdestination/port

        Attention, aucune confidentialité avec ses commandes, tout passe en clair sur le réseau. Il serai possible de combiner ça avec du gpg -c pour avoir de la confidentialité.

        • [^] # Re: réflexe

          Posté par . Évalué à 0 (+0/-0).

          Tar permet de sauvegarder directement par le réseau, sans passer par un disque local (un peu comme rsync). Sur la destination : netcat -l -p port | tar x. Puis sur la source : tar c . > /dev/tcp/ipdestination/port

          C'est intéressant: on pourrait sauvegarder un système à chaud en utilisant ce procédé?
          scp serait sûrement plus intéressant que netcat :)

          zip le ferai

          Si zip vérifie la cohérence des fichiers, alors je penses que la prochaine édition du tuto utilisera cette commande :)

          cela permet d'utiliser la compression ce qui améliore les performances globales et réduit la taille de stockage.

          Réduire la taille du stockage oui, pour les performances je sais pas (il faut créer l'archive + compresser, je suppose que ça fait plus bosser le processeur qu'une simple copie)

          PS: merci pour ta participation ;)

          Donation Bitcoin : 1N8QGrhJGWdZNQNSspm3rSGjtXaXv9Ngat

Envoyer un commentaire

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.