All of lore.kernel.org
 help / color / mirror / Atom feed
From: Eric Thibodeau <kyron-PfIpIgFSuk5Wk0Htik3J/w@public.gmane.org>
To: linux-nfs@vger.kernel.org
Subject: NFSv4 and nfsroot
Date: Tue, 15 Jul 2008 23:59:44 -0400	[thread overview]
Message-ID: <487D7230.2050404@neuralbs.com> (raw)

I've set up nfsroot based systems before but I am now attempting to do 
the same thing using nfsv4 using the _in-kernel_ nfsroot support (ie: no 
initrd with script that does the mounting). I have been unable to find 
"authoritative" references to how to accomplish this and wanted to ask 
for solid references before I start polluting the mailing list with my 
probably completely erroneous approach. Things that might be worth 
mentioning:

Some basic information, here is a sequence where I mount the nfsv4 
export onto the same machine exporting the tree:

/etc/exports, using FSID=0/root:

    livecd ~ # exportfs -v
    /tftproot/nfsroot/x86_64
                   
    10.0.0.0/255.255.255.0(ro,async,wdelay,no_root_squash,no_subtree_check,fsid=0)

Simple call to mount won't work, I'm assuming mount defaults to nfsv3:

    livecd ~ # mount 10.0.0.1:/ /mnt/gentoo/
    mount.nfs: access denied by server while mounting 10.0.0.1:/

Specifying nfs4 works:

    livecd ~ # mount -t nfs4 10.0.0.1:/ /mnt/gentoo/

Attempts to use the nfsv3 syntax fails (as expected since I put 
`--no-nfs-version 3 --no-nfs-version 2` as a startup arg for nfsd):

    livecd ~ # mount -t nfs4 10.0.0.1:/tftproot/nfsroot/x86_64 /mnt/cdrom/
    mount.nfs4: mounting 10.0.0.1:/tftproot/nfsroot/x86_64 failed,
    reason given by server:
      No such file or directory

Booting the diskless node, I get the following:

1- If the args are (v3 syntax, in pxelinux.cfg/default):

      append ip=dhcp nfsroot=10.0.0.1:/tftproot/nfsroot/x86_64,hard,intr
    init=/boot/stateless.sh

The node boots up to the point of calling init and panics because it 
can't find "/boot/stateless.sh" (screen shot: 
http://wiki.neuralbs.com/~kyron/soc2008/screenshoots/NFSv4WithV3CommandLine_no_init.png 
) But stateless is there and accessible (from the earlyer local mounting 
of the root):

    livecd ~ # ls -l /mnt/gentoo/boot/stateless.sh
    -rwxr-xr-x 1 4294967294 4294967294 3964 Jul 11 04:22
    /mnt/gentoo/boot/stateless.sh


2- If the args are (v4 syntax, in pxelinux.cfg/default):

      append ip=dhcp nfsroot=10.0.0.1:/,hard,intr init=/boot/stateless.sh

