前言
服务器一直down机,翻找日志文件一直找不到缘由,最终发现是挂载的内存满了,那本身这个文件就什么用呢?
1. 基本知识
/dev/loop
是一种特殊的设备文件,用于将文件系统映射到一个文件上,形成一个虚拟的块设备。通常情况下,它用于挂载镜像文件或压缩的文件系统,例如ISO镜像、磁盘映像或squashfs文件系统
/dev/loop
的作用是允许用户将文件系统挂载为一个磁盘分区,这样用户就可以像操作硬盘分区一样来访问其中的文件
-
创建和管理 loop 设备:在 Linux 中,可以使用
losetup
命令来创建和管理 loop 设备,通过losetup
命令,可以将文件与 loop 设备进行绑定或解除绑定,并管理 loop 设备的属性。 -
挂载和卸载文件系统:一旦文件与 loop 设备绑定,就可以像挂载其他块设备一样,使用
mount
命令将文件系统挂载到指定的挂载点上,也可以使用 umount 命令将文件系统卸载 -
使用 loop 设备创建虚拟磁盘:通过 loop 设备,可以轻松地创建虚拟磁盘。用户可以创建一个空文件,然后将其与 loop 设备绑定,并在其上创建文件系统,从而形成一个虚拟磁盘,用于存储数据。
-
挂载镜像文件:将镜像文件挂载到文件系统中。例如,可以将 ISO 镜像文件挂载到
/dev/loop
上,以便浏览其内容或执行其中的程序 -
容器技术:创建容器的根文件系统,Docker 等容器平台会使用 loop 设备来挂载容器镜像。
2. 内存满了
一共有两种方案,要么清空要么扩增
2.1 清空
df -h查看,发现/dev/loop
系列的都满了
自动删除不再需要的 Snap 软件包以及它们的配置文件,并彻底清除 Snap 守护程序 snapd :sudo apt autoremove --purge snapd
再次查看:
2.2 扩增
1. 查看挂载文件:losetup
命令来查看loop设备挂载的哪个文件,相应进行扩增
2. 扩增文件:dd if=/dev/loop1 bs=4M count=1024 >> /xx/yy/xx.img
,( 4M * 1024 = 4096M )
3. 更新 loop 设备: losetup -c /dev/loop1
4. 更新 loop 设备: losetup -c /dev/loop1
3. 彩蛋
对于从无到有的新增,具体如下:
1. 检查可用设备:losetup -a
2. 创建新的loop设备:sudo mknod /dev/loop5 b 7 5
。(b表示该设备是一个块设备,7表示主设备号,5表示次设备号。主设备号7用于loop设备,而次设备号表示具体的loop设备编号)
3. 将文件与新的loop设备关联:sudo losetup /dev/loop5 /path/to/image.img
4. 挂载关联的文件系统:sudo mount /dev/loop5 /mnt
如果后续需要使用新的挂载设备,具体如下:
sudo umount /mnt
sudo losetup -d /dev/loop5
sudo rm /dev/loop5