Pourquoi RAID 0 ne peut-il pas utiliser tout l'espace disque sur deux disques de tailles différentes?

10

Pour citer l'article Wikipedia sur RAID :

Un RAID 0 peut être créé avec des disques de tailles différentes, mais l'espace de stockage ajouté à la baie par chaque disque est limité à la taille du plus petit disque. Par exemple, si un disque de 100 Go est agrégé par bandes avec un disque de 350 Go, la taille de la baie sera de 200 Go (100 Go × 2).

L'article ne précise cependant pas pourquoi il ne peut pas les RAID ensemble et utiliser tout l'espace disque. Je comprends que le striping écrit entre les deux, mais cela ne devrait sûrement pas empêcher l' écriture sur les derniers secteurs du deuxième disque, tout en fonctionnant avec des performances dégradées? Existe-t-il un système RAID alternatif (par exemple RAID logiciel) qui offre une telle fonctionnalité?

Polynôme
la source
Je ne sais pas si cela fonctionnerait avec certains raids matériels mais avec des raids logiciels, afin de tirer parti de certains aspects du raid 0 tout en utilisant plus d'espace disponible sur deux disques de tailles différentes comme un 100 Go et un 350 Go, vous pouvez essayer de créer 3 100 Go de partitions sur le plus grand lecteur, et agréger la partition de 100 Ko sur le premier et les 3 partitions de 100 Go sur le deuxième lecteur. Le niveau de raid 0 vous donnera 400 concerts à utiliser tout en augmentant les performances de lecture / écriture, mais ce serait probablement moins que si vous agrégiez deux disques de 200 Go.
Keith Reynolds
Normalement, vous ne voudriez pas faire cela, à des fins de démonstration, j'ai configuré un RAID0 en utilisant un lecteur flash 1G et 16G. J'ai fait une partition étendue remplissant chaque disque. Ensuite, j'ai fait une partition de 981 Mo sur chaque disque jusqu'à ce qu'ils soient pleins. Ensuite, j'ai fait un raid en utilisant les 16 partitions avec la commande sur linux mdadm --create --verbose /dev/md0 --chunk=512 -l0 -n16 /dev/sdd5 /dev/sde5 /dev/sde6 /dev/sde7 /dev/sde8 /dev/sde9 /dev/sde10 /dev/sde11 /dev/sde12 /dev/sde13 /dev/sde14 /dev/sde15 /dev/sde16 /dev/sde17 /dev/sde18 /dev/sde19. Je me suis retrouvé avec moins d'espace que je venais d'utiliser le lecteur de 16 Go
Keith Reynolds

Réponses:

11

La raison pour laquelle la taille est limitée à la taille du plus petit disque a à voir avec le fait que les bandes sont écrites "alternativement" et doivent être de la même taille.

Dans un système à deux disques, toutes les bandes impaires sont sur un disque, les paires sur l'autre. Les écritures alternent entre les disques, impair / pair / impair / pair / ...

Étant donné que les bandes doivent être de la même taille et associées (pour deux disques), vous êtes limité à un espace utilisable maximal de 2 * (taille du plus petit disque).

Bob
la source
3

Vous pouvez utiliser l'espace restant. Vous pouvez créer un volume en utilisant l'espace restant, ou même l'utiliser dans le cadre d'un autre RAID. Cependant, l'utilisation de cet espace supplémentaire dégradera les performances que RAID 0 vous offre, car deux processus différents peuvent essayer d'accéder au même contrôleur physique et au même disque.

Pourquoi ne pouvez-vous pas ajouter cet espace supplémentaire au RAID d'origine? Eh bien, sans entrer dans les détails, c'est à cause des algorithmes que les RAID utilisent. RAID 0 écrit sur le premier disque du RAID puis sur le suivant. Cela augmente les performances, car il n'a pas besoin d'attendre que le disque précédent ait fini de lire ou d'écrire. Si les 250 Go de votre publication étaient utilisés, la majorité de l'écriture se ferait sur le premier disque, éliminant à peu près tout gain de performances.

Le RAID n'est peut-être pas la solution que vous recherchez, si vous souhaitez utiliser tout l'espace des disques, vous devez couvrir plusieurs volumes. La répartition vous permet de prendre plusieurs volumes et de les concaténer ensemble dans un seul grand volume. La répartition n'offre aucune augmentation de performances ou redondance.

