Answers:
我认为您不能就地完成此操作,但是如果您有足够的空间,这应该可以工作:
# Create the files that will hold your data
dd if=/dev/zero of=part-00 bs=1M count=4k
dd if=/dev/zero of=part-01 bs=1M count=4k
# Create the loop devices
losetup /dev/loop0 part-00
losetup /dev/loop1 part-01
# Create a RAID array
mdadm --create /dev/md0 --level=linear --raid-devices=2 /dev/loop0 /dev/loop1
# Copy the original filesystem
dd if=original-file-00 of=/dev/md0 bs=512
# Look at the records written value
dd if=original-file-01 of=/dev/md0 bs=512 seek=<sum of records written values so far>
# Mount the new filesystem
mount /dev/md0 /mnt
您不能简单地从原始文件创建RAID阵列,因为RAID磁盘具有特定的标头,用于存储磁盘数量,RAID级别等。如果这样做,原始文件的那一部分将被覆盖。
您可以使用mdadm --build
来创建一个没有元数据的数组,但实际上您应该首先进行备份。或者,如果只读装载就足够了:
losetup -r /dev/loop0 original-00
losetup -r /dev/loop1 original-11
mdadm --build /dev/md0 --level=linear --raid-devices=2 /dev/loop0 /dev/loop1
mount /dev/md0 /mnt
为什么要这样做?如果您的文件系统无法处理> 4GB的文件,则应切换为正常文件。
truncate
而不是,dd
因为它要快得多(它不执行对FS的实际写入,而只是分配inode并将文件标记为仅包含洞)。
要挂载拆分磁盘映像(或分区映像),应使用affuse
当前在此处维护的afftools:https : //github.com/sshock/AFFLIBv3
因此,如果您有一个文件,请分成几个子文件 test_img.000, test_img.001, test_img.002, test_img.003, test_img.004, test_img.005, test_img.006, test_img.007, test_img.008, test_img.009
然后您可以虚拟加入 affuse
# affuse test_img.000 /mnt/combine
# ls -lh /mnt/combine
total 0
-r--r--r-- 1 root root 2.0G 1969-12-31 16:00 test_img.000.raw
(这将所有文件从文件000组合在一起,然后是001、002等)。
然后挂载映像
mount -o ro,loop,offset=329043456 /mnt/combine/test_img.000.raw /mnt/test
用法说明这里和一些例子在这里。编译和安装后也可以在此处找到联机帮助页。
PS:对我来说,affuse
仅当拆分文件的大小为512字节的倍数时,该命令才起作用。
您可以编写自己的块存储设备扩展(例如类似保险丝的扩展),并根据地址进行查找。
在这里您可以找到有关如何使用保险丝的示例 https://github.com/libfuse/python-fuse/blob/master/example/hello.py
到目前为止,我对解决方案最了解的是创建VMware VM。您启动Linux Live CD(例如Rescatux或Knoppix),在主机上创建SMB共享文件夹,将SMB共享安装在VM上,然后dd
将映像镜像到虚拟HD中。VMware默认情况下将其磁盘映像保存为拆分文件,因此这是直接读取拆分为多个文件的磁盘映像的最接近的方法。
以后,如果要从主机访问文件,则可以尝试向映像添加第二个虚拟HD,然后将文件复制到该映像中。然后,您在VM上设置了SMB共享文件夹,并从主机连接到该文件夹。这样,例如,如果您使用的是iPod Classic(仅会增加fat32)或智能手机的SD卡(通常必须安装自定义ROM,则您可以违反FAT32的4 GB文件限制)要在外部存储设备上使用Ext3或NTFS,为此,您需要使用知名制造商(如Samsung或Motorola)的电话,因此,如果您使用的是中国智能手机,则很麻烦。
公认这不是一个有效的解决方案,但是由于无法使用ipod classic或带存储ROM的三星智能手机上的fat32以外的其他文件,我受到了限制,因此我在整个互联网中搜寻了几乎所有内容过去并且仍然无法找到有效的解决方案。我什至必须自己写。
PS:忘记提及了,如果您使用Windows,这可能是唯一的方法。