20.8. Création d'un espace de noms DAX de système de fichiers sur un NVDIMM
Configurez un périphérique NVDIMM attaché à votre système, en mode système de fichiers DAX pour prendre en charge un système de fichiers avec des capacités d'accès direct.
Envisagez les options suivantes :
- Reconfiguration d'un espace de noms existant en mode DAX du système de fichiers.
- Création d'un nouvel espace de noms DAX du système de fichiers s'il y a de l'espace disponible.
La technologie DAX du système de fichiers est fournie uniquement en tant qu'aperçu technologique et n'est pas prise en charge par Red Hat.
20.8.1. NVDIMM en mode d'accès direct au système de fichiers
Lorsqu'un périphérique NVDIMM est configuré en mode d'accès direct au système de fichiers (système de fichiers DAX, fsdax
), vous pouvez créer un système de fichiers au-dessus de lui. Toute application qui effectue une opération mmap()
sur un fichier de ce système de fichiers obtient un accès direct à son stockage. Cela permet d'utiliser le modèle de programmation à accès direct sur les NVDIMM.
À partir de Red Hat Enterprise Linux 8, les nouvelles options -o dax
suivantes sont désormais disponibles, et le comportement d'accès direct peut être contrôlé via un attribut de fichier si nécessaire :
-o dax=inode
Il s'agit de l'option par défaut lorsque vous ne spécifiez aucune option dax lors du montage d'un système de fichiers. Cette option vous permet de définir un drapeau d'attribut sur les fichiers afin de contrôler si le mode dax peut être activé. Si nécessaire, vous pouvez définir cet indicateur sur des fichiers individuels.
Vous pouvez également définir cet attribut pour un répertoire et tous les fichiers de ce répertoire seront créés avec le même attribut. Vous pouvez définir cet attribut en utilisant la commande
xfs_io -c 'chattr x'
nom-du-répertoire.-o dax=never
-
Avec cette option, le mode dax ne sera pas activé même si l'indicateur dax est défini sur un mode
inode
. Cela signifie que l'attribut dax par nœud est ignoré et que les fichiers définis avec cet attribut ne seront jamais activés pour l'accès direct. -o dax=always
Cette option est équivalente à l'ancien comportement de
-o dax
. Avec cette option, vous pouvez activer le mode d'accès direct pour n'importe quel fichier du système de fichiers, quel que soit le drapeau d'attribut dax.AvertissementDans les versions ultérieures, il se peut que
-o dax
ne soit pas pris en charge et, le cas échéant, vous pouvez utiliser-o dax=always
à la place. Dans ce mode, chaque fichier peut être en accès direct.- Attribution de métadonnées par page
Ce mode nécessite l'allocation de métadonnées par page dans la DRAM du système ou sur le périphérique NVDIMM lui-même. La surcharge de cette structure de données est de 64 octets par page de 4 Ko :
- Sur les petits appareils, la quantité de frais généraux est suffisamment faible pour être intégrée sans problème dans la DRAM. Par exemple, un espace de noms de 16 Go ne nécessite que 256 Mo pour les structures de pages. Étant donné que les dispositifs NVDIMM sont généralement petits et coûteux, il est préférable de stocker les structures de données de suivi des pages dans la DRAM.
Sur les dispositifs NVDIMM de plusieurs téraoctets ou plus, la quantité de mémoire nécessaire pour stocker les structures de données de suivi des pages peut dépasser la quantité de DRAM du système. Un TiB de NVDIMM nécessite 16 GiB pour les structures de page. Par conséquent, il est préférable de stocker les structures de données sur le NVDIMM lui-même dans de tels cas.
Vous pouvez configurer l'endroit où les métadonnées par page sont stockées en utilisant l'option
--map
lors de la configuration d'un espace de noms :-
Pour allouer de la mémoire vive au système, utilisez
--map=mem
. -
Pour allouer sur le NVDIMM, utilisez
--map=dev
.
20.8.2. Reconfiguration d'un espace de noms NVDIMM existant en mode DAX de système de fichiers
Vous pouvez reconfigurer un espace de noms NVDIMM (Non-Volatile Dual In-line Memory Modules) existant en mode DAX du système de fichiers.
La reconfiguration d'un espace de noms supprime les données précédemment stockées dans l'espace de noms.
Conditions préalables
-
L'utilitaire
ndctl
est installé. Pour plus d'informations, voir Installation de ndctl.
Procédure
Liste de tous les espaces de noms de votre système :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ndctl list --namespaces --idle
# ndctl list --namespaces --idle [ { "dev":"namespace1.0", "mode":"raw", "size":34359738368, "uuid":"ac951312-b312-4e76-9f15-6e00c8f2e6f4" "state":"disabled", "numa_node":1 }, { "dev":"namespace0.0", "mode":"raw", "size":38615912448, "uuid":"ff5a0a16-3495-4ce8-b86b-f0e3bd9d1817", "state":"disabled", "numa_node":0 } ]
Reconfigurer tout espace de noms :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ndctl create-namespace --force --mode=fsdax --reconfig=namespace-ID
# ndctl create-namespace --force --mode=fsdax --reconfig=namespace-ID
Exemple 20.5. Reconfiguration d'un espace de noms en tant que système de fichiers DAX
Pour utiliser
namespace0.0
pour un système de fichiers qui prend en charge DAX, utilisez la commande suivante :Copy to Clipboard Copied! Toggle word wrap Toggle overflow ndctl create-namespace --force --mode=fsdax --reconfig=namespace0.0
# ndctl create-namespace --force --mode=fsdax --reconfig=namespace0.0 { "dev":"namespace0.0", "mode":"fsdax", "map":"dev", "size":"11.81 GiB (12.68 GB)", "uuid":"f8153ee3-c52d-4c6e-bc1d-197f5be38483", "sector_size":512, "align":2097152, "blockdev":"pmem0" }
L'espace de noms est désormais disponible sur le site
/dev/pmem0
.
Vérification
Vérifiez si les espaces de noms existants sur votre système sont reconfigurés :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ndctl list --namespace namespace0.0
# ndctl list --namespace namespace0.0 [ { "dev":"namespace0.0", "mode":"fsdax", "map":"dev", "size":12681478144, "uuid":"f8153ee3-c52d-4c6e-bc1d-197f5be38483", "sector_size":512, "align":2097152, "blockdev":"pmem0" } ]
Ressources supplémentaires
-
La page de manuel
ndctl-create-namespace(1)
20.8.3. Création d'un nouvel espace de noms NVDIMM en mode DAX du système de fichiers
Vous pouvez créer un nouvel espace de noms DAX de système de fichiers sur un périphérique NVDIMM (Non-Volatile Dual In-line Memory Modules) s'il y a de l'espace disponible dans la région.
Conditions préalables
-
L'utilitaire
ndctl
est installé. Pour plus d'informations, voir Installation de ndctl. Le périphérique NVDIMM prend en charge les étiquettes permettant de créer plusieurs espaces de noms dans une région. Vous pouvez le vérifier à l'aide de la commande suivante :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ndctl read-labels nmem0 >/dev/null
# ndctl read-labels nmem0 >/dev/null read 1 nmem
Cela indique qu'il a lu l'étiquette d'un périphérique NVDIMM. Si la valeur est
0
, cela signifie que votre périphérique ne prend pas en charge les étiquettes.
Procédure
Dressez la liste des régions
pmem
de votre système qui ont de l'espace disponible. Dans l'exemple suivant, de l'espace est disponible dans les régions region1 et region0:Copy to Clipboard Copied! Toggle word wrap Toggle overflow ndctl list --regions
# ndctl list --regions [ { "dev":"region1", "size":2156073582592, "align":16777216, "available_size":2117418876928, "max_available_extent":2117418876928, "type":"pmem", "iset_id":-9102197055295954944, "badblock_count":1, "persistence_domain":"memory_controller" }, { "dev":"region0", "size":2156073582592, "align":16777216, "available_size":2143188680704, "max_available_extent":2143188680704, "type":"pmem", "iset_id":736272362787276936, "badblock_count":3, "persistence_domain":"memory_controller" } ]
Attribuer un ou plusieurs espaces de noms sur l'une des régions disponibles :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ndctl create-namespace --mode=fsdax --region=regionN --size=namespace-size
# ndctl create-namespace --mode=fsdax --region=regionN --size=namespace-size
Exemple 20.6. Création d'un espace de noms sur une région
La commande suivante crée un espace de noms DAX de 36 Go sur region0:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ndctl create-namespace --mode=fsdax --region=region0 --size=36G
# ndctl create-namespace --mode=fsdax --region=region0 --size=36G { "dev":"namespace0.3", "mode":"fsdax", "map":"dev", "size":"35.44 GiB (38.05 GB)", "uuid":"99e77865-42eb-4b82-9db6-c6bc9b3959c2", "sector_size":512, "align":2097152, "blockdev":"pmem0.3" }
L'espace de noms est désormais disponible à l'adresse
/dev/pmem0.3
.
Vérification
Vérifier si le nouvel espace de noms est créé en mode secteur :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ndctl list -RN -n namespace0.3
# ndctl list -RN -n namespace0.3 { "regions":[ { "dev":"region0", "size":2156073582592, "align":16777216, "available_size":2027224563712, "max_available_extent":2027224563712, "type":"pmem", "iset_id":736272362787276936, "badblock_count":3, "persistence_domain":"memory_controller", "namespaces":[ { "dev":"namespace0.3", "mode":"fsdax", "map":"dev", "size":38048628736, "uuid":"99e77865-42eb-4b82-9db6-c6bc9b3959c2", "sector_size":512, "align":2097152, "blockdev":"pmem0.3" } ] } ] }
Ressources supplémentaires
-
La page de manuel
ndctl-create-namespace(1)
20.8.4. Création d'un système de fichiers sur un dispositif DAX de système de fichiers
Vous pouvez créer un système de fichiers sur un périphérique DAX de système de fichiers et monter le système de fichiers. Après avoir créé un système de fichiers, l'application peut utiliser la mémoire persistante et créer des fichiers dans le répertoire mount-point, ouvrir les fichiers et utiliser l'opération mmap
pour mapper les fichiers en vue d'un accès direct.
Sur Red Hat Enterprise Linux 9, les systèmes de fichiers XFS et ext4 peuvent être créés sur les NVDIMM en tant qu'aperçu technologique.
Procédure
Facultatif : Créez une partition sur le périphérique DAX du système de fichiers. Pour plus d'informations, voir Création d'une partition avec parted.
NoteLors de la création de partitions sur un périphérique
fsdax
, les partitions doivent être alignées sur les limites de page. Sur les architectures Intel 64 et AMD64, un alignement d'au moins 4 KiB est requis pour le début et la fin de la partition. 2 MiB est l'alignement préféré.Par défaut, l'outil
parted
aligne les partitions sur des limites de 1 Mo. Pour la première partition, indiquez 2 Mo comme début de la partition. Si la taille de la partition est un multiple de 2 MiB, toutes les autres partitions sont également alignées.Créez un système de fichiers XFS ou ext4 sur la partition ou le périphérique NVDIMM :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow mkfs.xfs -d su=2m,sw=1 fsdax-partition-or-device
# mkfs.xfs -d su=2m,sw=1 fsdax-partition-or-device
NoteLes fichiers compatibles avec dax et les fichiers réassociés peuvent désormais coexister sur le système de fichiers. Cependant, pour un fichier individuel, dax et reflink s'excluent mutuellement.
Pour XFS, désactivez les extents de données partagés en copie sur écriture car ils sont incompatibles avec l'option de montage dax. En outre, afin d'augmenter la probabilité de mappages de pages de grande taille, définissez l'unité de bande et la largeur de bande.
Monter le système de fichiers :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow mount f_sdax-partition-ou-dispositif mount-point_
# mount f_sdax-partition-ou-dispositif mount-point_
Il n'est pas nécessaire de monter un système de fichiers avec l'option dax pour activer le mode d'accès direct. Si vous ne spécifiez pas d'option dax lors du montage, le système de fichiers est en mode
dax=inode
. Définissez l'option dax sur le fichier avant d'activer le mode d'accès direct.
Ressources supplémentaires
-
La page de manuel
mkfs.xfs(8)
- NVDIMM en mode d'accès direct au système de fichiers