swapon: статистика / dev / mapper / cryptswap1 завершилась неудачно: нет такого файла или каталога

У меня проблема с созданием зашифрованного свопа.

Я выполняю следующие действия

  1. sudo swapoff -a
  2. Комментарий к существующей конфигурации свопинга в /etc/crypttab
  3. Комментарий к существующей конфигурации свопа в /etc/fstab
  4. Переформатировать раздел подкачки с помощью gparted как linux-swap
  5. sudo mkswap /dev/sda5
  6. Обновить /etc/initramfs-tools/conf.d/resume новым UUID
  7. sudo update-initramfs -u
  8. sudo swapon /dev/sda5
  9. sudo ecryptfs-setup-swap

И в этот момент я сталкиваюсь с этой проблемой

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
задан 29 July 2018 в 14:01

2 ответа

У меня возникла та же проблема при попытке настроить зашифрованное пространство подкачки, и я думаю, что пришла к решению. Для начала вот пара ссылок, которые я использовал в своем исследовании:

  • Simple How-To шифрует пространство подкачки с помощью ecryptfs (когда все работает правильно)
  • Отладка сообщения в блоге , в котором подробно отлаживается очень похожая проблема. Я получил много своих идей отсюда, поэтому я бы рекомендовал прочитать его.

Настройка проблемы

Когда я запустил ecryptfs-setup-swap в первый раз (обратите внимание, что я уже установил пространство подкачки при установке, поэтому мне не нужно было выполнять mkswap, Я получил сообщение об ошибке, в котором говорится, что пространство подкачки не может быть смонтировано должным образом.

$ 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                         

Я попытался снова запустить команду и получил сообщение о том, что у меня больше нет места подкачки.

$ 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                                                     

Двойная проверка сообщения об ошибке при первом запуске команды ecrypt, похоже, что /dev/mapper/cryptswap1 не существует.

$ ls /dev/mapper/                                                                                
control                                                                                          

Исследование соответствующих системных файлов

Основано на В ранее упомянутом посте в блоге я решил начать искать в своих системных файлах информацию о том, почему не было идентифицировано пространство подкачки. В блоге упоминается, что измененные схемы именования разделов жесткого диска вызывают проблемы. для ecryptfs и того, что переключение на использование идентификатора на основе UUID является более последовательным.

$ 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"

Обратите внимание, что мое пространство подкачки - /dev/nvme0n1p5 и имеет UUID aea96d7f.... Теперь я буду взгляните на /etc/fstab и /etc/crypttab, чтобы увидеть, как выглядит конфигурация подкачки.

$ 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

Здесь есть пара моментов, на которые стоит обратить внимание, поэтому я рассмотрю их по одному.

  • ecryptfs, похоже, правильно изменил мой fstab, чтобы отключить мое старое пространство подкачки (закомментированная строка с UUID подкачки) и включить зашифрованное.
  • Crypttab настроен с соответствующим UUID для сопоставления с моим пространством подкачки. Это большая проблема, если ваша crypttab настроена на что-то помимо UUID (скажем, имя диска в / dev), возможно, что ядро ​​может переименовать диск и вызвать проблемы (снова, см. блог для деталей). В моем случае ecryptfs, кажется, правильно настроил запись, используя UUID (я предполагаю, что она исправлена ​​16.04, поскольку в блоге упоминается проблема 14.04).
  • Crypttab указывает смещение для накопителя. Опять же, это тонкая «ошибка», упомянутая в блоге, но если смещение отсутствует, это может привести к потере UUID накопителя, поскольку он будет зашифрован.

Наконец, я проверил swapon, чтобы увидеть, находит ли он пространство подкачки.

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

Похоже, что он указывает на пространство подкачки (правильного размера), но это пространство подкачки не устанавливается должным образом в /dev/mapper (на что ссылается fstab).

Решение

Следуя предложениям в блоге, я решил посмотреть, решит ли проблема простой перезапуск службы cryptdisks.

$ 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                                

В этот момент кажется , как будто мое пространство подкачки настроено правильно. Выполнение htop показывает соответствующий объем пространства подкачки, и все диагностические команды, которые я использовал выше, получаются положительными, в частности, blkid теперь показывает /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"                  

Настройки сохранялись после перезагрузки, и все, кажется, работает нормально, так что, насколько я могу судить, это сработало. Надеюсь, это поможет.

Потенциальное альтернативное решение

Чтобы убедиться, что мой ответ работал правильно, я попытался воспроизвести проблему на экземпляре EC2. У меня было то же поведение при запуске sudo ecryptfs-setup-swap, где при попытке запуска возникла ошибка swappon. Однако по какой-то причине отображение устройства /dev/dm-0, похоже, не было настроено должным образом. Файлы /etc, похоже, были в порядке, поэтому я попытался просто перезагрузить экземпляр. Это, казалось, работало просто отлично; тем не менее, я бы рекомендовал по крайней мере проверить соответствующие параметры конфигурации перед перезагрузкой, чтобы убедиться, что они установлены правильно, чтобы ядро ​​могло смонтировать своп при перезагрузке.

8
ответ дан 29 July 2018 в 14:01

Простая перезагрузка исправила эту проблему для меня.

1
ответ дан 29 July 2018 в 14:01

Другие вопросы по тегам:

Похожие вопросы: