swapon 失败:已安装磁盘上的设备或资源繁忙

swapon 失败:已安装磁盘上的设备或资源繁忙

我想在挂载的外部 EBS /workspace 上进行交换

我得到了设备或资源繁忙

swapon:/workspace/swap.1:swapon 失败:设备或资源繁忙

sudo /bin/dd if=/dev/zero of=/workspace/swap.1 bs=1M count=10240
sudo /sbin/mkswap /workspace/swap.1
sudo /sbin/swapon /workspace/swap.1


Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1      7.8G  5.1G  2.3G  70% /
none            4.0K     0  4.0K   0% /sys/fs/cgroup
udev            2.0G   12K  2.0G   1% /dev
tmpfs           396M  336K  395M   1% /run
none            5.0M     0  5.0M   0% /run/lock
none            2.0G     0  2.0G   0% /run/shm
none            100M     0  100M   0% /run/user
/dev/xvdb       6.0T  1.7T  4.1T  29% /workspace

sync运行命令后仍然不起作用

➜  ~  sync
➜  ~  sudo /sbin/swapon /workspace/swap.1
swapon: /workspace/swap.1: swapon failed: Device or resource busy

以下是交换信息

➜  ~   cat /proc/swaps
Filename                Type        Size    Used    Priority
/workspace/swap.1                       file        10485756    0   -1

答案1

我在尝试在 sda2 上创建交换分区时遇到了类似的问题。我的解决方案是输入

#: swapoff /dev/sda2
#: mkswap /dev/sda2
#: swapon /dev/sda2

这似乎重置了我遇到的任何问题。为了确保此操作有效,请使用“lsblk“检查挂载点。

答案2

问题不在于添加交换;问题在于您假设所有交换空间都会出现在输出中df

其中只显示分区类型的数据,由于您使用的是系统内交换(又称交换文件),因此不会显示。交换空间曾是第一个激活swapon了;你只是在错误的地方寻找确认。第二个swapon失败了,这是正确的,因为你不能第二次添加同一个文件。当你查看时/proc/swaps,这是全部交换空间后,您会看到新的空间已启动并运行。

答案3

您需要在命令sync之后退出块缓存mkswap

其解释如下。

如果您写入数据,但这些数据并未物理写入磁盘,则这些数据将成为脏页。这意味着这些数据的内容是在此处(在您的系统上)创建的,而不是从硬盘中读取的。因此您无法交换脏页。

答案4

尝试这个命令

echo 1 > /sys/block/zram0/reset

用你的交换分区替换“zram0”。例如:

    # Zram disk - 512MB size
#zram_enable=`getprop ro.config.zram`
#if [ "$zram_enable" == "true" ]; then
#    swapoff /dev/block/zram0
#    echo 1 > /sys/block/zram0/reset
#    echo 536870912 > /sys/block/zram0/disksize
#    mkswap /dev/block/zram0
#    sync
#    swapon /dev/block/zram0 -p 32758

相关内容