您的位置:首页 > 运维架构

/dev/loop 设备的使用和故障排查

2011-01-17 12:59 1031 查看
/dev/loop设备

所谓Loop,本意为循环,这里的“循环设备”在类Unix系统中指的是将一个镜像文件映射成为一个设备文件。最明显的用途就是虚拟光驱、虚拟软驱、挂载
ISO及文件、挂载磁盘映像等。

//生成一个块大小为512k, 且有100k个块(Blocks)的空白文件



显示被隐藏内容

1、
查看被使用的loop设备

# sudo /sbin/losetup -a

2、通
过进程状态查看被使用的loop设备

# ps -ef | grep loop

注意:loop是有内核拥有,因此如果某个loop设备出故障而不能正常删除时,将无法从内核中移除,从而导致该设备无法再被使用,而losetup可能
查看不到该设备在被使用,而使用ps却可以。这种情况将导致某些操作无法继续,如创建新的XEN虚拟机挂载磁盘文件等。

3、删除已停止的loop设备

# sudo /sbin/losetup -d
/dev/loopx (x表示要被删除的loop设备编号)

4、查看某个loop设备的信息

# sudo /sbin/losetup /dev/loopx (x表示要被删除的loop设备编号)

5、查看已
被使用中的loop设备

# sudo /sbin/losetup -f

更多用法详见man losetup

6、loop设备数不够用时的处理

Linux老内核只支持8个loop设备被编译到内核,因此缺省情况下你只能在一个网络上共享8个CD,所以如果你想支持更多的loop设备,你必须修改
内核源码,并从新编译一个新的内核。

而从Linux
2.4的内核开始,内核运行通过编辑/etc/modules.conf或使用一个引导参数来修改支持的loop设备数。因此要修改内核支持的loop设
备数,首先请确认当前使用的内核版本:

# uname -a

或 # cat
/proc/version

下面以新内核为例来添加支持更多的loop设备:

(1)通过编辑 /etc/modules.conf,添加以下内容

options loop max_loop = 64 # 让内核支持64个loop设备

用以下方式使设置生效

1)卸载所有使用中loop设置,以使用系统中的loop设备变为空闲且可用

2)#rmmod
loop

3)#insmod loop

4)如果采用前三步没有成功的使用设置生效,那么请重新启动系统。

(2)通过设置引导参数实现

如果loop设备支持已经被编译到内核,但没有作为模块导入,则可以在安装时设定:

boot: linux max_loop=64

或者在引导参数/boot/grub.conf(这里以Grub引导管理为例)加入以下语句

append="max_loop=64"

(3)
通过重新编译内核实现

编辑内核源码文件/usr/src/linux/drivers
/block/loop.c,找到以下语句并修改为打算支持的loop设备数:

#define MAX_LOOP 16

然后重新编译内核既可。

(4)
在/dev里创建loop设备

1)首先检测系统中已经有多少loop设备:

#ls -l /dev/loop*

2)创建新的loop设备(可创建的最大数为前面设置的
最大值):

#mknod -m660 /dev/loop8 b 7
8 # 这里以创建loop8为例

注意:mknod用于在/dev目录下创建设
备。loop设备有一个主版本号“7”,并且最小编号从0开始。

3)修改loop设备所属的用
户和组:



隐藏内容
该内容已经被作者隐藏,只有会员才允许查阅 登录
| 注册

#chown root.disk /dev/loop8

4)修改loop设备的权限:

#chmod 666 /dev/loop8
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: