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

相關內容