[Linux-cluster] Ext3/ext4 in a clustered environement

bergman at merctech.com bergman at merctech.com
Sat Nov 5 18:17:09 UTC 2011


In the message dated: Fri, 04 Nov 2011 14:05:34 EDT,
The pithy ruminations from "Nicolas Ross" on 
<[Linux-cluster] Ext3/ext4 in a clustered environement> were:
=> Hi !
=> 

	[SNIP!]

=> 
=> On some services, there are document directories that are huge, not that 
=> much in size (about 35 gigs), but in number of files, around one million. 
=> One service even has 3 data directories with that many files each.

Ouch.

I've seen significant a performance drop with ext3 (and other) filesystems
with 10s to 100s of thousands of files per directory. Make sure that the
"directory hash" option is enabled for ext3. With ~1M files per directory, I'd
do some performance tests comparing rsync under ext3, ext4, and gfs befor
changing filesystems...while ext3/4 do perform better than gfs, the directory
size may be such an overwhelming factor that the filesystem choice is
irrelevent. 

=> 
=> It works pretty well for now, but when it comes to data update (via rsync) 
=> and backup (also via rsync), the node doing the rsync crawls to a stop, all 
=> 16 logical cores are used at 100% system, and it sometimes freezes the file 
=> system for other services on other nodes.

Ouch!

=> 
=> We've changed recently the way the rsync is done, we just to a rsync -nv to 
=> see what files would be transfered and transfer thos files manually. But 
=> it's still too much sometimes for the gfs.

Is this a GFS issue strictly, or an issue with rsync. Have you set up a
similar environment under ext3/4 to test jus the rsync part? Rsync is
known for being a memory & resource hog, particularly at the initial
stage of  building the filesystem tree.

I would strongly recommend benchmarking rsync on ext3/4 before making the
switch.

One option would be to do several 'rsync' operations (serially, not in
parallel!), each operating on a subset of the filesystem, while continuing
to use gfs.


	[SNIP!]

=> 
=> <fs device="/dev/VGx/documentsA" force_unmount="1" fstype="ext4" 
=> mountpoint="/GFSVolume1/Service1/documentsA" name="documentsA" 
=> options="noatime,quota=off"/>
=> 
=> So, first, is this doable ?

Yes.

We have been doing something very similar for the past ~2 years, except
not mounting the ext3/4 partition under a GFS mountpoint.

=> 
=> Second, is this risky ? In the sens of that with force_unmont true, I assume 
=> that no other node would mount that filesystem before it is unmounted on the 
=> stopping service. I know that for some reason umount could hang, but it's 
=> not likely since this data is mostly read-only. In that case the service 

We've experienced numerous cases where the filesystem hangs after a
service migration due a node (or service) failover. These hangs all
seem to be related to quota or NFS issues, so this may not be an issue
in your environment.

=> would be failed and need to be manually restarted. What would be the 
=> consequence if the filesystem happens to be mounted on 2 nodes ?

Most likely, filesystem corruption.

=> 
=> One could add self_fence="1" to the fs line, so that even if it fails, it 
=> will self-fence the node to force the umount. But I'm not there yet.

We don't do that...and haven't felt the need to.

=> 
=> Third, I've been told that it's not recommended to mount a file system like 
=> this "on top" of another clustered fs. Why is that ? I suppose I'll have to 

First of all, that's introducing another dependency. If you mount the ext3/4
partition under a local directory (ie., /export), then you could have nodes
that provide your rsync data service, without requiring GFS.

=> mount under /mnt/something and symlink to that.
=> 
=> Thanks for any insights. 
=> 

Mark




More information about the Linux-cluster mailing list