解决 loop device 数目限制问题

今天早上在 Xen 服务器上增加一个 domU 虚拟机的时候遇到一个问题:

# /usr/sbin/xm create vm05
Using config file "/etc/xen/vm05".
Error: Device 2049 (vbd) could not be connected. Failed to find an unused loop device

上面错误显示没有找到可用的 loop device,可能是当前使用的内核版本或者内核配置对 loop devices 有最大数目的限制,查看一下当前正在使用的的 loop devices:

# /sbin/losetup -a
/dev/loop0: [fd00]:32014427 (/vm/vm01.swap)
/dev/loop1: [fd00]:44105729 (/vm/vm01.img)
/dev/loop2: [fd00]:32014432 (/vm/vm02.img)
/dev/loop3: [fd00]:32014433 (/vm/vm02.swap)
/dev/loop4: [fd00]:32014429 (/vm/vm03.swap)
/dev/loop5: [fd00]:43057161 (/vm/vm03.img)
/dev/loop6: [fd00]:1376674 (/vm/vm04.img)
/dev/loop7: [fd00]:32014428 (/vm/vm04.swap)

CentOS/RHEL 5

在 CentOS/RHEL 5 系统上默认的 active loop devices 数目是8,如上面看到的 loop0-loop7,只创建了4个 vm,用到了8个 loop devices,4个用来挂载 os image,4个用来挂载 swap image. 对于基于 file 的 Xen OS image 来说,需要修改这个默认值以便获得更多的 loop devices 挂载更多的 image. 编辑 /etc/modprobe.conf 来修改 active loop devices 最大限制数目:

# vi /etc/modprobe.conf
options loop max_loop=64

CentOS/RHEL 6

在 CentOS/RHEL 6 系统上更改 loop 最大数目更容易,最多支持256个,还不用重启:

# MAKEDEV -v /dev/loop

不过上面更改重启就会消失,所以把上面命令要加到 /etc/rc.local 里:

# vi /etc/rc.local
...
MAKEDEV -v /dev/loop

Ubuntu/Debian

在 Ubuntu/Debian 上修改默认 loop devices 最大限制数目:

# echo 'options loop max_loop=64' >/etc/modprobe.d/loopdev

评论 (3 Comments)

  1. 还是用LVM吧

  2. 改了 一台可以 一台不可以多开!

    http://www.hostloc.com/thread-27799-1-1.html

    求答案

  3. Debian 7 可以直接修改/etc/modules,默认是:
    loop
    改为:
    loop max_loop=64
    即可。

发表评论