Utilisation persistante du périphérique en boucle dans mdadm

J'ai plusieurs espaces de stockage externes qui peuvent être montés avec samba/cifs .
Sur ces espaces, je veux créer un périphérique de raid.

Mon idée était la création de files de données avec

 dd if=/dev/zero of=/extStorages/storage[0..x]/data 

Maintenant, j'ai créé des périphériques en boucle avec

 losetup /dev/loop[0..x] /extStorages/storage[0..x]/data 

Et créer le périphérique de raid sur le dessus des périphériques de boucle

 mdadm --create /dev/md/md0 --level=<level> --raid-devices=x /dev/loop0 .. /dev/loopx mkfs.ext4 /dev/md/md0 mount /dev/md/md0 /Storage 

Cela fonctionne jusqu'au prochain redémarrage car les périphériques de boucle ne sont pas persistants.
Par conséquent, monter le raid sur fstab n'est pas possible.

Comment puis-je resoudre ceci?

Pour la persistance, vous devez écrire des choses dans le file de configuration mdamd:

 mdadm --verbose --detail --scan >> /etc/mdadm.conf 

Pour configurer les périphériques de boucle explicitement, j'ajoute normalement du code dans le /etc/rc.local . Si vous avez besoin de cela, vous pouvez monter le raid à partir de là aussi.

J'ai écrit un script init.d qui démarre et arrête le volume:

 #! /bin/sh ### BEGIN INIT INFO # Provides: networkRaid # Required-Start: $network $named $remote_fs $syslog # Required-Stop: # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: handles the 'network raid' ### END INIT INFO PATH=/sbin:/usr/sbin:/bin:/usr/bin . /lib/init/vars.sh . /lib/lsb/init-functions do_start() { losetup /dev/loop0 /extDrives/drive0/data losetup /dev/loop1 /extDrives/drive1/data losetup /dev/loop2 /extDrives/drive2/data mdadm --assemble /dev/md0 /dev/loop0 /dev/loop1 /dev/loop2 mount /dev/md0 /Storage } do_stop() { umount /Storage mdadm --stop /dev/md0 losetup -d /dev/loop0 losetup -d /dev/loop1 losetup -d /dev/loop2 } case "$1" in start) do_start exit 0 ;; restart|reload|force-reload) echo "Error: argument '$1' not supported" >&2 exit 3 ;; stop|status) do_stop exit 0 ;; *) echo "Usage: $0 start|stop" >&2 exit 3 ;; esac