web-dev-qa-db-fra.com

swapon: la statistique de / dev / mapper / cryptswap1 a échoué: aucun fichier ni répertoire de ce type

J'ai un problème avec la création de swap crypté.

Je suis ces pas

  1. Sudo swapoff -a
  2. Commentez la configuration de swap existante dans /etc/crypttab
  3. Commentez la configuration de swap existante dans /etc/fstab
  4. Reformatez la partition swap avec gparted sous linux-swap
  5. Sudo mkswap /dev/sda5
  6. Mettre à jour /etc/initramfs-tools/conf.d/resume avec le nouvel UUID
  7. Sudo update-initramfs -u
  8. Sudo swapon /dev/sda5
  9. Sudo ecryptfs-setup-swap

Et à ce point je rencontre ce problème

root@username-UX430UN:/home/username# ecryptfs-setup-swap
WARNING:
An encrypted swap is required to help ensure that encrypted files are not leaked to disk in an unencrypted format.

HOWEVER, THE SWAP ENCRYPTION CONFIGURATION PRODUCED BY THIS PROGRAM WILL BREAK HIBERNATE/RESUME ON THIS SYSTEM!

NOTE: Your suspend/resume capabilities will not be affected.

Do you want to proceed with encrypting your swap? [y/N]: y

INFO: Setting up swap: [/dev/sda5]
marking GPT swap partition /dev/sda5 as no-auto...
swapon: stat of /dev/mapper/cryptswap1 failed: No such file or directory
7
X XXX X

J'ai eu le même problème lorsque j'ai essayé de configurer mon espace de swap crypté et que je pensais avoir trouvé une solution. Pour commencer, voici quelques liens que j'ai utilisés dans mes recherches:

  • Procédure simple chiffrer l'espace de swap avec ecryptfs (lorsque tout fonctionne correctement)
  • Débogage du blog qui corrige en profondeur un problème très similaire. J'ai eu beaucoup de mes idées ici, donc je recommanderais de le lire.

Problème d'installation

Lorsque j'ai exécuté ecryptfs-setup-swap la première fois (notez que j'avais déjà configuré un espace d'échange lors de l'installation, de sorte que je n'avais pas besoin de faire mkswapname__, j'ai reçu un message d'erreur indiquant que cet espace d'échange ne pouvait pas être monté correctement.

$ Sudo ecryptfs-setup-swap                                                                       
[Sudo] password for isaac:                                                                       

WARNING:                                                                                         
An encrypted swap is required to help ensure that encrypted files are not leaked to disk in an unencrypted format.

HOWEVER, THE SWAP ENCRYPTION CONFIGURATION PRODUCED BY THIS PROGRAM WILL BREAK HIBERNATE/RESUME ON THIS SYSTEM!

NOTE: Your suspend/resume capabilities will not be affected.                                     

Do you want to proceed with encrypting your swap? [y/N]: y                                       

INFO: Setting up swap: [/dev/nvme0n1p5]                                                          
WARNING: Commented out your unencrypted swap from /etc/fstab                                     
marking GPT swap partition /dev/nvme0n1p5 as no-auto...                                          
swapon: stat of /dev/mapper/cryptswap1 failed: No such file or directory                         

J'ai essayé d'exécuter à nouveau la commande et j'ai reçu un message indiquant que je n'avais plus d'espace d'échange.

$ Sudo ecryptfs-setup-swap                                                                       
INFO: You do not currently have any swap space defined.                                          

You can create a swap file by doing:                                                             
 $ Sudo dd if=/dev/zero of=/swapfile count=130667600                                             
 $ Sudo mkswap /swapfile                                                                         
 $ Sudo swapon /swapfile                                                                         

And then re-run /usr/bin/ecryptfs-setup-swap                                                     

En vérifiant deux fois le message d'erreur de la première exécution de la commande ecrypt, il semble que /dev/mapper/cryptswap1 n'existe pas.

