本地安装 ZFS zvol 快照时出现“无效参数”

本地安装 ZFS zvol 快照时出现“无效参数”

我正在尝试挂载 ZFS zvol 的快照。zvol 上应该有一个 ext2 分区(如 CentOS VM 所示,zvol 当前通过 iSCSI 共享到该 VM):

[root@test-vm ~]# file - < /dev/sdb
/dev/stdin: x86 boot sector; partition 1: ID=0x83, starthead 4, startsector 256, 6291200 sectors, code offset 0xb8
[root@test-vm ~]# file - < /dev/sdb1
/dev/stdin: Linux rev 1.0 ext2 filesystem data (mounted or unclean) (large files)

但是,mount 总是返回Invalid argument

[root@freenas] /dev/zvol/vol01# ls
./                        zvol01                    zvol01@backups1           zvol01@manual-20140521s1  zvol01@manual-20140522s1
../                       zvol01@backup             zvol01@manual-20140521    zvol01@manual-20140522
[root@freenas] /dev/zvol/vol01# file - < zvol01
/dev/stdin: x86 boot sector; partition 1: ID=0x83, starthead 4, startsector 256, 6291200 sectors, code offset 0xb8
[root@freenas] /dev/zvol/vol01# file - < zvol01@backup
/dev/stdin: x86 boot sector; partition 1: ID=0x83, starthead 4, startsector 256, 6291200 sectors, code offset 0xb8
[root@freenas] /dev/zvol/vol01# file - < zvol01@backups1
/dev/stdin: data
[root@freenas] /dev/zvol/vol01# mkdir /tmp/zvol01
[root@freenas] /dev/zvol/vol01# mount -t ext2fs -r /dev/zvol/vol01/zvol01@backup /tmp/zvol01
mount: /dev/zvol/vol01/zvol01@backup: Invalid argument
[root@freenas] /dev/zvol/vol01# mount -t ext2fs -r /dev/zvol/vol01/zvol01@backups1 /tmp/zvol01
mount: /dev/zvol/vol01/zvol01@backups1: Invalid argument

我认为这zvol01@backups1是正确的目标(即块设备上的第一个分区zvol01@backup),无论如何都会返回Invalid argument

我在这里遗漏了什么?

编辑

zfs list根据要求,和的输出zfs get all......

[root@freenas] ~# zfs list
NAME                   USED  AVAIL  REFER  MOUNTPOINT
vol01                 25.6G   358G   232K  /mnt/vol01
vol01/.system         1.44M   358G   244K  /mnt/vol01/.system
vol01/.system/cores    209K   358G   209K  /mnt/vol01/.system/cores
vol01/.system/samba4   506K   358G   506K  /mnt/vol01/.system/samba4
vol01/.system/syslog   517K   358G   517K  /mnt/vol01/.system/syslog
vol01/ds01             784M   358G   784M  /mnt/vol01/ds01
vol01/zvol01          24.9G   382G   113M  -

[root@freenas] ~# zfs get all vol01/zvol01
NAME          PROPERTY              VALUE                  SOURCE
vol01/zvol01  type                  volume                 -
vol01/zvol01  creation              Wed May 21 20:29 2014  -
vol01/zvol01  used                  24.9G                  -
vol01/zvol01  available             382G                   -
vol01/zvol01  referenced            113M                   -
vol01/zvol01  compressratio         1.00x                  -
vol01/zvol01  reservation           none                   default
vol01/zvol01  volsize               24G                    local
vol01/zvol01  volblocksize          4K                     -
vol01/zvol01  checksum              on                     default
vol01/zvol01  compression           lz4                    inherited from vol01
vol01/zvol01  readonly              off                    default
vol01/zvol01  copies                1                      default
vol01/zvol01  refreservation        24.8G                  local
vol01/zvol01  primarycache          all                    default
vol01/zvol01  secondarycache        all                    default
vol01/zvol01  usedbysnapshots       215K                   -
vol01/zvol01  usedbydataset         113M                   -
vol01/zvol01  usedbychildren        0                      -
vol01/zvol01  usedbyrefreservation  24.8G                  -
vol01/zvol01  logbias               latency                default
vol01/zvol01  dedup                 off                    inherited from vol01
vol01/zvol01  mlslabel                                     -
vol01/zvol01  sync                  standard               default
vol01/zvol01  refcompressratio      1.00x                  -
vol01/zvol01  written               221K                   -
vol01/zvol01  logicalused           74.4M                  -
vol01/zvol01  logicalreferenced     74.3M                  -

[root@freenas] ~# zfs get all vol01/zvol01@backup
NAME                 PROPERTY              VALUE                  SOURCE
vol01/zvol01@backup  type                  snapshot               -
vol01/zvol01@backup  creation              Thu May 22  1:48 2014  -
vol01/zvol01@backup  used                  215K                   -
vol01/zvol01@backup  referenced            113M                   -
vol01/zvol01@backup  compressratio         1.00x                  -
vol01/zvol01@backup  devices               on                     default
vol01/zvol01@backup  exec                  on                     default
vol01/zvol01@backup  setuid                on                     default
vol01/zvol01@backup  xattr                 on                     default
vol01/zvol01@backup  nbmand                off                    default
vol01/zvol01@backup  primarycache          all                    default
vol01/zvol01@backup  secondarycache        all                    default
vol01/zvol01@backup  defer_destroy         off                    -
vol01/zvol01@backup  userrefs              0                      -
vol01/zvol01@backup  mlslabel                                     -
vol01/zvol01@backup  refcompressratio      1.00x                  -
vol01/zvol01@backup  written               113M                   -
vol01/zvol01@backup  clones                                       -
vol01/zvol01@backup  logicalused           0                      -
vol01/zvol01@backup  logicalreferenced     74.3M                  -

