使用该losetup命令,您可以将常规文件转换为假装块设备。然后,您可以像任何其他设备一样对其进行分区和格式化。
有没有办法让 Linux 假装这个“设备”有一个 4K 的逻辑扇区大小?
今天我注意到在过去的某个时间我安装了一个 ISO,但忘记了它是哪个:
/dev/loop0 on /export/production/os/iso/centos/mount type iso9660 (rw)
Run Code Online (Sandbox Code Playgroud)
如何找到挂载在 /dev/loop0 上的确切文件名?
当我尝试安装 ISO 映像时,mount -o loop我得到
mount: 找不到任何空闲循环设备
跑步losetup -a节目
/dev/loop0: [0005]:2464 (/dev/sda1)
/dev/loop1: [0005]:3439 (/dev/loop0)
/dev/loop2: [0005]:4482 (/dev/loop1)
/dev /loop3: [0005]:4486 (/dev/loop2)
/dev/loop4: [0005]:4490 (/dev/loop3)
/dev/loop5: [0005]:4494 (/dev/loop4)
/dev/loop6 : [0005]:4498 (/dev/loop5)
/dev/loop7: [0005]:4502 (/dev/loop6)
指的是sda1什么循环设备的目的是什么?参考前一个循环设备的所有其他循环设备的目的是什么?
断开这些循环设备以便我可以使用它们对我来说是否安全?如果是这样,我该怎么做?(运行losetup -d /dev/loop[0-7]给出loop device is busy。)如果我无法断开这些连接,我如何创建可用于安装 ISO 映像的新循环设备?
ps 我正在运行 Debian "wheezy" v 7.1.0。
我有一个程序可以在磁盘上创建分区和文件系统。为了测试它,我创建了一个图像文件:
dd if=/dev/zero of=disk.img bs=1M count=100
Run Code Online (Sandbox Code Playgroud)
并安装:
sudo losetup /dev/loop0 disk.img
Run Code Online (Sandbox Code Playgroud)
分区过程似乎有效,我收到以下错误mkfs:
mkfs.vfat: unable to open /dev/loop0p2: No such file or directory
Run Code Online (Sandbox Code Playgroud)
我可以看到分区fdisk -l:
sudo fdisk -l /dev/loop0
Disk /dev/loop0: 1000 MiB, 1048576000 bytes, 2048000 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: B2CB131D-0091-4102-89E1-1D94EC49484A
Device Start End Sectors Size Type
/dev/loop0p1 2048 10239 …Run Code Online (Sandbox Code Playgroud) 我正在做一个项目,我需要挂载 100 多个循环设备并将其合并到 AUFS 挂载点作为观察,顺序挂载 90 个循环设备需要 25 秒。
我正在寻找一种解决方案,它可以通过并行安装循环设备来最大限度地减少时间
我有一个iscsi2TB 大的磁盘。我每周都会备份那个磁盘。备份脚本将整个 iSCSI 磁盘的映像复制到我的 NFS 上的文件中。不幸的是,它不会将图像一并复制,而是将其拆分为大小为 1TB 的块。所以就我而言,我有两个 1TB 文件(加上一个配置文件):
-r--r----- 1 root root 1099511627776 May 10 02:12 Backup-LUN-itmp-lun-0.000
-r--r----- 1 root root 1099500093440 May 10 03:50 Backup-LUN-itmp-lun-0.001
-rw-r--r-- 1 root root 251 May 10 03:50 Backup-LUN-itmp-lun-0.conf
Run Code Online (Sandbox Code Playgroud)
现在我需要访问我的备份。通常,如果它是一个文件,我会将其映射到/dev/loop0然后作为普通磁盘挂载。但就我而言,我无法将两个文件映射到/dev/loop0. 一种选择是对这两个文件进行分类以创建一个大文件,但我没有额外的 2TB 空间,而且无论如何这都不是一个好的解决方案。
有人可以提出解决方案吗?
我曾按照 Andreas Wiese 的建议尝试将 dmsetup 与线性目标一起使用,但出现以下错误。
dmsetup create my-backup << EOF
> 0 2147483648 linear Backup-LUN-itmp-lun-0.000 0
> 2147483648 2147461120 linear Backup-LUN-itmp-lun-0.001 0
> EOF
device-mapper: reload ioctl on my-backup failed: …Run Code Online (Sandbox Code Playgroud) 我可以包含用于支持循环文件的循环模块。loop 模块支持 max_loop 选项。我找到了选项 loop max_loop 256 的示例。我的问题,什么是最大支持的循环设备?我不敢相信,256 是硬限制,创建超过 256 个循环设备是不可能的。
更新:
我在文件https://elixir.bootlin.com/linux/v4.0/source/drivers/block/loop.c 中没有发现任何有趣的东西
但是我做了一些实验,然后运行 modprobe max_loops=512 然后我在 /dev/ 目录中看到完全相同的计数循环块文件,挂载为 udev,编号从 loop0 到 loop511
我用 linux 内核 4.19.0-6-amd64 #1 SMP Debian 4.19.67-2+deb10u2 (2019-11-11) x86_64 做到了
我已经生成了一个图像文件 dd。该映像包含两个分区。
我创建了一个loop虚拟磁盘:losetup -P /dev/loop0 $image_file. 我将loop创建的两个分区 ( loop0p1, loop0p2) 安装到两个安装点。
我的问题是loop磁盘对于我要添加的文件来说太小了。我查看了 的选项losetup,但无济于事。
有没有办法增加循环盘?
我有一个磁盘映像文件,我正在尝试使用循环设备在本地安装。使用 parted 我可以看到图像有两个分区,但是,我无法挂载第一个分区并losetup认为第二个分区不存在。有谁知道我如何挂载第二个分区?
/m/sf_VMShare ??? sudo losetup /dev/loop0 ./imm_image-2017-05-28.img
/m/sf_VMShare ??? sudo losetup -a
/dev/loop0: [0023]:99 (/media/sf_VMShare/imm_image-2017-05-28.img)
/m/sf_VMShare ??? sudo parted /dev/loop0 print
Model: Loopback device (loop)
Disk /dev/loop0: 1206MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 10.5MB 360MB 349MB primary ext4
2 361MB 1205MB 844MB primary ext4
/m/sf_VMShare ??? sudo mount -t ext4 /dev/loop0p2 /tmp/vdisk
mount: special device /dev/loop0p2 does not exist
/m/sf_VMShare ??? sudo mount -t ext4 …Run Code Online (Sandbox Code Playgroud) 如何为目录创建图像文件?例如:
通过终端命令从文件夹创建 iso 映像显示genisoimage可以为目录创建 iso 映像文件。我只知道为磁盘卷创建了一个图像文件。是否genisoimage先为目录创建循环设备或块设备文件(类似于 CD/DVD),然后为循环设备或块设备文件创建映像文件?它是否与将图像文件挂载到需要首先为图像文件创建循环设备的目录的两步过程完全相反(类似于losetup命令)?
是否有可以为目录创建 ext4 图像文件的命令?它也是一个两步过程吗?
还可以为目录创建存档文件。这两个过程有何不同?为目录创建图像文件是否涉及循环设备,而为目录创建存档文件则不涉及?
我正在尝试使用 dislocker 安装一个 bitlocker 加密驱动器。
这是我运行的确切命令:
sudo dislocker -r -V /dev/sdb7 -u -- /media/bitlocker
sudo mount -r -o loop /media/bitlocker/dislocker-file /media/mount
Run Code Online (Sandbox Code Playgroud)
运行最后一个后,我得到
mount: /media/mount: wrong fs type, bad option, bad superblock on /dev/loop0, missing codepage or helper program, or other error.
Run Code Online (Sandbox Code Playgroud)
编辑:我检查了 dislocker 文件,下面的 OEM-ID 字段在 NTFS 之后有空格。它是罪魁祸首吗,无论如何我该如何解决?
$ sudo file -s /media/bitlocker/dislocker-file | tr , '\n'
/media/bitlocker/dislocker-file: DOS/MBR boot sector
code offset 0x52+2
OEM-ID "NTFS "
sectors/cluster 8
Media descriptor 0xf8
sectors/track 63
heads 255
hidden sectors 63
dos …Run Code Online (Sandbox Code Playgroud) loop-device ×11
mount ×5
linux ×3
disk-image ×2
iso ×2
archive ×1
dd ×1
encryption ×1
ext4 ×1
filenames ×1
files ×1
filesystems ×1
linux-kernel ×1
partition ×1