Centos 7.1找不到/dev/loop0问题排查处理过程

这篇具有很好参考价值的文章主要介绍了Centos 7.1找不到/dev/loop0问题排查处理过程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、问题描述

某次挂载本地磁盘镜像为loop时,系统报错:failed to setup loop device,且/dev/目录找不到loop0设备文件,如下所示:

sudo mount -o loop ./CentOS-7.5-x86_64-DVD-1804.iso /mnt/cdrom  //报错
mount: ./CentOS-7.5-x86_64-DVD-1804.iso: failed to setup loop device: No such file or directory

failed to setup loop device for,linux_FAQ,centos,linux,服务器,loop,内核升级
在类 UNIX 系统里,loop 设备是一种伪设备(pseudo-device),或者说是仿真设备,我们又叫它为循环接口文件,它能使我们像块设备一样访问一个文件。在使用之前,一个 loop 设备必须要和一个文件进行连接。这种结合方式给用户提供了一个替代块特殊文件的接口。因此,如果这个文件包含有一个完整的文件系统,那么这个文件就可以像一个磁盘设备一样被 mount 起来。

这种文件格式,我们经常见到的是 CD 或 DVD 的 ISO 光盘镜像文件或者是软盘(硬盘)的 *.img 镜像文件。通过这种 loop mount (回环mount)的方式,我们可这些镜像文件 mount 到当前文件系统的一个目录下,从而读取镜像中内容。

loop 含义:对于第一层文件系统,它直接安装在我们计算机的物理设备之上;而对于这种被 mount 起来的镜像文件(它也包含有文件系统),它是建立在第一层文件系统之上,这样看来,它就像是在第一层文件系统之上再overlay了一层文件系统,所以称为 loop,而在Linux系统里,用块文件模拟了该接口,Centos上默认有0-7个这样的设备。正常系统一般显示如下:

failed to setup loop device for,linux_FAQ,centos,linux,服务器,loop,内核升级

现场环境:CentOS Linux release 7.1.1503 (Core)

二、处理过程

2.1、手动新建,执行:

mknod -m 666 /dev/loop0 b 7 0 #实际验证无效
chown :disk /dev/loop0
#附:批量
chown :disk --reference=/dev/loop0 /dev/loop*

2.2、尝试手动先将镜像装入loop,在挂载loop伪设备

losetup -a  #查看当前loop设备使用情况,返回当前已经使用的所有环回设备,即先查看一下哪些是空闲的
sudo losetup -f  #自动查找空闲的设备,返回第一个未使用的环回设备
#新建一个loop
dd if=/dev/zero of=test.img bs=5M count=1000  #新建5g的img
losetup /dev/loop0 ./CentOS-7.5-x86_64-DVD-1804.iso
mount /dev/loop0 /mnt/cdrom
#实际等同于
mount -o loop /./CentOS-7.5-x86_64-DVD-1804.iso /mnt/cdrom
sudo mount /root/CentOS-7.5-x86_64-DVD-1804.iso /mnt/cdrom -o loop=/dev/loop0
#卸载
umount /mnt/cdrom
losetup -d /dev/loop0

2.3、报错 'no such device’可能是因为超过了可用loop device设备的最大限制,修改配置文件

vi /etc/modprobe.conf //现场检查未发现该文件,相关资料显示Linux默认没有生成这个文件,我们可自定义该文件的内容,直接创建该文件,或者在/etc/modprobe.d目录中创建相应的配置文件即可;另外/etc/modules.conf (kernel 2.4.x),2.6之后才是modprobe.conf;modprobe是kmod的一部分,该二进制文件实现了用于管理Linux内核模块的多个程序。内核模块存储在/lib/modules/目录中,只有具有管理特权的用户才能管理内核模块。要加载模块,可借用modprobe命令调用加载,后跟模块名称:modprobe module_name;modprobe命令将加载指定的模块和模块依赖项,且只支持一次调用一个;modprobe -r module_name删除模块;
failed to setup loop device for,linux_FAQ,centos,linux,服务器,loop,内核升级
failed to setup loop device for,linux_FAQ,centos,linux,服务器,loop,内核升级

添加以下内容:options loop max_loop=10;完成后重启OS或modprobe -v loop,因生产环境现场未验证,请验证的小伙伴留言确认,多谢。

