Dois-je créer des zpools ZFS avec des disques ou des partitions entiers?

14

Je fais des zpools sur une machine FreeBSD. Lors de la création de zpools, j'observe ces deux cas:

  1. Si je prends raw diskset crée, zpoolje peux former des zpools et ils fonctionnent parfaitement.

  2. Si je formater des disques à l' aide gpartau freebsd-zfsformat, puis faire zpool ils travaillent aussi parfaitement.

En quoi je suis confus, quelle est la meilleure approche pour la création de zpools?

shivams
la source

Réponses:

8

Il est préférable d'utiliser des disques entiers avec ZFS, lorsque cela est possible.
Il n'est pas nécessaire de partitionner dans votre cas d'utilisation.

ewwhite
la source
Qu'entendez-vous par your use case. Pouvez-vous donner un cas où le partitionnement pourrait être utile?
shivams
Le partitionnement n'est utile dans ZFS que si vous avez une configuration ésotérique ou si vous utilisez certaines solutions SSD ou faites quelque chose d'étrange avec les périphériques ZIL et L2ARC . Et même dans ce cas, il est préférable d'utiliser uniquement des périphériques / disques entiers.
ewwhite
Mais pourquoi est-il préférable d'utiliser des disques entiers?
leetNightshade
1
@leetNightshade Parce qu'il n'y a pas beaucoup de disques de partitionnement de points lorsque vous utilisez ZFS avec lequel les systèmes de fichiers n'ont pas besoin de leurs propres partitions. De plus, lorsque ZFS "possède" le disque, il peut activer le cache d'écriture de disque pour obtenir de meilleures performances. Voir solarisinternals.com/wiki/index.php/…
jlliagre
1
@Grogi Avez-vous de bonnes preuves à l'appui?
leetNightshade
5

Utilisez une tranche / partition dédiée à ZFS par disque physique et laissez un espace non partitionné. De cette façon, si vous devez remplacer un lecteur et que le remplacement est 10 secteurs plus petit, vous pourrez toujours le faire ( http://www.freebsddiary.org/zfs-with-gpart.php ).

C'est ce que fait Solaris automatiquement, c'est ce que fait FreeNAS ( https://forums.freenas.org/index.php?threads/zfs-on-partitioned-disks.37079/ ) et c'est ce que fait ZoL lorsque vous lui donnez un disque entier - il va le partitionner ...

La surcharge pour traduire la position sur la partition en position sur le périphérique réel est négligeable. Ainsi, une fois que la partition est correctement alignée sur la limite du secteur physique, il n'y a aucune raison pour qu'elle se comporte différemment d'un périphérique de bloc entier.

Avec ZoL, la seule différence à ma connaissance est que ZoL basculera le planificateur de disque sur le noopmoment où le disque entier a été donné au vdev. Rien ne vous empêche de le régler manuellement.

Il n'y en a pas cependant ... Ne créez pas plus de partitions pour ZFS par disque et si vous décidez d'ignorer les conseils ci-dessus, ne construisez jamais de vdev à partir d'eux dans le même zpool. Cela tuera essentiellement les performances, car ZFS découpera les données entre les vdev et les iops séquentiels se transformeront en cauchemar de recherche ...

Grogi
la source
Pouvez-vous mettre un peu plus de lumière sur le comportement de zfs concernant la recherche de cauchemar avec les tranches de disque partagées / utilisées?
satch_boogie
Scénario le plus simple - vous créez un pool à partir de deux vdev, chacun une partition sur le même disque dur. Maintenant, vous voulez écrire un bloc de données suffisamment grand pour s'étendre sur les deux vdev. Malgré l'écriture séquentielle des données, le lecteur doit rechercher entre deux emplacements distincts pour les enregistrer.
Grogi
Ce comportement est-il le même si Pool_A utilise (sda1, sdb1, sdc3) et Pool_B utilise (sda2, sdb2, sdc3)
satch_boogie
Vous n'avez pas à leur écrire simultanément ... Si vous avez les vdev dans un pool, vous ne pouvez rien faire ...
Grogi
0

dans ma tête, cette question se pose en raison du doute si je peux désigner tard ce qui se trouve sur ce disque ... donc lorsque vous créez un pool sur tout le lecteur (oui, avec l'option -f, si nécessaire), zpool crée pratiquement une table de partition gpt et partitions de Solaris, comme ceci:

(fdisk -l ...)
...
Disklabel type: gpt
Disk identifier: 4CBE587E-23AF-8E4B-A7F0-B44AD6083171

Device          Start        End    Sectors  Size Type
/dev/sdd1        2048 3907010559 3907008512  1,8T Solaris /usr & Apple ZFS
/dev/sdd9  3907010560 3907026943      16384    8M Solaris reserved 1

il n'est donc pas vraiment nécessaire de créer des partitions manuellement ...

Taras Filatov
la source
Je ne considère pas ce que Solaris pratique le mieux sur freebsd. Par exemple, dans le cas de miroirs, vous pouvez remplacer les disques par des plus grands et étendre la taille du pool à la volée avec une seule commande ou même automatiquement s'il est configuré comme tel.
cstamas