web-dev-qa-db-ja.com

swapon:/ dev / mapper / cryptswap1の統計に失敗しました:そのようなファイルまたはディレクトリはありません

暗号化されたスワップの作成に問題があります。

私はこれらの手順に従います

  1. Sudo swapoff -a
  2. /etc/crypttabの既存のスワップ構成をコメントします
  3. /etc/fstabの既存のスワップ構成をコメントします
  4. Linux-swapとしてgpartedを使用してスワップパーティションを再フォーマットする
  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
X XXX X

暗号化されたスワップスペースをセットアップしようとしたときに同じ問題が発生し、解決策を見つけたと思います。始めに、研究で使用したリンクをいくつか紹介します。

  • 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                                                                                          

関連するシステムファイルの調査

前述の blog の投稿に基づいて、スワップスペースが特定されなかった理由を示す証拠を求めて、システムファイルを探し回ることに決めました。ブログでは、ハードドライブパーティションの命名規則の変更が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

ここで注目に値するものがいくつかあるので、一度に1つずつ説明します。

  • ecryptfsはfstabを適切に変更して、古いスワップスペースを無効にし(スワップUUIDでコメントアウト)、暗号化されたスペースを有効にしているようです。
  • Crypttabは、適切なUUIDを使用して設定され、スワップスペースにマップされます。これは大したことです。crypttabがUUID以外の何か(/ devのドライブ名など)で設定されている場合、カーネルがドライブの名前を変更して問題を引き起こす可能性があります(再度、 ブログ 詳細)。私の場合、ecryptfsはUUIDを使用してエントリを適切に設定しているようです(ブログでは14.04の問題に言及しているように、16.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                                

この時点で、seemsスワップスペースが適切に構成されているようです。 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
Isaac Olson

簡単な再起動でこの問題は修正されました。

2
Nicolas Ivanov