RFC: Suggesting ZFS "best practices" in FreeBSD

Scott Long scottl at samsco.org
Wed Jan 23 05:45:29 UTC 2013


On Jan 22, 2013, at 10:38 PM, David Xu <davidxu at freebsd.org> wrote:

> On 2013/01/22 22:33, Scott Long wrote:
>> 
>> On Jan 22, 2013, at 4:03 AM, Borja Marcos <borjam at sarenet.es> wrote:
>> 
>>> (Scott, I hope you don't mind to be CC'd, I'm not sure you read the -FS mailing list, and this is a SCSI//FS issue)
>>> 
>>> 
>>> 
>>> Hi :)
>>> 
>>> Hope nobody will hate me too much, but ZFS usage under FreeBSD is still chaotic. We badly need a well proven "doctrine" in order to avoid problems. Especially, we need to avoid the braindead Linux HOWTO-esque crap of endless commands for which no rationale is offered at all, and which mix personal preferences and even misconceptions as "advice" (I saw one of those howtos which suggested disabling checksums "because they are useless").
>>> 
>>> ZFS is a very different beast from other filesystems, and the setup can involve some non-obvious decisions. Worse, Windows oriented server vendors insist on bundling servers with crappy raid controllers which tend to make things worse.
>>> 
>>> Since I've been using ZFS on FreeBSD (from the first versions) I have noticed several serious problems. I try to explain some of them, and my suggestions for a solution. We should collect more use cases and issues and try to reach a consensus.
>>> 
>>> 
>>> 
>>> 1- Dynamic disk naming -> We should use static naming (GPT labels, for instance)
>>> 
>>> ZFS was born in a system with static device naming (Solaris). When you plug a disk it gets a fixed name. As far as I know, at least from my experience with Sun boxes, c1t3d12 is always c1t3d12. FreeBSD's dynamic naming can be very problematic.
>>> 
>> 
>> Look up SCSI device wiring in /sys/conf/NOTES.  That's one solution to static naming, just with a slightly different angle than Solaris.  I do agree with your general thesis here, and either wiring should be made a much more visible and documented feature, or a new mechanism should be developed to provide naming stability.  Please let me know what you think of the wiring mechanic.
>>> 
>>> 
> 
> I am curious, because we already have devfs, why do not the driver create device entry like following ?
> 
> /dev/scsi/bus0/target0/lun0/ada0
> /dev/scsi/bus0/target0/lun0/ada0s1
> /dev/scsi/bus0/target0/lun0/ada0s2
> ...
> 
> This will eliminate the needs of hints.
> 

The problem is that this structure is east for computers to manipulate, but hard for humans to manipulate.  One thing that could be done with devfs, however, is to create device aliases.  i.e.:

crw-r-----   1 root  operator  0x86 Jan  2 23:00 c0b0t1l0
lrwxr-xr-x   1 root  wheel        6 Jan  2 23:00 da0 -> c0b0t1l0

This gets hairy because aliases then need to be made for partitions, unless some sort of transparent translator is created in devfs.  It also gets complicated because you still need to arbitrate the controller numbering (the 'c0' in the above example), so wiring might still be needed.

Scott



More information about the freebsd-fs mailing list