为什么我不能挂载交换分区?

ton*_*ony 6 fstab swap

当我尝试sudo swapon -a收到此消息时:

swapon: /dev/sdb4: read swap header failed: Invalid argument
Run Code Online (Sandbox Code Playgroud)

sdb4 是我的交换分区所在的位置。

sudo blkid 回馈这个:

/dev/sdb1: UUID="75622b47-3265-48a6-a697-265b44bdfe55" TYPE="ext4" 
/dev/sdb3: UUID="d638620e-b8b1-49ae-b234-7e89aa0de676" TYPE="ext4" 
/dev/sdb5: UUID="E656-2CAB" TYPE="vfat" 
/dev/mapper/cryptswap1: UUID="83e2e318-eee6-4864-a1c4-330bd16bc6a7" TYPE="swap"
Run Code Online (Sandbox Code Playgroud)

这是内容fstab

# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    nodev,noexec,nosuid 0       0
# / was on /dev/sdb1 during installation
UUID=75622b47-3265-48a6-a697-265b44bdfe55 /               ext4    errors=remount-ro 0       1
# swap was on /dev/sdb4 during installation
#UUID=86d7eebb-b840-4fb0-a1fc-a84074062cb2 none            swap    sw              0       0
#/dev/fd0        /media/floppy0  auto    rw,user,noauto,exec,utf8 0       0   
/dev/sdb4        none            swap    sw              0       0
Run Code Online (Sandbox Code Playgroud)

Jam*_*ess 5

检查交换分区是否设置正确

执行命令sudo fdisk -l。这将列出您的所有分区及其分区类型。在 Ubuntu 中,一个交换分区将被列出如下:

/dev/sdb4            7295        8268     7811072   82  Linux swap / Solaris
Run Code Online (Sandbox Code Playgroud)

如果您没有看到最后 2 个值82and Linux Swap,则它没有设置为交换分区。

设置交换分区

确保您要使用的分区(例如 /dev/sdb4)不是包含真实数据的真实分区,然后再将其转换为交换分区,因为您的所有数据都将丢失。

以下步骤将设置交换分区:

sudo swapoff -a
Run Code Online (Sandbox Code Playgroud)

如果不同,用正确的分区名称替换 /dev/sdb4:

sudo /sbin/mkswap /dev/sdb4
Run Code Online (Sandbox Code Playgroud)

启用刚刚设置的交换分区:

sudo swapon -a
Run Code Online (Sandbox Code Playgroud)

详细帮助请参考 https://help.ubuntu.com/community/SwapFaq


psu*_*usi 5

很简单:您没有 sdb4 分区!您的交换似乎在 /dev/mapper/cryptswap1 上。看起来您设置了 cryptswap,因此您需要修复 fstab 以指向新的交换分区,最好通过 UUID,而不是通过设备名称。