modprobe loop  # This may not be necessary, depending on your kernel build but is harmless.
major=$(grep loop /proc/devices | cut -c3)
for index in 0 1 2 3 4 5
do
  mknod /dev/loop$i $major $i
done

failed to setup loop device for,linux_FAQ,centos,linux,服务器,loop,内核升级
failed to setup loop device for,linux_FAQ,centos,linux,服务器,loop,内核升级
failed to setup loop device for,linux_FAQ,centos,linux,服务器,loop,内核升级

find /lib/modules/3.10.0-693.11.6.el7.x86_64/ -name *loop*  //输出如下
/lib/modules/3.10.0-693.11.6.el7.x86_64/kernel/drivers/block/loop.ko.xz
/lib/modules/3.10.0-693.11.6.el7.x86_64/kernel/drivers/nvme/target/nvme-loop.ko.xz
/lib/modules/3.10.0-693.11.6.el7.x86_64/kernel/drivers/nvme/target/nvme-fcloop.ko.xz
/lib/modules/3.10.0-693.11.6.el7.x86_64/kernel/drivers/target/loopback
/lib/modules/3.10.0-693.11.6.el7.x86_64/kernel/drivers/target/loopback/tcm_loop.ko.xz
/lib/modules/3.10.0-693.11.6.el7.x86_64/kernel/sound/drivers/snd-aloop.ko.xz

depmod   //输出如下
depmod: ERROR: could not open directory /lib/modules/3.10.0-229.el7.x86_64: No such file or directory
depmod: FATAL: could not search modules: No such file or directory


modprobe -c|grep loop  //查看 modules 的配置文件,输出如下
alias block_major_7_* loop
alias char_major_10_237 loop
alias devname:loop_control loop
alias nvmet_transport_254 nvme_loop
alias symbol:loop_register_transfer loop
alias symbol:loop_unregister_transfer loop

#列出内核中所有已经或者未挂载的所有模块,l参数已失效
modprobe -l

modinfo loop  //查看模块的信息,如下可看到模块与内核版本还是对不上
filename:       /lib/modules/3.10.0-229.el7.x86_64/kernel/drivers/block/loop.ko.xz
alias:          devname:loop-control
alias:          char-major-10-237
alias:          block-major-7-*
license:        GPL
rhelversion:    7.4
srcversion:     CBC8A49D084BCADAFE1EB31
depends:        
intree:         Y
vermagic:       3.10.0-693.11.6.el7.x86_64 SMP mod_unload modversions 
signer:         Red Hat Enterprise Linux kernel signing key
sig_key:        9D:B6:7B:36:5D:13:DF:D3:C4:AB:AA:65:4A:99:96:D2:EF:C9:3E:0E
sig_hashalgo:   sha256
parm:           max_loop:Maximum number of loop devices (int)
parm:           max_part:Maximum number of partitions per loop device (int)

less modules.dep|grep loop  //自动生成后,检查按如下

kernel/drivers/block/loop.ko.xz:
kernel/drivers/nvme/target/nvme-loop.ko.xz: kernel/drivers/nvme/target/nvmet.ko.xz kernel/drivers/nvme/host/nvme-fabrics.ko.xz kernel/drivers/nvme/host/nvme-core.ko.xz
kernel/drivers/nvme/target/nvme-fcloop.ko.xz: kernel/drivers/nvme/host/nvme-fc.ko.xz kernel/drivers/nvme/target/nvmet-fc.ko.xz kernel/drivers/nvme/target/nvmet.ko.xz kernel/drivers/nvme/host/nvme-fabrics.ko.xz kernel/drivers/nvme/host/nvme-core.ko.xz
kernel/drivers/target/loopback/tcm_loop.ko.xz: kernel/drivers/target/target_core_mod.ko.xz kernel/lib/crc-t10dif.ko.xz kernel/crypto/crct10dif_common.ko.xz
kernel/sound/drivers/snd-aloop.ko.xz: kernel/sound/core/snd-pcm.ko.xz kernel/sound/core/snd-timer.ko.xz kernel/sound/core/snd.ko.xz kernel/sound/soundcore.ko.xz

rpm -qa|grep kernel  //系统安装的内核版本,输出如下
kernel-3.10.0-693.11.6.el7.x86_64

