Subject: Re: Logical Volume Management for NetBSD
To: Mark Weinem <mark.weinem@onlinehome.de>
From: Chuck Swiger <cswiger@mac.com>
List: netbsd-users
Date: 08/24/2006 09:54:52
On Aug 24, 2006, at 3:02 AM, Mark Weinem wrote:
> Christoph Kaegi wrote:
>> I've been an AIX admin before and I always missed LVM and mksysb
>> on NetBSD.
>>
>> These would be features that would set NetBSD quite a bit ahead of
>> the other BSD's and make life much easier [...]
>
> Set ahead of Solaris' ZFS (which will soon be available on
> Dragonfly- and FreeBSD)?
I would strongly second the (implied?) recommendation that NetBSD
look into ZFS, and hopefully you can take some advantage of the
FreeBSD porting efforts or even contribute to them. Pawel Jakub
Dawidek <pjd@FreeBSD.org> has sent out a status message recently
which I'll copy below, and is interested in additional testing or
companies willing to sponsor some of this work.
I suspect that Apple is also interested in ZFS, although I have no
specific knowledge. ;-)
--
-Chuck
Begin forwarded message:
> From: Pawel Jakub Dawidek <pjd@FreeBSD.org>
> Date: August 22, 2006 3:45:16 AM PDT
> To: freebsd-current@FreeBSD.org
> Cc: freebsd-fs@FreeBSD.org, zfs-discuss@opensolaris.org
> Subject: Porting ZFS file system to FreeBSD.
>
> Hi.
>
> I started porting the ZFS file system to the FreeBSD operating system.
>
> There is a lot to do, but I'm making good progress, I think.
>
> I'm doing my work in those directories:
>
> contrib/opensolaris/ - userland files taken directly from
> OpenSolaris (libzfs, zpool, zfs and others)
>
> sys/contrib/opensolaris/ - kernel files taken directly from
> OpenSolaris (zfs, taskq, callb and others)
>
> compat/opensolaris/ - compatibility userland layer, so I can
> reduce diffs against vendor files
>
> sys/compat/opensolaris/ - compatibility kernel layer, so I can
> reduce diffs against vendor files (kmem based on
> malloc(9) and uma(9), mutexes based on our sx(9) locks,
> condvars based on sx(9) locks and more)
>
> cddl/ - FreeBSD specific makefiles for userland bits
>
> sys/modules/zfs/ - FreeBSD specific makefile for the kernel
> module
>
> You can find all those on FreeBSD perforce server:
>
> http://perforce.freebsd.org/depotTreeBrowser.cgi?FSPC=//depot/user/
> pjd/zfs&HIDEDEL=NO
>
> Ok, so where am I?
>
> I ported the userland bits (libzfs, zfs and zpool). I had ztest and
> libzpool compiling and working as well, but I left them behind for now
> to focus on kernel bits.
>
> I'm building in all (except 2) files into zfs.ko (kernel module).
>
> I created new VDEV - vdev_geom, which fits to FreeBSD's GEOM
> infrastructure, so basically you can use any GEOM provider to build
> your
> ZFS pool. VDEV_GEOM is implemented as consumers-only GEOM class.
>
> I reimplemented ZVOL to also export storage as GEOM provider. This
> time
> it is providers-only GEOM class.
>
> This way one can create for example RAID-Z on top of GELI encrypted
> disks or encrypt ZFS volume. The order is free.
> Basically you can put UFS on ZFS volumes already and it behaves really
> stable even under heavy load.
>
> Currently I'm working on file system bits (ZPL), which is the most
> hard
> part of the entire ZFS port, because it talks to one of the most
> complex
> part of the FreeBSD kernel - VFS.
>
> I can already mount ZFS-created file systems (with 'zfs create'
> command), create files/directories, change permissions/owner/etc.,
> list
> directories content, and perform few other minor operation.
>
> Some "screenshots":
>
> lcf:root:~# uname -a
> FreeBSD lcf 7.0-CURRENT FreeBSD 7.0-CURRENT #74: Tue Aug 22
> 03:04:01 UTC 2006 root@lcf:/usr/obj/zoo/pjd/lcf/sys/LCF i386
>
> lcf:root:~# zpool create tank raidz /dev/ad4a /dev/ad6a /dev/ad5a
>
> lcf:root:~# zpool list
> NAME SIZE USED AVAIL CAP HEALTH
> ALTROOT
> tank 35,8G 11,7M 35,7G 0% ONLINE -
>
> lcf:root:~# zpool status
> pool: tank
> state: ONLINE
> scrub: none requested
> config:
>
> NAME STATE READ WRITE CKSUM
> tank ONLINE 0 0 0
> raidz1 ONLINE 0 0 0
> ad4a ONLINE 0 0 0
> ad6a ONLINE 0 0 0
> ad5a ONLINE 0 0 0
>
> errors: No known data errors
>
> lcf:root:# zfs create -V 10g tank/vol
> lcf:root:# newfs /dev/zvol/tank/vol
> lcf:root:# mount /dev/zvol/tank/vol /mnt/test
>
> lcf:root:# zfs create tank/fs
>
> lcf:root:~# mount -t zfs,ufs
> tank on /tank (zfs, local)
> tank/fs on /tank/fs (zfs, local)
> /dev/zvol/tank/vol on /mnt/test (ufs, local)
>
> lcf:root:~# df -ht zfs,ufs
> Filesystem Size Used Avail Capacity Mounted on
> tank 13G 34K 13G 0% /tank
> tank/fs 13G 33K 13G 0% /tank/fs
> /dev/zvol/tank/vol 9.7G 4.0K 8.9G 0% /mnt/test
>
> lcf:root:~# mkdir /tank/fs/foo
> lcf:root:~# touch /tank/fs/foo/bar
> lcf:root:~# chown root:operator /tank/fs/foo /tank/fs/foo/bar
> lcf:root:~# chmod 500 /tank/fs/foo
> lcf:root:~# ls -ld /tank/fs/foo /tank/fs/foo/bar
> dr-x------ 2 root operator 3 22 sie 05:41 /tank/fs/foo
> -rw-r--r-- 1 root operator 0 22 sie 05:42 /tank/fs/foo/bar
>
> The most important missing pieces:
> - Most of the ZPL layer.
> - Autoconfiguration. I need implement vdev discovery based on
> GEOM's taste
> mechanism.
> - .zfs/ control directory (entirely commented out for now).
> And many more, but hey, this is after 10 days of work.
>
> PS. Please contact me privately if your company would like to
> donate to the
> ZFS effort. Even without sponsorship the work will be finished,
> but
> your contributions will allow me to spend more time working on
> ZFS.
>
> --
> Pawel Jakub Dawidek http://www.wheel.pl
> pjd@FreeBSD.org http://www.FreeBSD.org
> FreeBSD committer Am I Evil? Yes, I Am!