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!