首页/系统/Linux 运维命令速查/losetup 管理 loop 设备
磁盘与文件系统51 条

losetup 管理 loop 设备

losetup 把镜像文件关联为块设备(/dev/loopN),实现挂载 ISO/磁盘镜像、在文件上建文件系统;-P 还能自动识别镜像内分区。

Linux 运维命令速查系统更新于 2026-10-13

losetup 把文件变成块设备

losetup 把普通文件关联成块设备(/dev/loopN),于是可以挂载 ISO、在文件上建文件系统、检查磁盘镜像内容。-P 会扫描镜像里的分区表并自动创建分区节点(如 /dev/loop0p1)。用完必须 losetup -d 分离,否则 loop 设备与文件句柄会一直被占用,累积到一定程度就报没有可用设备。

基本信息

适用平台Linux(util-linux,需要 loop 内核模块)
语法losetup [选项] [loop设备] [文件]
常用选项-f 找空闲设备、-P 扫描分区、-a 列出全部映射、-d 分离、--show 打印设备名
权限要求root
相关命令mount -o loop、lsblk、kpartx

典型使用场景

  • 挂载 ISO 查看或提取内容
  • 只读浏览磁盘镜像内容(排障与取证前的检查)
  • 在文件上建文件系统做实验,不碰真盘
  • 处理虚拟机磁盘镜像
  • 临时挂载文件系统镜像的单个分区

常用示例

常用示例
losetup -f                                # 找空闲的 loop 设备
sudo losetup -P /dev/loop0 disk.img       # 关联镜像并自动扫描分区
ls /dev/loop0p*                           # 看到 p1、p2 等分区节点
sudo mount -o ro /dev/loop0p1 /mnt        # 只读挂载更安全
sudo losetup -a                           # 查看所有映射,排查残留
sudo losetup -d /dev/loop0                # 用完分离
mount -o loop,ro disk.iso /mnt/iso        # 一步挂载 ISO 的简写方式
lsblk | grep loop                         # 核对 loop 设备与挂载点

常用选项

选项作用注意
-f查找空闲 loop 设备也可配合 --show 直接拿到设备名
-P扫描分区表并创建分区节点带分区表的镜像必须加,否则只看到整盘设备
-a列出所有关联排查残留映射的第一条命令
-d分离设备忘记分离会一直占用设备与文件句柄
-o offset指定偏移手工挂载镜像内某个分区时用
mount -o loop一步挂载适合 ISO 这类无分区表的镜像
对镜像做写挂载会直接修改文件内容:检查、取证或校验场景一律用 -o ro 只读挂载,保持原始数据不变。
fdisk、lsblk 里看到的 loop0 就是这些映射;报 no free loop device 的原因基本是残留映射没有释放,先 losetup -a 查看再逐个 -d 清理。
只想读镜像里的某一个分区时不必挂整盘:用 -o offset 指定偏移即可(偏移量等于分区起始扇区乘以 512,可用 fdisk -l 查看起始位置),对很大的镜像更省事。
挂载期间不要删除或移动镜像文件:即使已经关联成功,内核后续读写仍然依赖该文件,删掉会导致 IO 错误甚至数据丢失。

易错点

  • 用完忘记 -d 分离:loop 设备与文件句柄持续被占用,最终报没有可用 loop 设备
  • 含分区表的镜像不加 -P:只能看到整盘设备,看不到 p1、p2 分区节点
  • 对镜像做写挂载:内容被修改,取证或校验场景会失去原始性
  • 在受限容器里使用 losetup:缺少相应特权与内核支持时会失败,别误判成镜像损坏

数据来源与参考

  • man 8 losetup(util-linux)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