[root@freenas] /dev/zvol/vol01# gpart show
=>      63  16777153  da0  MBR  (8.0G)
        63   1930257    1  freebsd  [active]  (942M)
   1930320        63       - free -  (31k)
   1930383   1930257    2  freebsd  (942M)
   3860640      3024    3  freebsd  (1.5M)
   3863664     41328    4  freebsd  (20M)
   3904992  12872224       - free -  (6.1G)

=>      0  1930257  da0s1  BSD  (942M)
        0       16         - free -  (8.0k)
       16  1930241      1  !0  (942M)

=>       34  286749421  da1  GPT  (136G)
         34         94       - free -  (47k)
        128    4194304    1  freebsd-swap  (2.0G)
    4194432  282555023    2  freebsd-zfs  (134G)

=>       34  286749421  da2  GPT  (136G)
         34         94       - free -  (47k)
        128    4194304    1  freebsd-swap  (2.0G)
    4194432  282555023    2  freebsd-zfs  (134G)

=>       34  286749421  da3  GPT  (136G)
         34         94       - free -  (47k)
        128    4194304    1  freebsd-swap  (2.0G)
    4194432  282555023    2  freebsd-zfs  (134G)

=>       34  286749421  da4  GPT  (136G)
         34         94       - free -  (47k)
        128    4194304    1  freebsd-swap  (2.0G)
    4194432  282555023    2  freebsd-zfs  (134G)

=>      63  50331585  zvol/vol01/zvol01@backup  MBR  (24G)
        63       193                            - free -  (96k)
       256   6291200                         1  linux-data  (3G)
   6291456  44040192                            - free -  (21G)

=>      63  50331585  zvol/vol01/zvol01-clone-backup  MBR  (24G)
        63       193                                  - free -  (96k)
       256   6291200                               1  linux-data  (3G)
   6291456  44040192                                  - free -  (21G)

编辑#2

在 dmesg 中发现这些:

ext2fs: zvol/vol01/zvol01@backup: wrong magic number 0 (expected 0xef53)
ext2fs: zvol/vol01/zvol01@backups1: wrong magic number 0 (expected 0xef53)
ext2fs: zvol/vol01/zvol01-clone-backup: wrong magic number 0 (expected 0xef53)
ext2fs: zvol/vol01/zvol01-clone-backups1: wrong magic number 0 (expected 0xef53)

在安装块设备之前我还需要对其进行其他操作吗?

答案1

您是否尝试将导出到 Linux VM 的 zvol 安装到基于 FreeBSD 的 FreeNAS?!?

如果是,你需要检查几件事。请发布zfs list和的输出zfs get all poolname/filesystem

首先,zvol 快照的可见性可能未正确设置。这是通过snapdevZFS 属性完成的。但这是一个全有或全无的解决方案。如果您有大量 zvol 快照,最好将其禁用。

使用 zvol 快照的另一种方法是克隆文件系统。例如:

zfs clone vol01/zvol01@backups1 vol01/temporaryname 

这将基于快照创建一个新的 zvol。将创建一个相应的块设备,您可以使用 ext2fs mount 命令挂载该设备。类似命令fdisk -l将显示真实的设备名称。


编辑:

我经常在带有 ZFS 的 Linux 中执行此操作。

zfs clone vol0/pprovol@april vol0/april # clone the zvol snapshot to new filesystem
# fdisk -l shows a new block device at /dev/zd16p1
mount -t xfs -o nouuid /dev/zd16p1 /restore # Mount filesystem using new block device

答案2

您应该听一下错误。

您正在尝试安装带有分区表的磁盘作为 ext2 卷。这样不行。

您需要创建一个 geom 设备,该设备使用偏移量为 256 个扇区的 zvol01 并将其挂载到设备中。

至于如何做到这一点……就留给读者去练习吧:)

答案3

此外,在这种情况下,不要忘记查找 zfs contribute。

也许还会在此处的上下文中添加一些好处。

例如。http://www.machine-unix.com/promoting-a-zfs-file-system/

这并不是传统意义上的完整克隆,而是切换快照的方向。

因此 A => A@snapshot => snapshot@clone

xfs 删除 A@snapshot..错误(有一个依赖的克隆)。

zfs 提升快照@克隆...

zfs 删除 A@snapshot..错误(有一个依赖克隆,现在是 A 而不是 snapshot@clone)。

它很有用,因为可以更轻松地在状态之间切换。据我所知,拥有完整、独立的克隆仍然需要某种形式的复制。

(我基本上是对上述 ewwhite 的帖子进行了一些扩展)。

哦,作为参考,我认为制作这种复制的一个例子是例如。

zfs send -R pool/A{,snapshot} | zfs accept pool/B (或者如果你不想重复,就只用 A两个都卷和快照)

我在 Linux 上测试了这个。

答案4

正如 MikeyB 所说,您无法将包含分区的磁盘安装为分区本身。您需要使用允许直接访问磁盘内分区的程序。

我不太熟悉 FreeBSD,但如果是 Linux,我会使用

# kpartx -a /dev/zvol/vol01/zvol01-clone-backup将卷拆分成多个分区,如下所示 /dev/zvol/vol01/zvol01-clone-backup1

然后您就可以使用该设备进行安装,就像之前尝试的那样。

完成后,执行以下操作:

# kpartx -d /dev/zvol/vol01/zvol01-clone-backup这样您就回到了标准 zvol。

希望有帮助!

相关内容