Suivant: Espace d’échange, Précédent: Systèmes de fichiers, Monter: Configuration du système [Table des matières][Index]
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
deux32. 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.
Les objets de ce type représentent des mappages de périphériques qui seront effectués à l’amorçage 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.
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
.
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")))
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.
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).
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]