$ ls /dev/mapper/                                                                                
control                                                                                          

Enquête sur les fichiers système pertinents

Sur la base de l'article blog mentionné précédemment, j'ai décidé de commencer à chercher dans mes fichiers système des preuves de la raison pour laquelle l'espace d'échange n'a pas été identifié. Le blog mentionne que les schémas de nommage modifiés des partitions de disque dur posent des problèmes pour ecryptfs et que le passage à l’utilisation d’un identifiant basé sur UUID est plus cohérent.

$ blkid                                                                                          
/dev/nvme0n1p5: UUID="aea96d7f-e091-460b-95fd-a34ab884d440" TYPE="swap" PARTUUID="0a7db4e0-17bf-40e3-8675-afec7891afc5"
/dev/nvme0n1p1: LABEL="ESP" UUID="C291-E533" TYPE="vfat" PARTLABEL="EFI system partition" PARTUUID="63fc7fb9-2ca5-422b-90c7-0db698acdb3c"
/dev/nvme0n1p3: UUID="16F4C1EEF4C1D063" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="c04d0838-5570-4bfc-a961-4b9224b8cc0c"
/dev/nvme0n1p4: UUID="0EEE7736EE7714E5" TYPE="ntfs" PARTUUID="4dc6595f-cc9c-4d80-99ab-ffd9cbe3c1d7"
/dev/nvme0n1p6: UUID="8b2f5c94-db79-4c8d-b5c6-403d912bc0dd" TYPE="ext4" PARTUUID="e373c83f-f992-4e62-a235-1fdd01ac7cf0"

Notez que mon espace d'échange est /dev/nvme0n1p5 et que l'UUID aea96d7f.... Je vais maintenant jeter un oeil sur /etc/fstab et /etc/crypttab pour voir à quoi ressemble la configuration de swap.

$ cat /etc/fstab                                                                                 
# /etc/fstab: static file system information.                                                    
#                                                                                                
# Use 'blkid' to print the universally unique identifier for a                                   
# device; this may be used with UUID= as a more robust way to name devices                       
# that works even if disks are added and removed. See fstab(5).                                  
#                                                                                                
# <file system> <mount point>   <type>  <options>       <dump>  <pass>                           
# / was on /dev/nvme0n1p6 during installation                                                    
UUID=8b2f5c94-db79-4c8d-b5c6-403d912bc0dd /               ext4    errors=remount-ro 0       1    
# /boot/efi was on /dev/nvme0n1p1 during installation                                            
UUID=C291-E533  /boot/efi       vfat    umask=0077      0       1                                
# swap was on /dev/nvme0n1p5 during installation                                                 
#UUID=aea96d7f-e091-460b-95fd-a34ab884d440 none            swap    sw              0       0     
/dev/mapper/cryptswap1 none swap sw 0 0                                                          


$ cat /etc/crypttab                                                                              
# <target name> <source device>         <key file>      <options>                                
cryptswap1 UUID=aea96d7f-e091-460b-95fd-a34ab884d440 /dev/urandom swap,offset=1024,cipher=aes-xts-plain64

Il y a quelques points à noter ici, alors je vais les passer en revue une à la fois.

  • ecryptfs semble avoir correctement modifié mon fstabpour désactiver mon ancien espace de swap (ligne commentée avec le UUID de swap) et activer celui chiffré.
  • Le crypttab est configuré avec l'UUID approprié pour mapper vers mon espace d'échange. C’est un gros problème, si votre table de cryptage est configurée avec autre chose qu’un UUID (par exemple, le nom du lecteur dans/dev), il est possible que le noyau puisse renommer le lecteur et causer des problèmes (à nouveau, reportez-vous à la section blog pour plus de détails). Dans mon cas, ecryptfs semble avoir correctement configuré l’entrée en utilisant un UUID (je suppose qu’elle est corrigée le 16.04 car le blog mentionne le problème le 14.04).
  • Le crypttab spécifie un décalage pour le lecteur. Encore une fois, il s'agit d'un "gotcha" subtile mentionné dans le blog, mais si l'offset n'est pas présent, il peut apparemment faire perdre à votre lecteur son UUID, car il sera crypté.

