Я хочу сделать подкачку на смонтированном внешнем 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