Am 08.03.2013 13:08, schrieb [email protected]:
> I still don't know why /export/clients/usr/.wh..wh..opq could solve the
> problem. So I think it better to keep our mind that problem happened on
> NFS client in linux-3.6.
> Someday when I have enough time, I may dive into NFS in linux-3.6 and to
> see anything wrong.
Apparently you have been right, it has to be something in kernel 3.6
which leads to the error. Everything is fine when using linux kernel
3.8.4 and using git to checkout aufs3.8. After recompiling and
installing the new kernel and initramfs I removed the whiteouts and
still everything works.
To make sure it has not been a glitch of some sort I did start from
scratch with a fresh linux source tree of 3.6, adding aufs3.6 patches
and a aufs3.6 kernel module and voila, the error reappears.
As I have no problem whatsoever with using a current linux kernel I am
perfectly happy now. I must admit, that I would love to know why 3.6
gets me the error, but I would much rather concentrate on the present
than spend time on days gone by.
In response to Hans-Peter Jansen I would like to thank you for your
comment. You might very well be right in your suspicion regarding
exporting the root readonly and subdirectories read/write, but I did not
explore this further. My setup intends to make daily upgrades very easy
with as little duplication as possible, for this reason the clients
share the basic installation with the server. There are some
shortcomings, server and client need to share the architecture for
instance, but for my small networks it has proven to be at least usable.
Just like you I use xino on a tmpfs, it had just been a test with the
noxino option. Regarding the udba settings I think udba=reval is
currently already the default for aufs, I will definitely have a look
there to see, if there are other problems waiting for me.
Eibo Thieme
My current, working init script for the initramfs:
#!/bin/busybox sh
echo "Loading, please wait..."
# /bin/mount, otherwise busybox builtin would get used
echo -n "Mounting /sys and /proc..."
/bin/mount -t sysfs -o nodev,noexec,nosuid none /sys
/bin/mount -t proc -o nodev,noexec,nosuid none /proc
echo "Done."
# Export relevant variables
export TARGET=/root
# debugging
#klogd -c 4
#syslogd -R 192.168.0.1
#modprobe aufs debug=1
#modprobe aufs
echo -n "Loading essential drivers..."
if [ -e /etc/modules ]; then
cat /etc/modules | while read m; do
# Skip empty lines
if [ -z "$m" ]; then
continue
fi
# Skip comments - dash removes whitespace prefix
com=$(printf "%.1s" "${m}")
if [ "$com" = "#" ]; then
continue
fi
modprobe $m
done
fi
echo "Done."
# pxelinux sets BOOTIF to 01-??-??-??-??-??-?? (MAC)
bootif_mac=""
IFS='-'
for x in ${BOOTIF} ; do
bootif_mac="$bootif_mac:$x"
done
unset IFS
bootif_mac=${bootif_mac#:*:}
done
unset IFS
bootif_mac=${bootif_mac#:*:}
# find DEVICE to bootif_mac
for device in /sys/class/net/* ; do
if [ -f "$device/address" ]; then
current_mac=$(cat "$device/address")
if [ "$bootif_mac" = "$current_mac" ]; then
DEVICE=${device##*/}
break
fi
fi
done
echo "Starting network..."
# Loopback
ifconfig lo up
# Ethernet
ifconfig ${DEVICE} up
# DHCP
udhcpc -i ${DEVICE} -q -s /sbin/setup-net
# source output of script /sbin/setup-net (HOSTNAME, SERVER)
. /tmp/net.conf
echo "Network Done."
echo -n "Mounting root file system..."
NFSOPTS="nfsvers=3,nolock"
# mount the xino dir
/bin/mount -t tmpfs -o size=16M none /aufs/xino
# mount the clients specific dir
/bin/mount -t nfs -o rw,${NFSOPTS} ${SERVER}:/target/export /${HOSTNAME}
/aufs/private
# mount the clients general dir
/bin/mount -t nfs -o ro,${NFSOPTS} ${SERVER}:/target/export/clients
/aufs/clients
# mount the server root dir
/bin/mount -t nfs -o ro,${NFSOPTS} ${SERVER}:/target/ /aufs/server
# do the union
/bin/mount -t aufs -o
xino=/aufs/xino/root,dirs=/aufs/private=rw:/aufs/clients=rr+wh:/aufs/server=rr
none ${TARGET}
echo "Done."
/bin/mount --move /aufs/xino ${TARGET}/aufs/xino
/bin/mount --move /aufs/private ${TARGET}/aufs/private
/bin/mount --move /aufs/clients ${TARGET}/aufs/clients
/bin/mount --move /aufs/server ${TARGET}/server
# Move virtual filesystems over to the real filesystem
/bin/mount --move /sys ${TARGET}/sys
/bin/mount --move /proc ${TARGET}/proc
# Chain to real filesystem
exec /bin/run-init ${TARGET} /sbin/init "$@" <${TARGET}/dev/console
>${TARGET}/dev/console
------------------------------------------------------------------------------
Minimize network downtime and maximize team effectiveness.
Reduce network management and security costs.Learn how to hire
the most talented Cisco Certified professionals. Visit the
Employer Resources Portal
http://www.cisco.com/web/learning/employer_resources/index.html