web-dev-qa-db-fra.com

Comment créer un ensemble RAID USB 1 HDD btrfs auto-cicatrisant?

Le matériel est un disque USB externe alimenté par un bus de 2 To.

Ce que je veux, c'est une configuration RAID1 de 2x 1 To btrfs.

Est-ce possible? Comment?

__

Motivation

La motivation pour moi d'utiliser RAID1 btrfs est parce que je viens de lire un article sur la manière dont une telle configuration réparerait automatiquement les fichiers corrompus lorsque la somme de contrôle sur un volume échoue.

Exemple de ce qui peut arriver avec un .jpeg en retournant un bit (j'ai utilisé vim pour cela. :%!xxd -b)

enter image description hereenter image description here

6
king_julien

Je suppose que vous utilisez 2 lecteurs externes ou 1 boîtier abritant 2 lecteurs ou plus. Théoriquement, peu importe si les périphériques sont connectés via USB ou SATA, btrfs devrait être capable d'assembler la baie de disques une fois qu'il a trouvé les lecteurs/partitions individuels.

Vous devriez jeter un oeil au btrfs kernel wiki . Le premier cas d'utilisation semble couvrir ce que vous avez demandé:

mkfs.btrfs -m raid1 -d raid1 /dev/sda1 /dev/sdb1

Mais je ne suis pas sûr de la partie autocicatrisante. Je ne le sais que par ZFS.

4
LiveWireBT

Cette réponse est un guide pour montrer comment j'ai réussi.

Ma configuration est:

  • 1 lecteur USB externe (1 boîtier avec 1 lecteur)

Comment:

  1. J'ai créé une table de partitionnement GPT avec deux partitions primaires btrfs de taille égale en utilisant gparted. Nommez les partitions comme vous le souhaitez, les noms seront perdus lors de la création du RAID.

    enter image description here

  2. Obtenez les identifiants de périphérique:

    $ Sudo btrfs filesystem show
    Label: none  uuid: 607b4153-7aa9-444d-bc15-c5fe9038f255
        Total devices 2 FS bytes used 28.00KB
        devid    1 size 1.82TB used 2.03GB path /dev/sdc
        *** Some devices missing
    Label: 'Max'  uuid: b6647427-9f27-4157-b47b-77f74054b885
        Total devices 1 FS bytes used 28.00KB
        devid    1 size 931.49GB used 2.04GB path /dev/sdc1        // first one
    Label: 'Moritz'  uuid: d0eaf97d-249e-4b7c-88a5-b60cc2d489d9
        Total devices 1 FS bytes used 28.00KB
        devid    1 size 931.49GB used 2.04GB path /dev/sdc2        // second one
    
  3. Créez le RAID:

    $ Sudo mkfs.btrfs -L RAID-Datensicherung -m raid1 -d raid1 /dev/sdc1 /dev/sdc2
    
  4. Comme vous ne pouvez pas encore y écrire, vous devez devenir propriétaire du nouveau périphérique et modifier les autorisations. Montez l'appareil dans nautiilus ou cependant et ensuite:

    $ cd /media
    $ Sudo chown julien:julien RAID-Datensicherung
    $ Sudo chmod 700 RAID-Datensicherung
    
  5. Une fois que vous avez démonté et remonté l'appareil, vous pouvez copier des fichiers par glisser-déposer.

Lors du montage de l'appareil dans Nautilus, deux volumes apparaissent, mais un seul d'entre eux apparaît comme étant monté.

enter image description here

Une fois que vous copiez des fichiers sur le disque à partir d'un autre lecteur externe, vous constaterez que la vitesse d'écriture sur le volume RAID est deux fois supérieure à la vitesse de lecture de l'autre périphérique externe en raison de la mise en miroir du raid.

enter image description here

Il me reste à découvrir comment vérifier si l'auto-guérison fonctionne et mettra à jour cette réponse en conséquence.

Mise à jour 1

L'utilisateur @Oli demande à la question relative de retourner un bit . Tout comme lui, je dois faire ceci furtif , c’est-à-dire sans horodatage de mon interaction ou quoi que ce soit du genre.

Si vous modifiez un bit alors que le système de fichiers est monté, la modification est enregistrée et immédiatement répliquée. Le fichier modifié/"corrompu" est considéré comme une simple mise à jour - pas comme bitrot .

5
king_julien