我已经安装了 Ubuntu 22.04.1(来自22.04.1-desktop-amd64.iso
),在 VirtualBox 7 上运行,并安装了zfs-tools
。
我有一个名为 的 zfs 池的映像文件zfsfile01
。我可以使用以下命令查看此文件:
fdisk -l zfsfile01
我通过 2 个数据集获得了值:dataset01
并且dataset02
- 文件似乎没有问题。
现在我必须挂载文件zfsfile01
本身或将第二个文件dataset02
挂载为回送设备。在阅读了一些有用的文本后,我意识到我必须首先使用 导入池文件zpool
,然后使用 从池文件挂载文件系统(数据集?)zfs mount
。使用 导入池
zpool import <pathto>/zfsfile01
失败,原因:
cannot import <pathto>/zfsfile01: no such pool available
我猜测是因为文件和没有正确的 zfs 池。
基本上,我可以在 Linux 中继续使用mount
命令,并且可以挂载转储文件sudo mount -o loop,offset=xxx image.dd /tmp/destination
和诸如此类的东西。但我不知道必须使用哪些选项来挂载带有数据集作为回送设备的 zfs 池文件。
以下是输出sudo fdisk -l zfsfile01
:(回复评论)
Festplatte ewf1: 1,82 TiB, 2000398934016 Bytes, 3907029168 Sektoren
Einheiten: Sektoren von 1 * 512 = 512 Bytes
Sektorgröße (logisch/physikalisch): 512 Bytes / 512 Bytes
E/A-Größe (minimal/optimal): 512 Bytes / 512 Bytes
Festplattenbezeichnungstyp: gpt
Festplattenbezeichner: 44E0E83D-A9CA-11EC-xxxx-xxxxx
Gerät Anfang Ende Sektoren Größe Typ
dataset1 128 4194431 4194304 2G FreeBSD Swap
dataset2 4194432 3907029127 3902834696 1,8T FreeBSD ZFS
以下是输出losetup
:(对 Artur 的回答的回应)
$ losetup -f
/dev/loop8
$ sudo losetup /dev/loop8 /media/sf_E_DRIVE/zfsfile01
losetup: /media/sf_E_DRIVE/zfsfile01: Loop-Gerät konnte nicht eingerichtet werden: Vorgang nicht zulässig
我可以dd
使用以下方法循环播放图像:
sudo losetup /dev/loop8 /media/image.dd
然后我可以使用以下命令取消设备循环:
sudo losetup -d /dev/loop8
但是我收到一个错误zfsfile01
:
Loop-Gerät konnte nicht eingerichtet werden: Vorgang nicht zulässig
意思是:
cannot setup loop-device: progress is not valid
答案1
我发现了一个指南在这里,希望适用于您的情况。
我会按照你的情况进行如下翻译:
将图像挂载为循环设备:
# losetup /dev/loop100 /<pathto>/zfsfile01
创建分区(仅当映像包含分区时):
# kpartx -av /dev/loop100 add map loop100p1 (252:0): <something> add map loop100p9 (252:1): <something>
创建挂载点:
# mkdir /mnt/<poolname>
尝试导入具有此池名称的 ZFS 池:
# zpool import -R /mnt/<poolname> -d /dev/mapper pool: <poolname> id: <specific ID> state: ONLINE status: Some supported features are not enabled on the pool. action: The pool can be imported using its name or numeric identifier, though some features will not be available without an explicit 'zpool upgrade'. config: <poolname> ONLINE loop100 ONLINE
使用以前结果中的 ID,您可以导入具有新选项和名称的池(如有必要 - 也许您可以跳过此步骤并只需
<poolname>
在下面使用):# zpool import -o readonly=on -f -d /dev/mapper <specific ID> <new_poolname> -R /mnt/<poolname>
完毕:
# zpool status pool: <new_poolname> state: ONLINE status: Some supported features are not enabled on the pool. The pool can still be used, but some features are unavailable. action: Enable all features using 'zpool upgrade'. Once this is done, the pool may no longer be accessible by software that does not support the features. See zpool-features(5) for details. scan: none requested config: NAME STATE READ WRITE CKSUM <new_poolname> ONLINE 0 0 0 loop100 ONLINE 0 0 0 errors: No known data errors # zfs list <new_poolname> -r NAME USED AVAIL REFER MOUNTPOINT <new_poolname> xxxM xxxxG xxK /mnt/<poolname> <new_poolname>/dataset01 xxxM xxxxG xxK /mnt/<poolname>/dataset01 <new_poolname>/dataset02 xxxM xxxxG xxK /mnt/<poolname>/dataset02