ZFS: Mount partition from ZVOL with volmode=dev

Paul Chakravarti paul.chakravarti at gmail.com
Sat Dec 27 13:18:36 UTC 2014


>On 26/12/2014 23:54, Paul Chakravarti wrote:
>> Hello,
>>
>> I am using a ZVOL configured with 'volmode=dev' as the virtio disk device for
>> a bhyve instance (which works fine) but was trying to workout whether there
>> was any way of mounting the underlying partitions on the host system - the
>> partitions don’t show up under /dev/zvol as separate devices with
>> 'volmode=dev' so was wondering is there is any other way of getting at these
>> other than mounting in a bhyve instance?
>>
>> Thanks, Paul

> I cant reproduce this on HEAD r276067
>
> zfs create -V 8192 -o volmode=dev tank/tvol
> root at head:src> ls -l /dev/zvol/tank/
> total 0
> crw-r-----  1 root  operator  0x85 Dec 27 00:08 tvol
>
>      Regards
>      Steve

Hi,

Sorry - I should have been clearer. The zvol shows up on the host
system but the partitions aren’t exposed to geom.

On the host system:

    # zfs create -V10G -o volmode=dev tank/vps/vm0

    # zfs list -o name,used,volmode tank/vps/vm0
    NAME           USED  VOLMODE
    tank/vps/vm0  10.3G      dev

    # ls -l /dev/zvol/tank/vps/
    total 0
    crw-r-----  1 root  operator  0x7b Dec 27 13:30 vm0

The zvol mounted on the bhyve guest:

    # bhyveload -c /dev/nmdm0A -m 512M  -d /dev/zvol/tank/vps/vm0 vm0
    # bhyve -c 2 -m 512M -A -H -P -s 0:0,hostbridge -s 1:0,virtio-net,tap0 -s 2:0,lpc -s 3:0,virtio-blk,/dev/zvol/tank/vps/vm0 -l com1,/dev/nmdm0A vm0

On the bhyve guest this shows up as a geom device:

    root at vm0:~ # geom disk list
    Geom name: vtbd0
    Providers:
    1. Name: vtbd0
       Mediasize: 10737418240 (10G)
       Sectorsize: 512
       Mode: r2w2e3
       descr: (null)
       ident: BHYVE-747A-2A76-FAC
       fwsectors: 0
       fwheads: 0

And is partitioned in the guest as follows:

    root at vm0:~ # gpart show -p
    =>      34  20971453    vtbd0  GPT  (10G)
            34      1024  vtbd0p1  freebsd-boot  (512K)
          1058  19919872  vtbd0p2  freebsd-ufs  (9.5G)
      19920930   1048576  vtbd0p3  freebsd-swap  (512M)
      20969506      1981           - free -  (991K)

What I am trying to work out is whether there is any way I can mount the guest 
UFS partition on the host with volmode=guest - with volmode=default (ie. geom
when vfs.zfs.vol.mode=1) the device does show up as a geom provider and you can
just mount the partition from /dev/vol directly. The ZFS man page suggests that
you can’t but given that you can clearly mount from within a VM was wondering
is there is any way round this on the host (I am trying to clone a disk device
to run multiple bhyve instances but want to mount and modify some of the 
rc.conf parameters before passing to bhyve)

     volmode=default | geom | dev | none
         This property specifies how volumes should be exposed to the OS.
         Setting it to geom exposes volumes as geom(4) providers, providing
         maximal functionality.  Setting it to dev exposes volumes only as
         cdev device in devfs.  Such volumes can be accessed only as raw disk
         device files, i.e. they can not be partitioned, mounted, participate
         in RAIDs, etc, but they are faster, and in some use scenarios with
         untrusted consumer, such as NAS or VM storage, can be more safe.
         Volumes with property set to none are not exposed outside ZFS, but
         can be snapshoted, cloned, replicated, etc, that can be suitable for
         backup purposes.  Value default means that volumes exposition is con-
         trolled by system-wide sysctl/tunable vfs.zfs.vol.mode, where geom,
         dev and none are encoded as 1, 2 and 3 respectively.  The default
         values is geom.  This property can be changed any time, but so far it
         is processed only during volume creation and pool import.

Using volmode=default (geom - vfs.zfs.vol.mode=1) causes the installer to fail
when you try to create a UFS filesystem under bhyve - it is possible to get
round this by creating the partitions manually but my preference would be to
use volmode=dev.

Paul


 
 


More information about the freebsd-fs mailing list