Пытаюсь смонтировать снимок ZFS zvol. На zvol должен быть раздел ext2 (о чем свидетельствует виртуальная машина CentOS, для которой zvol в настоящее время используется iSCSI):
[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)
Нашел в 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)
Есть ли что-то еще, что мне нужно сделать с блочным устройством, прежде чем оно будет смонтировано?
Вы пытаетесь смонтировать zvol, который был экспортирован на виртуальную машину Linux, на FreeNAS на базе FreeBSD?!?
Если да, вам нужно проверить несколько вещей. Пожалуйста, опубликуйте вывод zfs list
и zfs get all poolname/filesystem
.
Во-первых, видимость снимка zvol может быть установлена неправильно. Это делается через snapdev
ZFS свойство. Но это решение по принципу "все или ничего". Если у вас много снимков zvols, лучше оставить этот параметр отключенным.
Другой подход к использованию снимка zvol - это клон файловая система. Что-то вроде:
zfs clone vol01/zvol01@backups1 vol01/temporaryname
Это создаст новый zvol на основе снимка. Будет создано соответствующее блочное устройство, которое вы сможете смонтировать с помощью команды ext2fs mount. Что-то вроде fdisk -l
покажет вам настоящие имена устройств.
Редактировать:
Я часто делаю это в Linux с ZFS.
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
Как сказал 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
и ты вернулся к своему прямому стандарту звол.
Надеюсь, это поможет!
Кроме того, в этом контексте не забудьте поискать zfs promotion.
Может также добавить некоторую пользу в контексте здесь.
например. http://www.machine-unix.com/promoting-a-zfs-file-system/
Это не делает полный клон в традиционном смысле, а скорее переключает направление снимка, можно сказать.
Итак, A => A @ snapshot => snapshot @ clone
xfs delete A @ snapshot .. ошибка (есть зависимый клон).
zfs продвигает снимок @ clone ...
zfs delete A @ snapshot .. error (есть зависимый клон, NOW A вместо snapshot @ clone).
Это полезно в том смысле, что можно легче переключаться между состояниями. Насколько я могу представить, для полного независимого клона все еще требуется некоторая форма копии.
(Я в основном немного расширял сообщение ewwhite выше).
Да, и для справки, я думаю, что пример создания такой копии был бы например.
zfs send -R pool / A {, снимок} | zfs получает pool / B (или просто A, если вы не хотите дублировать обе том и снимок),
Я тестировал это на Linux.
Вы должны выслушать ошибку.
Вы пытаетесь установить диск с таблицей разделов как том ext2. Это не сработает.
Вам нужно создать устройство geom, которое потребляет zvol01 со смещением 256 секторов в устройство, и смонтировать его.
Как именно вы это делаете… оставляем читателю в качестве упражнения :)