2017年1月1日 星期日

[Linux 常見問題] “MOUNT: COULD NOT FIND ANY FREE LOOP DEVICE”解決方案

Source From Here 
Question 
在一次關於 KVM 的測試中,這個命令:mount -o offset=16384 /share/xvs/var/tmep.img /mnt 得到如下錯誤提示信息: 
mount: could not find any free loop device

上面表示 loop Device 以已經用完。最簡單有效的方法是釋放一些被佔用的 loop device,可以用如下命令: 
// -d, --detach loopdev: detach the file or device associated with the specified loop device(s)
# losetup -d /dev/loop7 // 當然這裡的loop7根據自己的情況來選擇釋放哪個loop device


How-To 
先來檢查目前的 loop device 狀況: 
# ll /dev/loop*
# losetup -a // show status of all loop devices
# losetup /dev/loop0 // 如果該設備loop已被使用,則會得到如下的提示
/dev/loop0: [0801]:266646 (/share/xvs/ var/tmp-img_VTD_ASS_04_131), offset 16384
# losetup /dev/loop6 // 如果該設備loop未被使用,則會得到如下的提示
loop: can't get info on device /dev/loop6: No such device or address
# losetup - d /dev/loop7 // detach the file or device associated with the specified loop device(s)

It is possible to increase the number of available loop devices. Free all loop devices, and add a line with the following to /etc/modprobe.conf有的系統中是:/etc/modprobe.d/modprobe.conf): 
  1. options loop max_loop=64  
或者直接運行命令(重啟後將失效): 
# rmmod loop; modprobe loop max_loop=64
# ls /dev/loop*
/dev/loop0 ...

或者再 grub 中添加: 
  1. max_loop=64 #在kernel的啟動行  
和 loop device 相關的重要源代碼文件為 loop.c,裡面有關於 max_loop 等的具體設置和實現:drivers/block/loop.c

沒有留言:

張貼留言

[ Python 文章收集 ] cmd – Create line-oriented command processors

Source From  Here   Preface   The  cmd  module contains one public class,  Cmd , designed to be used as a base class for command processors ...