csatblogspotdotcom

Wednesday, December 24, 2008

linux系统增加loop设备

把一个磁盘镜像或光盘镜像(iso文件)挂载到某目录下时,需要用到loop设备,linux系统默认有8个(/dev/loop0-/dev/loop1),这样需要启动多个虚拟机时,loop设备就有可能不够用,需要增加loop设备。

当loop设备部分被直接编译进内核时,好像直接在grub中加入max_loop=64(应该可以在kernel一行中/boot/vmlinuz后添加)重启或者直接在启动时向grub加入max_loop=64即可,但我没实验成功。

当loop设备部分被以模块形式编译时,在/etc/modprobe.conf中加入options loop max_loop=64,配置就完成了。重启后在/dev/下面只发现了8个loop设备,还以为没配好,但开启多个虚拟机后(loop设备超过8个),loop设备自动的增加到了64个(/dev/loop0 - /dev/loop63)。后来又试了下:重启机器,此时/dev/中有8个loop设备,rmmod loop后报错:ERROR: Module loop does not exist in /proc/modules,接着modprobe loop,没输出,应该是成功加载了loop模块,此时再到/dev/下看,有64个loop设备,看来超过64个shi时系统自动加载了loop模块。

p.s.
1. 对于模块来说,不需重启整个系统,只需要先卸载模块然后加载即可。对于loop设备来说,配置更改后先rmmod loop再modprobe loop即可。
2. 要想在系统启动时自动加载某模块,需要在/etc/rc.d/rc.sysinit或/etc/rc.sysinit(其实是/etc/rc.d/rc.sysinit的一个软链接)中修改配置。

后记:在xenXXX/buildYYY/.config中修改CONFIG_BLK_DEV_LOOP为CONFIG_BLK_DEV_LOOP=m;
而当用menuconfig时,修改Device Drivers ---> Block devices ---> Loopback device support为M即可。

Labels: ,

0 Comments:

Post a Comment

Subscribe to Post Comments [Atom]

<< Home