Enfin, j'ai vérifié swaponpour voir s'il trouve de l'espace d'échange.

$ swapon -s                                                                                      
Filename                                Type            Size    Used    Priority                 
/dev/dm-0                               partition       31248892        0       -1               

On dirait qu'il pointe vers un espace d'échange (de taille correcte) mais que cet espace d'échange n'est pas correctement configuré dans /dev/mapper (comme indiqué par fstab).

Solution

Suite aux suggestions du billet de blog, j'ai décidé de voir si le simple redémarrage du service cryptdisksrésoudrait le problème.

$ swapoff -a                                                                                     

$ /etc/init.d/cryptdisks start                                                                   

$ swapon -a                                                                                      

$ swapon -s                                                                                      
Filename                                Type            Size    Used    Priority                 
/dev/dm-0                               partition       31248892        0       -1               

$ ls -l /dev/mapper/                                                                             
total 0                                                                                          
crw------- 1 root root 10, 236 Jan  9 11:30 control                                              
lrwxrwxrwx 1 root root       7 Jan  9 12:28 cryptswap1 -> ../dm-0                                

À ce stade, il semble que mon espace d'échange est correctement configuré. Exécuter htopindique la quantité d’espace de swap appropriée et les commandes de diagnostic que j’utilisais ci-dessus sont toutes positives, notamment blkidet /dev/mapper/cryptswap1.

$ Sudo blkid                                                                                     
/dev/nvme0n1p1: LABEL="ESP" UUID="C291-E533" TYPE="vfat" PARTLABEL="EFI system partition" PARTUUID="63fc7fb9-2ca5-422b-90c7-0db698acdb3c"
/dev/nvme0n1p3: UUID="16F4C1EEF4C1D063" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="c04d0838-5570-4bfc-a961-4b9224b8cc0c"
/dev/nvme0n1p4: UUID="0EEE7736EE7714E5" TYPE="ntfs" PARTUUID="4dc6595f-cc9c-4d80-99ab-ffd9cbe3c1d7"
/dev/nvme0n1p5: UUID="aea96d7f-e091-460b-95fd-a34ab884d440" TYPE="swap" PARTUUID="0a7db4e0-17bf-40e3-8675-afec7891afc5"
/dev/nvme0n1p6: UUID="8b2f5c94-db79-4c8d-b5c6-403d912bc0dd" TYPE="ext4" PARTUUID="e373c83f-f992-4e62-a235-1fdd01ac7cf0"
/dev/mapper/cryptswap1: UUID="113abaa7-c122-4d47-a826-181ee6a29627" TYPE="swap"                  

Les paramètres ont persisté lors du redémarrage et tout semble fonctionner correctement. Donc, autant que je sache, cela a fonctionné. Espérons que cela aide.

Solution alternative potentielle

Pour m'assurer que ma réponse fonctionnait correctement, j'ai essayé de reproduire le problème sur une instance EC2. J'ai eu le même comportement où courir Sudo ecryptfs-setup-swap où il serait erroné d'essayer d'exécuter swapponname__. Cependant, pour une raison quelconque, le mappage de périphérique /dev/dm-0 ne semblait pas être configuré correctement. Les fichiers /etc semblaient bien fonctionner. J'ai donc simplement essayé de redémarrer l'instance. Cela a semblé fonctionner très bien; Cependant, je vous recommanderais au moins d'inspecter les paramètres de configuration appropriés avant de redémarrer pour vous assurer qu'ils sont correctement configurés afin que le noyau puisse monter le swap lors du redémarrage.

8
Isaac Olson

Un simple redémarrage a corrigé ce problème pour moi.

1
Nicolas Ivanov