J'ai le même problème que la plupart des gens: comment créer une solution de stockage personnel fiable avec le fait que:
- Les disques durs tombent en panne avec une régularité alarmante. La perte de fichiers est inacceptable.
- J'achèterai un nouveau disque dur de temps en temps. Inévitablement, le meilleur prix / Go est d'une taille différente de celle du dernier achat de disque dur.
2 signifie qu'au fil du temps, j'ai une collection hétérogène de disques. Je veux les utiliser tous, et les disques défectueux seront généralement remplacés par des disques plus gros.
- L'intégrité et la fiabilité des données sont plus importantes pour moi que la vitesse.
Donc, après m'être cogné la tête contre ce problème pendant quelques jours (et à l'arrière de ma tête pendant des années), je propose la solution suivante. Je décrirai une solution que j'ai testée sur la base de Linux natif ZFS qui est disponible dans un PPA Ubuntu , mais LVM, MD et btrfs peuvent être utilisés pour y parvenir. Pour cela, j'utiliserai RAID1 (miroirs ZFS vdevs).
- Compte tenu de votre ensemble de lecteurs, regroupez-les en deux ensembles de disques, de sorte que la capacité de chaque ensemble soit aussi proche que possible de l'autre.
- Partitionnez les disques plus gros de sorte qu'il existe une partition exactement de la même taille que l'un des disques plus petits, dans l'autre groupe.
- Créez des vdev en miroir de sorte que chaque disque ait son miroir sur un autre disque.
Par exemple, considérons un ensemble de disques d'un nouveau lecteur de 2 To, d'un ancien lecteur de 750 Go, de 2 anciens lecteurs de 400 Go et d'un ancien lecteur de 500 Go. Le partitionnement miroir optimal a 2 To d'espace utilisable et est décrit dans le diagramme suivant où ':' sépare les partitions et '|' sépare les disques:
+------------------------------------------------------------------+
| 2TB (sda1) : (sda2) : (sda3) : (sda4) |
+------------------------------------------------------------------+--+
| 750 GB (sdb) | 400 GB (sdc) | 400 GB (sdd) | 500 GB (sde1) :XX|
+---------------------------------------------------------------------+
Créez votre zpool en tant que
zpool create archive mirror /dev/sda1 /dev/sdb mirror /dev/sda2 /dev/sdc mirror /dev/sda3 /dev/sdd mirror /dev/sda4 /dev/sde1
Cela crée 4 vdev en miroir. Si l'un des disques tombe en panne, il peut être remplacé (par n'importe quel disque) et partitionné pour recréer les partitions manquantes. Il est important que les vdevs ZFS puissent être ajoutés à un pool mais pas supprimés . Donc, si cela est possible, lorsque vous achetez un nouveau disque, vous souhaitez réorganiser les vdev existants. Disons que le prochain achat était un disque de 3 To. Votre configuration optimale est de 3,5 To utilisable, comme décrit dans le diagramme suivant. Il s'agit maintenant de 5 paires vdev. Ceci peut être réalisé en partitionnant correctement et en échouant et repartitionnant successivement les disques.
+--------------------------------------------------------------+-------------+
| 3 TB (sdf1) : (sdf2) : (sdf3) : (sdf4) | 500GB (sde) |
+--------------------------------------------------------------+-------------+-+
| 2TB (sda1) | 400GB (sdb) | 400GB (sdc) | 750GB (sdd1) : (sdd2) :X|
+------------------------------------------------------------------------------+
Le maintien de cet appariement de disques en miroir peut également être effectué avec LVM ou avec MD RAID, l'idée étant de s'assurer que chaque disque a toujours un disque miroir ou une partition. Parce que tout est mis en miroir, nous sommes libres de faire échouer les disques et de réorganiser les partitions lorsque des disques sont ajoutés ou supprimés. En utilisant LVM ou MD, il serait possible de retirer des disques et de réduire la baie, si vous le souhaitez, au détriment d'outils de récupération moins sophistiqués dans ZFS par rapport à BTRFS.
Des commentaires sur cette procédure? Un bon script pourrait gérer l'allocation sans perte et le réarrangement des disques. Des commentaires sur LVM vs MD vs ZFS? Avez-vous des commentaires sur les performances de la baie étrangement partitionnée résultante? L'arrangement des données sur plusieurs partitions sur le même disque entraînera-t-il une recherche excessive de têtes et une défaillance précoce?
Développeurs BTRFS: tout le monde le veut et LVM ou MD ne sont pas techniquement nécessaires (et à mon avis, sous-optimaux). Faciliter la maintenance d'un tableau hétérogène redondant serait une fonctionnalité décourageante pour btrfs. C'est un hack sur LVM / MD / ZFS tel quel. Minimiser le resliver / resync est massivement souhaitable.
Oui, c'est évidemment le Drobo d'un pauvre homme. Il ne faut pas avoir besoin de matériel dédié pour ça ...