I'm about to put together a low-end 3.2TiB fileserver for archival
purposes. It will not be hit heavy and will mostly house backup archives
/ etc. The heaviest use scenario would be two NFS clients writing
multi-GB files and two CIFS (samba) clients reading different multi-GB
files. Since not *all* files are large files (maybe a couple million
smaller 4k-100k files) I don't want to use ext3. I do, however, want
a single filesystem (LVM has been...annoying in the past [performance,
etc]). XFS seems like the perfect option, but I'm concerned by the
research I've done on the 4k stack size issue.
Performance isn't the most important thing (obviously faster is better
than slower), but I value stability and low overhead (space-wise) more.
Here's the end setup I'll have:
o celeron 2.6GHz
o 1GB ram
o RHEL 4.0 AS (Update1) installed across two mirrored PATA drives (md0)
- swap across same (md1)
o 2 x Promise SX8 PCI-X SATA controller cards
- Each card will have 6 drives connected to it
- These 12 drives will be setup as raid5 device (/dev/md2)
- /dev/md2 will have a single 3.2TiB XFS filesystem on it
- This filesystem will be exported via NFS and Samba
I have two questions:
-----------------------
1) Here's the mkfs command I will start testing with, I'm assuming
it will determine sunit and swidth correctly? If not, is the
following true: sunit == chunksize ; swidt = (N-1) * sunit?
mkfs.xfs -d unwritten=0 -i size=512,align=1 -l internal=1,version=2
-N /dev/md2
2) What would be the better approach to fix the stack problem? I'm
thinking I have a very high chance of running into it based on my
setup..
Option 1 below is what I was first thinking, but then I read that
it might be better to have 8k thread stacks AND separate IRQ stacks.
This is detailed in Option 2 below.
I'm only planning on running NFS and Samba, so my questions are:
a) Which is preferable, option 1 or option 2?
b) Is it possible that option 2 could fubar anything? Or is
it safe? I'm fairly convinced option 1 is safe since I don't
care about the diskdump stuff...
Thanks!!
Dan.
Option 1:
-=-=-=-=-
o Install kernel 2.6.9 SRPM
o manually apply patch to SPECS/kernel-2.6.9-i686
+ http://oss.sgi.com/archives/linux-xfs/2005-03/txtEk2XINYe9v.txt
+ Also disable the following patches:
#%patch1553 -p1
#%patch1554 -p1
#%patch1555 -p1
#%patch1556 -p1
#%patch1557 -p1
#%patch1558 -p1
#%patch1559 -p1
#%patch1560 -p1
#%patch1561 -p1
#%patch2303 -p1
#%patch2304 -p1
o rpmbuild -ba --target=i686 SPECS/kernel-2.6.spec
+ Hit CTRL-C when it gets to compile stuff..
o cd BUILD/kernel-2.6.9/
o cp kernel-2.6.9-i686.config .config
o vi .config
+ add: CONFIG_4KSTACKS=n
o make menuconfig
+ Filesystems
- XFS
+ Kernel Hacking
- Make sure 4k stacks is DISABLED
o make and build kernel & modules, etc
...
Option 2:
-=-=-=-=-
o Install kernel 2.6.9 SRPM
o rpmbuild -ba --target=i686 SPECS/kernel-2.6.spec
+ Hit CTRL-C when it gets to compile stuff..
o cd BUILD/kernel-2.6.9/
o cp kernel-2.6.9-i686.config .config
o vi include/asm-i386/thread_info.h:
#define PREEMPT_ACTIVE 0x10000000
#ifdef CONFIG_4KSTACKS
-#define THREAD_SIZE (4096)
+#define THREAD_SIZE (8192)
#else
#define THREAD_SIZE (8192)
#endif
-#define STACK_WARN (THREAD_SIZE/8)
+#define STACK_WARN (THREAD_SIZE/2)
o make and build kernel & modules, etc
...
|