Uploaded image for project: 'Lustre'
  1. Lustre
  2. LU-12978

FSTYPE=zfs ./lustre/tests/llmount.sh Fails with "mount.lustre: lustre-mdt1/mdt1 has not been formatted with mkfs.lustre or the backend filesystem type is not supported by this tool"

Details

    • Bug
    • Resolution: Not a Bug
    • Minor
    • None
    • None
    • FSTYPE=zfs
      Singe Node Client/Server
      Combined MDT/MGS
    • 3
    • 9223372036854775807

    Description

      Running llmount.sh with FSTYPE=zfs fails with "mount.lustre: lustre-mdt1/mdt1 has not been formatted with mkfs.lustre or the backend filesystem type is not supported by this tool".

      This was seen while working on LU-3606 (ZFS). The goal is to create a very small working ZFS instance for dev purpose. This is combined MDT/MGS. Changing test-framework.sh to using mount.lustre binary worked for me. This may just not be a bug. I am raising it to understand if this is really a bug or something to do with my environment. What are the difference of passing -t lustre vs using mount.lustre. I thought they ultimately boils down to same.

       

      This fails

      # FSTYPE=zfs bash ./lustre/tests/llmount.sh
      Stopping clients: mrpel7 /mnt/lustre (opts:-f)
      Stopping clients: mrpel7 /mnt/lustre2 (opts:-f)
      mrpel7: executing set_hostid
      Loading modules from /root/mrp/lustre-xx-3.10/lustre-release/lustre/tests/..
      detected 2 online CPUs by sysfs
      Force libcfs to create 2 CPU partitions
      ../lnet/lnet/lnet options: 'networks=tcp0(eth1) accept=all'
      quota/lquota options: 'hash_lqs_cur_bits=3'
      Formatting mgs, mds, osts
      Format mds1: lustre-mdt1/mdt1
      Format ost1: lustre-ost1/ost1
      Format ost2: lustre-ost2/ost2
      Checking servers environments
      Checking clients mrpel7 environments
      Loading modules from /root/mrp/lustre-xx-3.10/lustre-release/lustre/tests/..
      detected 2 online CPUs by sysfs
      Force libcfs to create 2 CPU partitions
      Setup mgs, mdt, osts
      Starting mds1: lustre-mdt1/mdt1 /mnt/lustre-mds1
      mount.lustre: lustre-mdt1/mdt1 has not been formatted with mkfs.lustre or the backend filesystem type is not supported by this tool

       

      This was fix by changing test-framework.sh

      diff --git a/lustre/tests/test-framework.sh b/lustre/tests/test-framework.sh
      index 31e7ec3..a363fbb 100755
      --- a/lustre/tests/test-framework.sh
      +++ b/lustre/tests/test-framework.sh
      @@ -2003,8 +2003,12 @@ mount_facet() {
       if [ -f $TMP/test-lu482-trigger ]; then
       RC=2
       else
      + #do_facet ${facet} \
      + # "mkdir -p $mntpt; $MOUNT_CMD $opts $dm_dev $mntpt"
      + local ML_CMD=/usr/sbin/mount.lustre
       do_facet ${facet} \
      - "mkdir -p $mntpt; $MOUNT_CMD $opts $dm_dev $mntpt"
      + "mkdir -p $mntpt; $ML_CMD $opts $dm_dev $mntpt"
       RC=${PIPESTATUS[0]}
       fi

      Essentially changing from using mount -t lustre to using mount.lustre binary makes it work.

      My e2fsprogs version

      # rpm -qa | grep e2fsprogs-1
      e2fsprogs-1.45.2.wc1-0.el7.x86_64

      My setup and compile lustre

      # sh ./autogen.sh
      # ./configure --enable-client --enable-server --disable-ldiskfs --with-linux=/usr/src/kernels/3.10.0-862.9.1.el7_lustre.x86_64/ --with-zfs=/root/zfs/zfs/zfs-0.7.12/ --with-spl=/root/zfs/spl/spl-0.7.12/
      # make -j2
      # make install

       

      Attachments

        Activity

          [LU-12978] FSTYPE=zfs ./lustre/tests/llmount.sh Fails with "mount.lustre: lustre-mdt1/mdt1 has not been formatted with mkfs.lustre or the backend filesystem type is not supported by this tool"

          Andreas, Thanks!!

          I get it now.

          arshad512 Arshad Hussain added a comment - Andreas, Thanks!! I get it now.

          Arshad, this is probably because "mount -t lustre" is looking for the binary "/sbin/mount.lustre" and if that is not found then it doesn't know how to mount the "lustre" filesystem type. Normally the test-framework.sh scripts will create a bind mount from "$LUSTRE/lustre/utils/mount.lustre" to "/sbin/mount.lustre" so that this works. On rare occasions this can become incorrect (e.g. building and running from two different Lustre build directories, or if the options changed from the previous build of Lustre), so the old bind mount must be unmounted manually and restarted.

          adilger Andreas Dilger added a comment - Arshad, this is probably because " mount -t lustre " is looking for the binary " /sbin/mount.lustre " and if that is not found then it doesn't know how to mount the " lustre " filesystem type. Normally the test-framework.sh scripts will create a bind mount from " $LUSTRE/lustre/utils/mount.lustre " to " /sbin/mount.lustre " so that this works. On rare occasions this can become incorrect (e.g. building and running from two different Lustre build directories, or if the options changed from the previous build of Lustre), so the old bind mount must be unmounted manually and restarted.

          People

            adilger Andreas Dilger
            arshad512 Arshad Hussain
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: