Mr. Junjiro R. Okajima,
please read the second section of this letter first.
1. Kernel messages
After our discussion from yesterday, I looked again on the script
journal-commit. In my last letter I ask you the following questions:
a) The script journal-commit gets its info about the file system
type from /proc/mounts. Is that right?
b) The script runs the following mount command only if it has found
the file system type ext3 in /proc/mounts. Is that right?
As example:
mount -o remount,commit=0 /tmp/jailcache.ro.var
c) If the scripts finds a file system type like aufs or tmpfs in
/proc/mounts it doesn't call the mount command. Is that right?
For that reason, I looked again into the file /proc/mounts and
executed the mount command from the command line. I run mount in
the chroot environment. I used only lines from /proc/mounts that
contains the FSTYPE ext3 and used the mount from this line,
because the script journal-commit does the same:
$> sudo chroot /tmp/jail /bin/login
chroot_$> sudo mount -o remount,commit=0 /
mount: / not mounted already, or bad option
kernel message from aufs module:
[ 5994.037100] aufs au_opts_parse:1039:mount[5124]: \
unknown option errors=remount-ro
--------------------------------------------------
chroot_$> sudo mount -o remount,commit=0 /home
mount: /home not mounted already, or bad option
kernel message from aufs module:
[ 6087.176869] aufs au_opts_parse:1039:mount[5142]: \
unknown option commit=0
--------------------------------------------------
chroot_$> sudo mount -o remount,commit=0 /opt
mount: /opt not mounted already, or bad option
kernel message from aufs module:
no output
--------------------------------------------------
chroot_$> sudo mount -o remount,commit=0 /srv
mount: /srv not mounted already, or bad option
kernel message from aufs module:
[ 6275.775855] aufs au_opts_parse:1039:mount[5177]: \
unknown option commit=0
--------------------------------------------------
chroot_$> sudo mount -o remount,commit=0 /tmp
mount: /tmp not mounted already, or bad option
kernel message from aufs module:
no output
--------------------------------------------------
chroot_$> sudo mount -o remount,commit=0 /usr
mount: /usr not mounted already, or bad option
kernel message from aufs module:
[ 6399.863304] aufs au_opts_parse:1039:mount[5212]: \
unknown option commit=0
--------------------------------------------------
chroot_$> sudo mount -o remount,commit=0 /usr/local
mount: /usr/local not mounted already, or bad option
kernel message from aufs module:
[ 6427.924941] aufs au_opts_parse:1039:mount[5229]: \
unknown option commit=0
--------------------------------------------------
chroot_$> sudo mount -o remount,commit=0 /var
mount: /var not mounted already, or bad option
kernel message from aufs module:
[ 6506.867357] aufs au_opts_parse:1039:mount[5246]: \
unknown option commit=0
--------------------------------------------------
chroot_$> sudo mount -o remount,commit=0 /tmp/jailcache.ro.root
mount: mount point /tmp/jailcache.ro.root does not exist
kernel message from aufs module:
no output
--------------------------------------------------
chroot_$> sudo mount -o remount,commit=0 /tmp/jailcache.ro.var
mount: mount point /tmp/jailcache.ro.var does not exist
kernel message from aufs module:
no output
--------------------------------------------------
chroot_$> sudo mount -o remount,commit=0 /tmp/jailcache.ro.usr
mount: mount point /tmp/jailcache.ro.usr does not exist
kernel message from aufs module:
no output
--------------------------------------------------
chroot_$> sudo mount -o remount,commit=0 /tmp/jailcache.ro.usrlocal
mount: mount point /tmp/jailcache.ro.usrlocal does not exist
kernel message from aufs module:
no output
--------------------------------------------------
chroot_$> sudo mount -o remount,commit=0 /tmp/jailcache.ro.home
mount: mount point /tmp/jailcache.ro.home does not exist
kernel message from aufs module:
no output
--------------------------------------------------
chroot_$> sudo mount -o remount,commit=0 /tmp/jailcache.ro.srv
mount: mount point /tmp/jailcache.ro.srv does not exist
kernel message from aufs module:
no output
The question is, is the above message from the aufs module via the
kernel only a warning or is this message a hint for a bigger
problem? A problem that could be harmful.
The following lins shows how I created the branches and unions for
the above used chroot environment:
# The code of the script bldchraufs
#
# The following lines contains the code of the script:
# Stop script on error.
set -e
# Create the chroot directory /tmp/jail.
mkdir -p /tmp/jail
# Build the AUFS union rootonaufs based on the bond of /.
# Mount rootonaufs in /tmp/jail/.
mkdir -p /tmp/jailcache.rw.root /tmp/jailcache.ro.root
mount -o bind / /tmp/jailcache.ro.root
mount -t aufs -o br:/tmp/jailcache.rw.root:/tmp/jailcache.ro.root \
rootonaufs /tmp/jail/
# Build the AUFS union varonaufs based on the bond of /var.
# Mount varonaufs in /tmp/jail/var.
mkdir -p /tmp/jailcache.rw.var /tmp/jailcache.ro.var
mount -o bind /var /tmp/jailcache.ro.var
mount -t aufs -o br:/tmp/jailcache.rw.var:/tmp/jailcache.ro.var \
varonaufs /tmp/jail/var
# Build the AUFS union usronaufs based on the bond of /usr.
# Mount usronaufs in /tmp/jail/usr.
mkdir -p /tmp/jailcache.rw.usr /tmp/jailcache.ro.usr
mount -o bind /usr /tmp/jailcache.ro.usr
mount -t aufs -o br:/tmp/jailcache.rw.usr:/tmp/jailcache.ro.usr \
usronaufs /tmp/jail/usr
# Build the AUFS union usrlocalonaufs based on the bond of
# /usr/local.
# Mount usrlocalonaufs in /tmp/jail/usr/local.
mkdir -p /tmp/jailcache.rw.usrlocal /tmp/jailcache.ro.usrlocal
chmod g+ws /tmp/jailcache.rw.usrlocal
chown 0:50 /tmp/jailcache.rw.usrlocal
chmod g+ws /tmp/jailcache.ro.usrlocal
chown 0:50 /tmp/jailcache.ro.usrlocal
chmod g+ws /tmp/jail/usr/local
chown 0:50 /tmp/jail/usr/local
mount -o bind /usr/local /tmp/jailcache.ro.usrlocal
mount -t aufs \
-o br:/tmp/jailcache.rw.usrlocal:/tmp/jailcache.ro.usrlocal \
usrlocalonaufs /tmp/jail/usr/local
# Build the AUFS union bootonaufs based on the bond of /boot.
# Mount bootonaufs in /tmp/jail/boot.
mkdir -p /tmp/jailcache.rw.boot /tmp/jailcache.ro.boot
mount -o bind /boot /tmp/jailcache.ro.boot
mount -t aufs -o br:/tmp/jailcache.rw.boot:/tmp/jailcache.ro.boot \
bootonaufs /tmp/jail/boot
# Build the AUFS union homeonaufs based on the bond of /home.
# Mount homeonaufs in /tmp/jail/home.
mkdir -p /tmp/jailcache.rw.home /tmp/jailcache.ro.home
chown 1000:1000 /tmp/jailcache.rw.home
chown 1000:1000 /tmp/jailcache.ro.home
chown 1000:1000 /tmp/jail/home
mount -o bind /home /tmp/jailcache.ro.home
mount -t aufs -o br:/tmp/jailcache.rw.home:/tmp/jailcache.ro.home \
homeonaufs /tmp/jail/home
# Build the AUFS union srvonaufs based on the bond of /srv.
# Mount srvonaufs in /tmp/jail/srv.
mkdir -p /tmp/jailcache.rw.srv /tmp/jailcache.ro.srv
mount -o bind /srv /tmp/jailcache.ro.srv
mount -t aufs -o br:/tmp/jailcache.rw.srv:/tmp/jailcache.ro.srv \
srvonaufs /tmp/jail/srv
# Mount proc in /tmp/jail/proc.
mount -t proc -o rw,noexec,nosuid,nodev proconaufs /tmp/jail/proc
# Mount sysfs in /tmp/jail/sys.
mount -t sysfs -o rw,noexec,nosuid,nodev sysonaufs /tmp/jail/sys
# Bind /var/lib/nfs/rpc_pipefs to /tmp/jail/var/lib/nfs/rpc_pipefs.
mount -o bind /var/lib/nfs/rpc_pipefs \
/tmp/jail/var/lib/nfs/rpc_pipefs
# Bind /sys/fs/fuse/connections to
# /tmp/jail/sys/fs/fuse/connections.
mount -o bind /sys/fs/fuse/connections \
/tmp/jail/sys/fs/fuse/connections
# Bind /proc/sys/fs/binfmt_misc to
# /tmp/jail/proc/sys/fs/binfmt_misc.
mount -o bind /proc/sys/fs/binfmt_misc \
/tmp/jail/proc/sys/fs/binfmt_misc
# Bind /dev to /tmp/jail/dev.
mount -o bind /dev /tmp/jail/dev
# Bind /dev/pts to /tmp/jail/dev/pts.
mount -o bind /dev/pts /tmp/jail/dev/pts
# Bind /run to /tmp/jail/run.
mount -o bind /run /tmp/jail/run
# Bind /dev/shm to /tmp/jail/run/shm.
mount -o bind /run/shm /tmp/jail/run/shm
2. Conclusion
As example I use the directory /var in the chroot environment. In
the chroot environment /var has the file system type aufs. Outside
the chroot environment /var has the file system type ext3 and is
also known with file system type aufs under the device varnonaufs.
The script journal-commit that runs in the chroot environment gets
its info about /var from the file /proc/mounts. Because the script
only sees lines with the file systems types ext3 or ext4 it thinks
that /var in the chroot environment has the file system type ext3.
For that reason the script calls mount with the option commit. But
in the chroot environment /var has the file system type aufs and
AUFS doesn't know anything about the option commit. As consequence
the aufs module generates a kernel message.
I hope, I have found the correct explanation.
Regards,
Robert Wotzlaw
------------------------------------------------------------------------------
This SF email is sponsosred by:
Try Windows Azure free for 90 days Click Here
http://p.sf.net/sfu/sfd2d-msazure