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

Связанный контент