web-dev-qa-db-fra.com

Comment ajouter un cache SSD à un disque dur crypté à utiliser avec un ordinateur de bureau ou une interface graphique?

Les disques SSHD semblent bloqués à 4 To et 8 Go. Le cache SSD ( un modèle est disponible avec 1 To/32 Go) alors que les plus gros SSD sont largement disponibles et que des solutions existent pour coupler un disque dur avec un SSD sous Linux. Je recherche une solution facile à utiliser sur un bureau une fois qu'elle est configurée. Idéalement, il faut cliquer sur une ou deux icônes de lanceur, entrer les mots de passe du stockage crypté et monter le lecteur dans Nautilus sans avoir à se rappeler de commandes particulières.

  • Toutes les données de stockage et de cache doivent être stockées cryptées.
  • Un disque dur de grande taille séparé est disponible pour la migration de données vers de nouveaux schémas de partition ou selon les besoins.

Articles connexes que j'ai lus jusqu'à présent:

3
LiveWireBT

lVM non root sur LUKS

Introduction

Info:

  • J'ai juste commencé à utiliser LVM à cause de cette fonctionnalité et mon intention était d'utiliser une partition de données chiffrée avec un SSD pour la mise en cache.
  • J'utilise généralement ZFS sur Linux (voir aussi ARC ) pour l'archivage et la redondance des données, ce qui semble être plus facile à administrer et à configurer. Vous voudrez peut-être examiner ZFS si vous souhaitez utiliser plusieurs disques durs. LVM présente toutefois un avantage sur ZFS sous Linux, car il ne repose pas sur un module de noyau construit par DKMS qui risque de ne pas être construit et exécuté correctement si vous en avez besoin. d’utiliser des noyaux de ligne principale à partir du noyau PPA par exemple. (Peut-être que je fais quelque chose de mal avec ZFS, mais certains articles sur Phoronix se lisent comme si c'était le cas.)
  • Ceci est destiné à l'utilisation de la station de travail et les solutions de type interface graphique sont préférées, afin de montrer éventuellement ce qui peut être réalisé avec les interfaces graphiques actuellement.

Caveat:

  • N'ajoutez pas simplement un disque SSD en tant que cache à votre disque dur et attendez-vous à une augmentation importante des performances. Le BX200 avec 480 Go que j’utilise actuellement semble raisonnable, mais affiche des vitesses d’écriture plus lentes que les disques durs dans les tests de performances et les tests de produits. Notez également que les deux périphériques doivent écrire les données par défaut en même temps lorsqu'ils ne sont pas en mode de cache d'écriture différée - ce qui présente un risque plus élevé de corruption des données - ne vous trompez donc pas en doublant les taux de transfert totaux et les écritures lentes dans des outils comme indicateur -multiload.

Vue d'ensemble:

Pour vous donner une idée plus précise, voici ce que j’ai configuré dans un VM après avoir lu les articles de la question avant de l’essayer sur du matériel réel. Les périphériques nommés luks- sont créés automatiquement lors de l'utilisation de l'interface graphique pour déverrouiller les périphériques cryptés. LVM détectera que les périphériques sont devenus disponibles et vous proposera de monter les systèmes de fichiers dans Nautilus comme d'habitude.

lwbt@vxenial:~$ lsblk
…    
sdb                                           8:16   0    8G  0 disk
└─luks-6bc875f1-de30-4698-ba74-eea2c5d5bb87 252:0    0    8G  0 crypt 
  └─vg0-datalv_corig                        252:5    0  7,9G  0 lvm
    └─vg0-datalv                            252:1    0  7,9G  0 lvm
sdc                                           8:32   0    8G  0 disk
└─luks-e20dd038-9886-4895-b786-855ba4c31c7e 252:2    0    8G  0 crypt 
  ├─vg0-cache_cdata                         252:3    0    8G  0 lvm 
  │ └─vg0-datalv                            252:1    0  7,9G  0 lvm 
  └─vg0-cache_cmeta                         252:4    0   12M  0 lvm 
    └─vg0-datalv                            252:1    0  7,9G  0 lvm 


lwbt@vxenial:~$ ll /dev/mapper/
total 0
drwxr-xr-x  2 root root     180 Sep  6 02:54 ./
drwxr-xr-x 20 root root    4420 Sep  6 02:54 ../
crw-------  1 root root 10, 236 Sep  6 00:37 control
lrwxrwxrwx  1 root root       7 Sep  6 02:54 luks-6bc875f1-de30-4698-ba74-eea2c5d5bb87 -> ../dm-0
lrwxrwxrwx  1 root root       7 Sep  6 02:54 luks-e20dd038-9886-4895-b786-855ba4c31c7e -> ../dm-2
lrwxrwxrwx  1 root root       7 Sep  6 02:54 vg0-cache_cdata -> ../dm-3
lrwxrwxrwx  1 root root       7 Sep  6 02:54 vg0-cache_cmeta -> ../dm-4
lrwxrwxrwx  1 root root       7 Sep  6 02:54 vg0-datalv -> ../dm-1
lrwxrwxrwx  1 root root       7 Sep  6 02:54 vg0-datalv_corig -> ../dm-5

La sortie de lsblk peut comporter une couche supplémentaire si vous partitionnez les périphériques en mode bloc (SSD/HDD) au lieu de les chiffrer directement avec LUKS. Bien sûr, si le cryptage LUKS ne vous intéresse pas, vous pouvez ignorer ces étapes dans les instructions suivantes, ce qui convient également.

Instructions

Installez les packages requis:

Sudo apt install lvm2 thin-provisioning-tools cryptsetup

Les commandes de la section suivante détruiront toutes les données existantes sur les lecteurs.

Crypter chaque appareil individuel:

Sudo cryptsetup luksFormat ${device_name}
Sudo cryptsetup luksOpen ${device_name} ${mapper_name_hdd_or_ssd}

Remarque: gnome-disks a une option pour chiffrer et monter les périphériques chiffrés, mais il crée également des systèmes de fichiers EXT4 qu'il faudrait supprimer pour continuer à suivre les instructions.

Ajoutez ensuite le périphérique en tant que volume physique à LVM, créez un groupe de volumes (nommé vg0) et un volume logique (nommé datalv) sur le HDD qui sera formaté ultérieurement pour contenir toutes les données:

pvcreate /dev/mapper/${mapper_name_hdd}
vgcreate vg0 /dev/mapper/${mapper_name_hdd}
lvcreate -l 100%pvs -n datalv vg0 /dev/mapper/${mapper_name_hdd}

Remarque: 100%pvs crée un volume qui couvre tout le périphérique que vous avez choisi (par exemple, le conteneur chiffré ou une partition). Plus de détails et d’options sont disponibles dans lvmcache et d’autres pages de manuel associées.

Maintenant, étendez la configuration LVM en ajoutant SSD au groupe de volumes:

pvcreate /dev/mapper/${mapper_name_ssd}
vgextend vg0 /dev/mapper/${mapper_name_ssd}

Créez un volume de pool de cache nommé cache dans vg0 sur le disque SSD, puis ajoutez le nouveau pool de cache en tant que cache à datalv:

lvcreate --type cache-pool -l 100%pvs -n cache vg0 /dev/mapper/${mapper_name_ssd}
lvconvert --type cache --cachepool vg0/cache vg0/datalv

Remarque: lvcreate choisira automatiquement les tailles optimales pour cache_cdata et cache_cmeta.

Après avoir modifié une configuration LVM, il peut s'avérer nécessaire de réanalyser pv, vg et lv pour activer les périphériques LVM, si vous souhaitez éviter le redémarrage:

pvscan
vgscan
lvscan
vgchange -ay

La commande suivante désactive tous les volumes LVM lorsqu'aucun nom n'est fourni:

vgchange -an 

Enfin, il est temps de formater le volume logique et de transférer les données.

  1. Exemple de formatage à l'aide de l'interface graphique Gparted

    pkexec gparted /dev/mapper/vg0-datalv
    
  2. Exemple de formatage à l'aide d'outils de ligne de commande:

    Sudo mkfs.ext4 /dev/mapper/vg0-datalv
    

Le nouveau système de fichiers devrait maintenant apparaître dans Nautilus.

Usage

Les nombreuses commandes LVM rendent l’installation assez complexe et n’exploiteront peut-être pas tout le potentiel de LVM, mais une fois l’installation configurée et l’ordinateur redémarré, il vous suffit de monter les disques chiffrés à partir du lanceur Unity ou de gnome. disques, puis montez le volume affiché dans Nautilus comme tout autre système de fichiers ou disque. Aucune mémorisation de commandes complexes n'est requise. À ma connaissance, il n'y a actuellement aucun outil graphique disponible pour gérer la configuration LVM d'un pool de cache dans Ubuntu.

Remarques:

  • Je préfère monter le plus petit périphérique SSD avec cache chiffré avant de monter le disque dur.
  • Le cache peut être supprimé et remplacé. Voir Suppression du cache dans la page de manuel lvmcache.
  • Pour afficher toutes les mesures relatives au cache, vous pouvez utiliser la commande suivante:

    Sudo lvs -o+cache_total_blocks,cache_used_blocks,cache_dirty_blocks,cache_read_hits,cache_read_misses,cache_write_hits,cache_write_misses,cachemode,cache_policy,cache_settings
    
1
LiveWireBT