Suivant: , Précédent: , Monter: Configuration du système   [Table des matières][Index]


11.5 Périphériques mappés

Le noyau Linux a une notion de mappage de périphériques : un périphérique bloc, comme une partition sur un disque dur, peut être mappé sur un autre périphérique, typiquement dans /dev/mapper, avec des calculs supplémentaires sur les données qui naviguent entre les deux31. Un exemple typique est le mappage de périphériques chiffrés : toutes les écritures sont sur le périphérique mappé sont chiffrées, toutes les lectures déchiffrées, de manière transparente. Guix étend cette notion en considérant que tout périphérique ou ensemble de périphériques qui sont transformés d’une certaine manière créent un nouveau périphérique ; par exemple, les périphériques RAID sont obtenus en assemblant plusieurs autres périphériques, comme des disque ou des partitions, en un nouveau périphérique en tant qu’unique partition.

Les périphériques mappés sont déclarés avec la forme mapped-device, définie comme suit ; par exemple, voir ci-dessous.

Type de données :mapped-device

Les objets de ce type représentent des mappages de périphériques qui seront effectués au démarrage du système.

source

C’est soit une chaîne qui spécifie le nom d’un périphérique bloc à projeter, comme "/dev/sda3", soit une liste de plusieurs périphériques à assembler pour en créer un nouveau. Dans le cas de LVM, c’est une chaîne spécifiant le nom du groupe de volume à projeter.

target

Cette chaîne spécifie le nom du périphérique mappé qui en résulte. Pour les mappeurs noyaux comme les périphériques chiffrés de type luks-device-mapping, spécifier "ma-partition" crée le périphérique "/dev/mapper/ma-partition". Pour les périphériques RAID de type raid-device-mapping, il faut donner le nom complet comme "/dev/md0". Les volumes logiques LVM de type lvm-device-mapping doivent être spécifiés comme étant "VGNAME-LVNAME".

targets

Cette liste de chaînes spécifie les noms des périphériques projetés s’il y en a plusieurs. Le format est identique à target.

type

Ce doit être un objets mapped-device-kind, qui spécifie comment source est mappés sur target.

Variable :luks-device-mapping

Cela définie les périphériques blocs chiffrés en LUKS avec cryptsetup du paquet du même nom. Elle s’appuie sur le module du noyau Linux dm-crypt.

Procedure :luks-device-mapping-with-options [#:key-file]

Return a luks-device-mapping object, which defines LUKS block device encryption using the cryptsetup command from the package with the same name. It relies on the dm-crypt Linux kernel module.

If key-file is provided, unlocking is first attempted using that key file. This has an advantage of not requiring a password entry, so it can be used (for example) to unlock RAID arrays automatically on boot. If key file unlock fails, password unlock is attempted as well. Key file is not stored in the store and needs to be available at the given location at the time of the unlock attempt.

;; Following definition would be equivalent to running:
;;   cryptsetup open --key-file /crypto.key /dev/sdb1 data
(mapped-device
 (source "/dev/sdb1)
 (target "data)
 (type (luks-device-mapping-with-options
        #:key-file "/crypto.key")))
Variable :raid-device-mapping

Cela définie un périphérique RAID qui est assemblé avec la commande mdadm du paquet du même nom. Elle nécessite un module noyau Linux approprié pour le niveau RAID chargé, comme raid456 pour RAID-4, RAID-5 et RAID-6 ou raid10 pour RAID-10.

Variable :lvm-device-mapping

Cela définie un ou plusieurs volumes logiques pour le Gestionnaire de Volume Logique (LVM) de Linux. Le groupe de volume est activé par la commande vgchange du paquet lvm2.

L’exemple suivant spécifie un mappage de /dev/sda3 vers /dev/mapper/home avec LUKS — Linux Unified Key Setup, un mécanisme standard pour chiffrer les disques. Le périphérique /dev/mapper/home peut ensuite être utilisé comme device d’une déclaration file-system (voir Systèmes de fichiers).

(mapped-device
  (source "/dev/sda3")
  (target "home")
  (type luks-device-mapping))

Autrement, pour devenir indépendant du numéro de périphérique, on peut obtenir l’UUID LUKS (l’identifiant unique) du périphérique source avec une commande comme :

cryptsetup luksUUID /dev/sda3

et l’utiliser ainsi :

(mapped-device
  (source (uuid "cb67fc72-0d54-4c88-9d4b-b225f30b0f44"))
  (target "home")
  (type luks-device-mapping))

Il est aussi désirable de chiffrer l’espace d’échange, puisque l’espace d’échange peut contenir des données sensibles. Une manière de faire cela est d’utiliser un fichier d’échange dans un système de fichiers sur un périphérique mappé avec un chiffrement LUKS. De cette manière, le fichier d’échange est chiffré parce que tout le périphérique est chiffré. Voir Espace d’échange ou Voir Disk Partitioning, pour un exemple.

Un périphérique RAID formé des partitions /dev/sda1 et /dev/sdb1 peut être déclaré ainsi :

(mapped-device
  (source (list "/dev/sda1" "/dev/sdb1"))
  (target "/dev/md0")
  (type raid-device-mapping))

Le périphérique /dev/md0 peut ensuite être utilisé comme device d’une déclaration file-system (voir Systèmes de fichiers). Remarquez que le niveau de RAID n’a pas besoin d’être donné ; il est choisi pendant la création initiale du périphérique RAID et est ensuite déterminé automatiquement.

Les volumes logiques LVM « alpha » et « beta » du groupe de volumes « vg0 » se déclarent de cette façon :

(mapped-device
  (source "vg0")
  (targets (list "vg0-alpha" "vg0-beta"))
  (type lvm-device-mapping))

Les périphériques /dev/mapper/vg0-alpha et /dev/mapper/vg0-beta sont maintenant utilisables comme device d’une déclaration file-system (voir Systèmes de fichiers).


Notes de bas de page

(31)

Remarquez que le Hurd ne fait pas de différence entre le concept de « périphérique mappé » et celle d’un système de fichiers : les deux correspondent à la traduction des opérations d’entrée-sortie faites sur un fichier en des opérations sur ce qui le contient. Ainsi, le Hurd implémente les périphériques mappés, comme les systèmes de fichiers, avec le mécanisme des traducteurs générique (voir Translators dans The GNU Hurd Reference Manual).


Suivant: Espace d’échange, Précédent: Systèmes de fichiers, Monter: Configuration du système   [Table des matières][Index]