uname -r   //当前加载使用的内核,输出如下
3.10.0-229.el7.x86_64

failed to setup loop device for,linux_FAQ,centos,linux,服务器,loop,内核升级
failed to setup loop device for,linux_FAQ,centos,linux,服务器,loop,内核升级

正常环境显示如下:执行depmod无输出
failed to setup loop device for,linux_FAQ,centos,linux,服务器,loop,内核升级
failed to setup loop device for,linux_FAQ,centos,linux,服务器,loop,内核升级

综上,本次loop模块加载失败原因为内核版本升级后,不匹配导致的无法找到模块路径所致;检查grub启动文件(etc/grub2.cfg,找到menuentry的序号,从上倒下从0开始编号),当前启动内核就是:3.10.0-693.11.6.el7.x86_64

failed to setup loop device for,linux_FAQ,centos,linux,服务器,loop,内核升级
failed to setup loop device for,linux_FAQ,centos,linux,服务器,loop,内核升级
因时间问题,这里拜请路过的大佬,上述问题该如何处理修正,还请不吝赐教!!!

查看加载启动默认的系统:
failed to setup loop device for,linux_FAQ,centos,linux,服务器,loop,内核升级
在else set default下新增set default=“2”,完成后重启验证;

三、附录

1)losetup命令用法:

losetup [ -e encryption ] [ -o offset ] loop_device file
losetup [ -d ] loop_device

说明:此命令用来设置循环设备。循环设备可把文件虚拟成块设备,籍此来模拟整个文件系统,让用户得以将其视为硬盘驱动器,光驱或软驱等设备,并挂入当作目录来使用。

参数说明:

-e 表示加密的方式
-o 设置数据偏移量
-d 卸载设备
loop_device 循环设备名,在 linux 下如 /dev/loop0 , /dev/loop1 等。
file 要与循环设备相关联的文件名,这个往往是一个磁盘镜象文件,如 *.img

2)如果要防止在启动时加载内核模块,请在/etc/modprobe.d中创建一个名称任意的.conf文件。 语法为:

/etc/modprobe.d/blacklist.conf //内容格式如下

blacklist module_name

3)加载内核驱动模块有两种方式,一种是通过insmod,一种是 modprobe,后者的好处 是他可以检测对应驱动模块的依赖项,但是,在使用中发现,使用modprobe经常提示指定目录下无法找到该驱动模块,但实际上该目录下已有该文件。modprobe是在/lib/module/uname -r下寻找加载的模块的,并且modprobe需要一个最新的modules.dep文件,这个modules.dep文件内容是些各个模块之间的依赖等信息,此文件是由depmod命令来更新的,执行man modprobe查看。

1、insmod:需指定到对应驱动模块的目录下,目录可以不固定, 加载模块时需带 后缀,如:

先cd到ixgbe.ko驱动模块的路径
再执行:insmod ixgbe.ko

2、modprobe:需将对应驱动模块拷贝到系统指定目录,目录固定,加载模块时不要带后缀, 如:

先将驱动模块拷贝到:/lib/modules/($uname -a)/目录下(可以使用该命令随便加载一个不存在的模块,会提示该目录);
再执行:modprobe ixgbe

使用modprobe加载驱动模块的好处是同步能加载相关依赖性; depmod 命令用于分析可载入模块的相依性。

4)modprobe模块加载永久生效

CentOS Linux release 8.5.2111下在/etc/sysconfig/modules/下创建个xxx.modules文件,然后设置755权限文章来源地址https://www.toymoban.com/news/detail-680838.html


cat /etc/sysconfig/modules/iptables.modules
modprobe -- ip_tables
modprobe -- iptable_filter

chmod 755 /etc/sysconfig/modules/iptables.modules   #设置权限
sh /etc/sysconfig/modules/iptables.modules     #临时生效

