Forum Linux.général loop device sur une série de "petits" fichiers ? (et non un seul gros)

Posté par (page perso) . Licence CC by-sa
1
13
août
2015

Salut à tous,

Par pitié, ne me demandez pas « pour quoi faire ? » ; je vous le dirai plus tard si ça march'

Disons qu'il s'agit d'une question théorique, concernant la "boite à outils Linux".

Nous connaissons "tous" la possibilité d'obtenir un block-device sur un fichier, et de monter un FS qui s'y trouve par la même occasion avec :

mount -o loop example.img /home/you/dir

Mais imaginons que l'on n'ai plutôt une série de fichiers :

chunk0001 (16 Mio)
chunk0002 (16 Mio)
chunk0003 (16 Mio)

chunk0999 (16 Mio)

Serait-il possible de faire un loop device sur la concaténation ("virtuelle") de l'ensemble de ces fichiers ?

Du genre :

mount -o loopchk chunk /home/you/dir

Dans le cas qui m'intéresse, je précise, que chaque fichier aurait exactement la même taille, et leur nombre prédéfini.

L'une des conséquence qui m'intéresserait, serait que la date de modification de chaque fichier serait différente et correspondrait à une modification de la "zone" du block-device.

J'ai trouvé des pistes, mais qui ne mènent à plus rien d'actualité :(

http://chunksync.florz.de/ et ChunkFS

  • # pour quoi faire ?

    Posté par (page perso) . Évalué à 5.

    Oui mais pour quoi faire ?

    Sans blaguer, je te souhaite bonne chance dans ton aventure totalement chelou donc certainement inutile donc sûrement indispensable ;)

  • # UnionFS

    Posté par (page perso) . Évalué à 2.

    As-tu regardé de ce coté-ci ?
    AMHA ça devrait répondre à ton besoin. Mais au fait pour quoi faire ? Nan j'déconne.  ;-)

  • # Oui c'est possible

    Posté par . Évalué à 2.

    Tu peux regarder ce lien qui décrit comment faire pour concaténer virtuellement plusieurs fichiers en un seul.

    • [^] # Re: Oui c'est possible

      Posté par . Évalué à 2.

      Bon bin maintenant que quelqu'un propose une solution, on peut se lâcher !

      Alors, pourquoi faire ? :p

      • [^] # Re: Oui c'est possible

        Posté par (page perso) . Évalué à 2.

        Il s'agirait d'un NAS pour petite structures associatives (asbl en Belgique ; loi 1901 en France).

        Ce schéma n'illustre que l'aspect sécurité contre les désastres (sauvegardes externes) et les indiscrétions (chiffrement). D'autres dispositions sont prises pour les aspects défaillances matériels (RAID6) et "utilisateur" (genre rsnapshot).

        →

        Le but aussi étant d'utiliser des technologies et protocoles "simples". Par exemple, ne pas compter sur des protocoles tels que drbd ou avoir un accès root sur une machine distante, mais uniquement un accès FTP. La gestion des droits se fait au niveau du système de fichiers monté par loop device sur fsimage (ext4). Je sais qu'avec BTRFS, des tas de super choses similaires sont possibles, mais je préfère attendre encore pour BTRFS en production et aussi, BTRFS devrait alors également être installé sur la machine distante, configuré en cohérence et spécifiquement, etc. Hors en FTP, on peut très facilement mettre en place la solution.

        Par ailleurs, une autre machine à remonter le temps peut être utiliser côté machine distante sur les morceaux chiffrés. J'envisagerais également de désactiver le chiffrement des nom de fichier au niveaux eCryptFS car cela n'est pas nécessaire. Avec les noms de fichier originaux, les version chiffrée pourrait être manipuler sans crainte de les mélanger…

        • [^] # Re: Oui c'est possible

          Posté par . Évalué à 1.

          Si le besoin c'est juste avoir un NAS avec une sauvegarde incrémentale chiffrée, c'est super compliqué comme solution.

          Une solution plus simple est d'utiliser un système de fichiers classique dans un volume chiffrée et d'utiliser des outils de sauvegarde comme duplicity. Là aussi un simple accès ftp suffit.

          • [^] # Re: Oui c'est possible

            Posté par (page perso) . Évalué à 1.

            Merci, je vais investiguer du côté de duplicity… Par contre, je l'utiliserait sur la version chiffré du eCryptFS, de sorte à ce qui sorte soit chiffré et ne puisse pas être lisible par le propriétaire de l'ordinateur distant.

        • [^] # Re: Oui c'est possible

          Posté par . Évalué à 2.

          comme evoqué par d'autres ca me semble super compliqué à gérer.

          il se passe quoi si tu perd un des chunks chiffrés ?

          c'est un raid logiciel d'un ensemble de fichiers ?
          eux meme stockés sur un raid materiel ?

          tu as fait des essais ? ca donne quoi niveau performance ?

          parce que, plus simplement, tu as ton raid6 materiel, qui expose un disque (volume)
          dedans tu tailles des Volumes LVM,
          sur le volume tu peux mettre du cryptage,

          et pour le backup, tu fais un snapshot LVM pour figer la situation à un instant T, et c'est lui qui part en sauvegarde.

    • [^] # Re: Oui c'est possible

      Posté par (page perso) . Évalué à 1.

      Merci, ça mangera pas trop de pain de recopier ici les solutions en question…

      ln -s /path/to/first-file file.0
      ...
      ln -s /path/to/last-file file.19
      nbd-server -C /dev/null -m 127.0.0.1:12345 file
      
      nbd-client localhost 12345 /dev/nbd0

      Je vais me renseigner sur nbd. Vous connaissez ? C'est "bien" (solide, maintenu, etc.) ?

      J'aurai plusieurs milliers de "petits" fichiers, pour un total de plusieurs Go, voir To, par "petit" fichier d'une centaine de Mo maximum…

      … donc cette autre solution ne pourrait probablement pas faire l'affaire à cause d'un loop-device par "petit" fichier :

      losetup /dev/loop0 file1
      losetup /dev/loop1 file2
      s0=$(sudo blockdev --getsize /dev/loop0)
      s1=$(sudo blockdev --getsize /dev/loop1)
      printf '%s\n' "0 $s0 linear /dev/loop0 0" "$s0 $s1 linear /dev/loop1 0" | dmsetup create mybundle
      • [^] # Re: Oui c'est possible

        Posté par . Évalué à 2.

        En effet comme le fait remarquer NeoX le nombre de loop device possible n'est pas infinie. Avec plusieurs millier de fichiers tu vas dépasser cette limite.

        Sinon j'ai vu qu'il existe une solution reposant sur FUSE également appeler concat-fuse.

        Les sources sont disponibles sur github.

  • # raid ou LVM ?

    Posté par . Évalué à 2.

    tu dois pouvoir faire ca avec du LVM ou du raid (mdadm)

    tu peux faire des volumes à partir de fichier,
    et reconstruire un seul volume qui sera ton stockage finale.

  • # Limite systeme

    Posté par . Évalué à 3.

    attention si tu veux faire tes mount -o loop...
    il y a une limite du nombre de loop activable simultanéement sur une machine.

    ca depend des distribs

    des pistes avec losetup
    http://linux.die.net/man/8/losetup

    ou avec le module loop
    http://www.linuxquestions.org/questions/red-hat-31/how-to-increase-the-loop-devices-number-541717/

Suivre le flux des commentaires

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