The node boots up but panics on mounting root (screen shot : 
http://wiki.neuralbs.com/~kyron/soc2008/screenshoots/NFSv4PanicOnMount.png )

What can be seen in the logs:

    livecd ~ # egrep -i '(nfs|mount)' /var/log/messages
    Jul 16 01:37:23 livecd Mount-cache hash table entries: 256
    Jul 16 01:37:36 livecd rc-scripts: ERROR:  cannot start nfsmount as
    rpc.statd could not start
    Jul 16 01:52:00 livecd aufs test_add:377:mount[27642]: uid/gid/perm
    /mnt/livecd/tftproot 0/0/0755, 0/0/01777
    Jul 16 01:52:11 livecd Installing knfsd (copyright (C) 1996
    okir-pn4DOG8n3UYbFoVRYvo4fw@public.gmane.org).
    Jul 16 01:52:12 livecd NFSD: Using /var/lib/nfs/v4recovery as the
    NFSv4 state recovery directory
    Jul 16 01:52:12 livecd NFSD: starting 90-second grace period
    Jul 16 02:05:17 livecd mountd[28146]: Caught signal 15,
    un-registering and exiting.
    Jul 16 02:05:17 livecd nfsd: last server has exited
    Jul 16 02:05:17 livecd nfsd: unexporting all filesystems
    Jul 16 02:05:17 livecd NFSD: Using /var/lib/nfs/v4recovery as the
    NFSv4 state recovery directory
    Jul 16 02:05:17 livecd NFSD: starting 90-second grace period
    Jul 16 02:05:40 livecd mountd[28441]: refused mount request from
    10.0.0.1 for / (/): not exported
    Jul 16 02:05:49 livecd nfsd: nfsv4 idmapping failing: has idmapd not
    been started?
    Jul 16 02:12:52 livecd dnsmasq[27954]: TFTP sent
    /tftproot/nfsroot/x86_64/boot/kernel to 10.0.0.55
    Jul 16 02:13:10 livecd mountd[28441]: authenticated mount request
    from 10.0.0.55:955 for /tftproot/nfsroot/x86_64
    (/tftproot/nfsroot/x86_64)
    Jul 16 02:13:10 livecd aufs aufs_encode_fh:529:nfsd[28447]: NFSv2
    client (max_len 6)?
    Jul 16 02:14:44 livecd dnsmasq[27954]: TFTP sent
    /tftproot/nfsroot/x86_64/boot/kernel to 10.0.0.55
    Jul 16 02:15:01 livecd mountd[28441]: authenticated mount request
    from 10.0.0.55:682 for /tftproot/nfsroot/x86_64
    (/tftproot/nfsroot/x86_64)
    Jul 16 02:24:55 livecd dnsmasq[28619]: TFTP sent
    /tftproot/nfsroot/x86_64/boot/kernel to 10.0.0.55
    Jul 16 02:25:12 livecd mountd[28441]: refused mount request from
    10.0.0.55 for / (/): not exported

NFS-booting-node's kernel config (nfs stuff), notice v3 client is disabled:

    kyron clustering-livecd # grep -i nfs
    /tmp/nfsboot_kernel/gentoo/usr/src/linux-2.6.26-rc5-mm3/.config
    CONFIG_NFS_FS=y
    # CONFIG_NFS_V3 is not set
    CONFIG_NFS_V4=y
    CONFIG_NFSD=m
    CONFIG_NFSD_V3=y
    # CONFIG_NFSD_V3_ACL is not set
    CONFIG_NFSD_V4=y
    CONFIG_ROOT_NFS=y
    CONFIG_NFS_COMMON=y

The server's kernel config (nfs):

    kyron clustering-livecd # grep -i nfs
    /var/tmp/catalyst/kerncache/default/livecd-stage2-amd64-2008.0/gentoo/usr/src/linux-2.6.24-gentoo-r8/.config
    CONFIG_NFS_FS=y
    # CONFIG_NFS_V3 is not set
    CONFIG_NFS_V4=y
    CONFIG_NFS_DIRECTIO=y
    CONFIG_NFSD=m
    CONFIG_NFSD_V3=y
    # CONFIG_NFSD_V3_ACL is not set
    CONFIG_NFSD_V4=y
    CONFIG_NFSD_TCP=y
    CONFIG_ROOT_NFS=y
    CONFIG_NFS_COMMON=y

...so, it seems kernel boot time nfs is not NFSv4 compatible (only v2/3 
is supported _in kernel_).

Eric


             reply	other threads:[~2008-07-16  3:59 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-07-16  3:59 Eric Thibodeau [this message]
     [not found] ` <487D7230.2050404-PfIpIgFSuk5Wk0Htik3J/w@public.gmane.org>
2008-07-16 13:09   ` NFSv4 and nfsroot Trond Myklebust

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=487D7230.2050404@neuralbs.com \
    --to=kyron-pfipigfsuk5wk0htik3j/w@public.gmane.org \
    --cc=linux-nfs@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.