Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

I can't find Aufs in Redhat's Fedora, or any other stackable filesystem for that matter.

It seems this is due to relabelling limitations of SELinux.

Is there a way to achieve similar without resorting to file/dir copy.

I have the following list of directories:

/proj/online/src/main/java
/proj/online/src/main/resources
/proj/online/src/test/java
/proj/client/src/test/scala
/proj/common/src/main/resources
/proj/common/src/main/scala
/proj/common/src/test/resources
/proj/common/src/test/scala
/proj/integration/src/main/resources
/proj/integration/src/main/scala
/proj/integration/src/test/scala
/proj/mockfeedserver/src/main/scala
/proj/mockfeedserver/src/test/scala
/proj/server/src/main/scala
/proj/server/src/test/scala
/proj/foit/src/main/resources
/proj/foit/src/main/scala
/proj/foit/src/test/resources
/proj/foit/src/test/scala

I want to present the following to the compiler*:

/tmp/foo/src/main/scala /tmp/foo/src/main/resources /tmp/foo/src/test/scala /tmp/foo/src/test/resources

With AUFS, I could have achieved this with a couple of commands such as this:

mount -t aufs -o br=r:/proj/common/src/main/scala=r:/proj/integration/src/main/scala=r:/proj/mockfeedserver/src/main/scala=r:/proj/server/src/main/scala=r:/proj/foit/src/main/scala=r -o udba=reval none /tmp/foo/src/main/scala 

So that would have mounted /tmp/foo/src/main/scala as the composite of all the src/main/scala directories.

Great, but I'm on Fedora! In the absence of AUFS or UnionFS I can't really see a way to achieve this. I've heard of mount rebinding before, can it help, or should I change my distribution?

share|improve this question

3 Answers 3

up vote 1 down vote accepted

FunionFS is available both on Fedora and in Red Hat EPEL. The package name, of course, is funionfs.

share|improve this answer
    
    
Yeah, I'm going to try that. I don't like using 3rd party repo's. –  irishjava Jun 12 '13 at 16:11

Build a kernel with aufs support

We will start with installing dependacies required to compile kernel

yum install gcc rpmbuild glibc-static git
git clone https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
git clone http://git.code.sf.net/p/aufs/aufs3-standalone
cd linux-2.6
git checkout v3.8
cd ..
patch -d linux-2.6 -p1 < aufs3-standalone/aufs3-base.patch
patch -d linux-2.6 -p1 < aufs3-standalone/aufs3-proc_map.patch
patch -d linux-2.6 -p1 < aufs3-standalone/aufs3-standalone.patch
patch -d linux-2.6 -p1 < aufs3-standalone/aufs3-kbuild.patch

cd aufs3-standalone/
cp -ar fs/aufs ../linux-2.6/fs/
cp include/linux/aufs_type.h ../linux-2.6/include/linux/
cp include/uapi/linux/ ../linux-2.6/include/uapi/linux/

Now we’ll build kernel which is patched with aufs code.

Enable aufs support from Main menu–>File Systems –> Misc. Filesystems –> AUFS support

make menuconfig

Now, we can either compile the kernel directly or create an rpm

make modules_install
make bzimage
make install
make headers_install

or simple,

make rpm-pkg

and then install new kernel and kernel-headers rpm.

Reboot the system with new kernel.

share|improve this answer
    
Not quite what I'm looking for but kudos for enumerating the custom kernel build steps. –  Bryan Hunt Jul 13 '13 at 22:56

Only the fuse based unionfs is available on RHEL via thirdparty packages:

http://pkgs.repoforge.org/fuse-unionfs/

share|improve this answer
    
Hmm. I'm not crazy about installing 3rd party RPM. –  irishjava Jun 11 '13 at 17:24

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.