到了这里,关于Centos 7.1找不到/dev/loop0问题排查处理过程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • CentOS 7启动时报“Started Crash recovery kernel arming.....shutdown....”问题处理过程

    有台虚拟机由于CPU负载过高而宕机,宕机重启后停在“Started Crash recovery kernel arming…shutdown…”阶段,如下所示: 重置虚拟机,进入grub菜单,按e编辑启动选项,在linux16 行末,加上:enforcing=0 init=/bin/bash ,修改完之后,按Ctrl + X保存重启,进入单用户模式,然后以读写方式重

    2024年02月03日
    浏览(30)
  • 记一次burp抓不到包的排查与处理

    ​一次遇到了burp上奇怪的bug。访问某个页面显示 No response received from remote server , ​但是使用 yakit 进行抓包之后发现网站可以正常抓包 ​所以得出结论:1 、网站正常无问题 2、Burp 可能在浏览某些网站的时候触发了特定的bug ​首先我对 Burp 的下游代理进行排查,措施分别为

    2024年02月14日
    浏览(24)
  • Ubuntu /dev/loop<0..n>挂载的目录的分析

    执行命令df -h  他们都是挂载到/snap目录下:  查看README文件: 查看bin目录下的文件:如下所示,这不是不是很想busybox的套路。  如果没猜错,PATH环境变量中很定有/snap/bin这个目录:打印PATH如下所示:         Snap是一种轻量级应用程序封装格式,它是Linux发行版中的一部

    2024年02月15日
    浏览(38)
  • 记录两次问题排查过程

    一、引入了一个第三方的jar包提供的能力,需要把三个官方的jar(transmittable、aspectJ等)引入项目,我放在了resource目录下,新建了一个lib。启动时对三个jar执行-javaagent命令。之前都没问题。同时该项目的测试和预发环境镜像也可以正常启动,但是prod环境报错镜像里找不到这

    2024年02月15日
    浏览(29)
  • 关于一个SFTP问题报错排查过程

    📓问题概述 日常运维工单为用户在文件服务器上建立账户之后,用户反馈登录报错;通过相邻网段服务器进行sftp登录报错如下: 百度一下过去经验,通过重启sshd服务和检查sshd_config配置都没问题。一筹莫展!!! 📌排查思路 尝试通过winscp客户端sftp登录,报连接异常情况

    2024年02月10日
    浏览(32)
  • Centos系统磁盘占用:/dev/vda1占用100%空间不足处理与解决思路(实战docker占用空间太大)

    服务器Centos操作系统,空间不足的问题处理了三次了,决定把它的解决思路和处理过程记录下来。服务器空间不足是一个经常会遇到的问题,尤其是在大型应用程序和网站上。当服务器空间不足时,应该采取一些步骤来处理和解决这个问题。以下记录最近这次的解决方案和思

    2024年02月08日
    浏览(36)
  • Linux 根目录爆满 解决(/dev/mapper/centos-root 100%问题)

    首先df -h 发现/dev/mapper/centos-root 为100%。 会导致数据库sys登不上去。 提示: ORA-09945: Unable to initialize the audit trail file Linux-x86_64 Error: 28: No space left on device 然后需要查看哪个目录占用过高,对于过高目录中的内容适当删减腾出一些空间 du -h -x --max-depth=1 将该两个文件夹下不需要

    2024年02月12日
    浏览(37)
  • 记一次Oracle归档日志异常增长问题的排查过程

    Oracle归档日志是Oracle数据库的重要功能,用于将数据库的重做日志文件(Redo Log)保存到归档日志文件(Archive Log)中。归档日志的作用是提供数据库的备份和恢复功能,以及支持数据库的持续性和数据完整性。 当数据库处于归档模式时,数据库引擎会将已经写满的重做日志

    2024年02月14日
    浏览(42)
  • docker ps 容器未显示的问题及排查过程

    本文直接引用工作中生产环境遇到的问题做记录,下方图片均为真实机器返回结果集 问题: docker ps || docker ps -a || docker images 均没有显示容器和镜像 原因:在k8s配置的镜像仓库docker-repositry机器里,启动并运行部分数据库、消息队列等容器,因网络波动影响服务器操作。故对

    2024年02月11日
    浏览(42)
  • 记一次 .Net+SqlSugar 查询超时的问题排查过程

    环境和版本:.Net 6 + SqlSuger 5.1.4.*   ,数据库是mysql 5.7 ,数据量在2000多条左右 业务是一个非常简单的查询,代码如下: tb_name 下配置了一对多的关系导航,但是执行时没有include导航属性,当执行上述代码时,查询非常慢,甚至会超时报错: The Command Timeout expired before the o

    2024年02月07日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包