Keltari
la source
Cela n'explique pas pourquoi il ne peut pas utiliser les deux disques en un seul volume. De plus, la partie volumes séparés ne causera aucun problème de performances - le contrôle d'E / S disque à bas niveau est géré par des interruptions via disk.sys, de sorte que les demandes de lecture / écriture sont de toute façon canalisées et Windows prend également en charge les E / S chevauchées.
Polynôme
Ok, vous mettez à jour ne l'expliquez toujours pas. Je connais le fonctionnement de l'entrelacement, mais cela n'explique pas pourquoi il ne peut pas simplement passer en mode mono-disque (avec des performances mono-disque standard) une fois que le plus petit disque est plein. Merci d'avoir mentionné la répartition du volume - cela semble utile.
Polynôme
1
Parce que c'est comme ça que RAID fonctionne. Si vous le vouliez vraiment, vous pourriez RAID 0 ce que vous pourriez, puis créer un volume avec l'espace libre, puis couvrir le RAID et le volume supplémentaire. Mais je ne pense pas qu'un contrôleur RAID vous le permette. Vous pourrez peut-être le faire avec une combinaison de RAID matériel et logiciel.
Keltari
1
-1 "Cela augmente les performances, car il n'est pas nécessaire d'attendre que le disque précédent ait fini de lire ou d'écrire", la même chose pourrait être dite pour deux disques durs de tailles différentes en RAID 0
Celeritas
2
@Polynomial Ce ne serait pas RAID 0. Vous avez demandé pourquoi RAID 0 ne peut pas utiliser tout l'espace disque et vous répondez "pourquoi ne peut-il pas simplement ...". Il ne peut pas parce que c'est RAID 0. S'il faisait autre chose, ce serait autre chose.
David Schwartz
0

RAID est une pseudo-norme qui décrit comment les données peuvent être stockées sur une matrice de disques. La norme décrit quatre façons différentes de stocker des données (techniquement plus, mais surtout personne ne se soucie des autres):

Raid-0: Striping. Chaque bloc de données est réparti sur chaque membre du périphérique RAID. Pas de redondance, il s'agit donc plus d'une matrice de disques bon marché, pas d'une matrice redondante de disques bon marché.

Raid-1: Mise en miroir. Chaque bloc de données est stocké sur chaque disque de la baie. Cela ne fait vraiment que depuis avec deux disques. RAID 1/0 ou simplement RAID 10 est une combinaison de mise en miroir et de répartition et peut être utilisé pour tirer parti de plus de deux disques.

Raid-5: Parité. Chaque bloc de données est réparti sur chaque membre du périphérique RAID + un disque est dédié à la parité.

Raid-6: Double Parité: Identique au Raid-5, mais avec deux disques de parité.

C'est ça. Raid ne décrit pas ce qu'il faut faire en cas de mauvaise correspondance de taille ou quoi que ce soit, mais le striping ne fonctionne vraiment qu'avec des disques de taille égale. En règle générale, la façon de contourner ce problème est que vous pouvez utiliser l'espace restant comme un lecteur de disque distinct.

En vous éloignant du RAID pour créer une grande baie de disques, vous pouvez utiliser des choses comme ZFS et simplement ajouter des disques à un pool de stockage. ZFS essaierait toujours d'utiliser les deux disques aussi efficacement que possible, et vous pourriez indiquer à ZFS le niveau de redondance qui vous convient.

Les technologies antérieures sont des choses comme le mappage de volume (c'est-à-dire LVM, ou son équivalent Windows), qui font abstraction de l'idée de mapper des blocs sur disque à un niveau supérieur. Avec LVM, vous pouvez couvrir plusieurs disques, étendre des partitions, avoir des partitions non contiguës, etc. Le mappage de volume n'est pas RAID, et plutôt que d'augmenter les performances à mesure que vous augmentez les disques, il choisira simplement au hasard d'écrire sur un disque ou l'autre selon l'endroit où vous vous trouvez dans le système de fichiers. C'est ce qu'on appelle la répartition et est généralement meilleur que RAID si vous optez pour des IOPS plutôt que des performances brutes.

Clarus
la source
0
A RAID 0 can be created with disks of differing sizes, but the storage
space added to the array by each disk is limited to the size of the
smallest disk.

Cela peut être vrai et le sera pour la plupart des implémentations RAID0. Mais pas pour tous.

Il y a deux raisons d'utiliser RAID 0:

  1. Concatène plusieurs disques en un seul gros volume.
  2. Performance.

L'option 2 est la plus courante et je pense qu'elle est utilisée dans presque toutes les implémentations RAID 0 actuelles. L'explication technique est que les informations sont écrites en alternance entre les disques.

D'une manière non technique: considérez les disques comme deux livres. Ces livres ont des vitesses d'accès (lecture / écriture) limitées. Donc, plutôt que deux livres de 100 pages, nous les reformatons en deux livres mais renumérotons les pages afin que tous les nombres pairs soient écrits dans un livre et tous les nombres impairs dans l'autre livre.

Maintenant, notre nouveau «livre R0» se comporte comme s'il s'agissait d'un seul livre avec deux fois le nombre de pages et deux fois la vitesse.


L'option 1 peut être aussi simple que «coller des livres dos à dos». Dans ce cas, vous n'avez pas de gain de vitesse, mais vous pouvez coller des livres avec un nombre de pages différent. Il me semble me souvenir de certaines implémentations «RAID0» comme celle-là vers 1990. Mais ce n'est pas ce que la plupart des gens considéreraient comme «RAID 0 approprié».

Hennes
la source