Uploaded image for project: 'Core Server'
  1. Core Server
  2. SERVER-6739

Add support for panasas filesystem



    • Type: New Feature
    • Status: Closed
    • Priority: Major - P3
    • Resolution: Won't Fix
    • Affects Version/s: 2.2.0-rc0
    • Fix Version/s: None
    • Component/s: Storage
    • Labels:
    • Environment:
      RHEL 5.1. Panasas parallel filesystem with DirectFlow


      Tried with 2.0.4 and 2.2rc0:

      It looks like mongod attempts to fsync the mongo database directory. On Panasas, this returns error -1. Panasas centralises metadata access, so the directory exists across the cluster as soon as it's created. Apparently for directory fsync they emulate the behaviour of a read-only fs.

      Comment from panasas:

      This is expected behavior. The underlying reason is buried in the DirectFlow protocol. Clients do not create objects on storage,
      they send a command to the metadata manager (FM) to make the directory. Once that is complete, it's ready to go. The Directory object is
      on storage when the command returns.

      Because of these semantics, it was decided that fsync on a dir object would behave in a similar manor as a read only filesystem. That
      being said, there is a bug open to change the behavior.

      Can Mongo be made to tolerate failure of directory fsync?

      * ./bin/mongodb-linux-x86_64-2.2.0-rc0/bin/mongod --dbpath mongodb_cn31/
      Thu Aug  9 15:00:41 [initandlisten] MongoDB starting : pid=9163 port=27017 dbpath=mongodb_cn31/ 64-bit host=dlonapahls236.maninvestments.com
      Thu Aug  9 15:00:41 [initandlisten] 
      Thu Aug  9 15:00:41 [initandlisten] ** WARNING: You are running on a NUMA machine.
      Thu Aug  9 15:00:41 [initandlisten] **          We suggest launching mongod like this to avoid performance problems:
      Thu Aug  9 15:00:41 [initandlisten] **              numactl --interleave=all mongod [other options]
      Thu Aug  9 15:00:41 [initandlisten] 
      Thu Aug  9 15:00:41 [initandlisten] db version v2.2.0-rc0, pdfile version 4.5
      Thu Aug  9 15:00:41 [initandlisten] git version: 33dc8445316479bbaa062db00f179fa5c39bbddb
      Thu Aug  9 15:00:41 [initandlisten] build info: Linux ip-10-2-29-40 #1 SMP Fri Nov 20 17:48:28 EST 2009 x86_64 BOOST_LIB_VERSION=1_49
      Thu Aug  9 15:00:41 [initandlisten] options: { dbpath: "mongodb_cn31/" }
      Thu Aug  9 15:00:41 [initandlisten] Assertion: 13651:Couldn't fsync directory 'mongodb_cn31': errno:22 Invalid argument
      0x6236d1 0x906dfb 0x906f7c 0x5e41ae 0x675dec 0x555a29 0x5565bd 0x55cee0 0x55e499 0x3acde1d994 0x550c29 
       ./bin/mongodb-linux-x86_64-2.2.0-rc0/bin/mongod(_ZN5mongo15printStackTraceERSo+0x21) [0x6236d1]
       ./bin/mongodb-linux-x86_64-2.2.0-rc0/bin/mongod(_ZN5mongo11msgassertedEiPKc+0x9b) [0x906dfb]
       ./bin/mongodb-linux-x86_64-2.2.0-rc0/bin/mongod [0x906f7c]
       ./bin/mongodb-linux-x86_64-2.2.0-rc0/bin/mongod(_ZN5mongo16flushMyDirectoryERKN5boost11filesystem210basic_pathISsNS1_11path_traitsEEE+0x2ae) [0x5e41ae]
       ./bin/mongodb-linux-x86_64-2.2.0-rc0/bin/mongod(_ZN5mongo15acquirePathLockEb+0x1dc) [0x675dec]
       ./bin/mongodb-linux-x86_64-2.2.0-rc0/bin/mongod(_ZN5mongo14_initAndListenEi+0x3b9) [0x555a29]
       ./bin/mongodb-linux-x86_64-2.2.0-rc0/bin/mongod(_ZN5mongo13initAndListenEi+0x1d) [0x5565bd]
       ./bin/mongodb-linux-x86_64-2.2.0-rc0/bin/mongod [0x55cee0]
       ./bin/mongodb-linux-x86_64-2.2.0-rc0/bin/mongod(main+0x9) [0x55e499]
       /lib64/libc.so.6(__libc_start_main+0xf4) [0x3acde1d994]
       ./bin/mongodb-linux-x86_64-2.2.0-rc0/bin/mongod(__gxx_personality_v0+0x441) [0x550c29]
      Thu Aug  9 15:00:41 [initandlisten] exception in initAndListen: 13651 Couldn't fsync directory 'mongodb_cn31': errno:22 Invalid argument, terminating
      Thu Aug  9 15:00:41 dbexit: 
      Thu Aug  9 15:00:41 [initandlisten] shutdown: going to close listening sockets...
      Thu Aug  9 15:00:41 [initandlisten] shutdown: going to flush diaglog...
      Thu Aug  9 15:00:41 [initandlisten] shutdown: going to close sockets...
      Thu Aug  9 15:00:41 [initandlisten] shutdown: waiting for fs preallocator...
      Thu Aug  9 15:00:41 [initandlisten] shutdown: lock for final commit...
      Thu Aug  9 15:00:41 [initandlisten] shutdown: final commit...
      Thu Aug  9 15:00:41 [initandlisten] shutdown: closing all files...
      Thu Aug  9 15:00:41 [initandlisten] closeAllFiles() finished
      Thu Aug  9 15:00:41 [initandlisten] shutdown: removing fs lock...
      Thu Aug  9 15:00:41 dbexit: really exiting now


          Issue Links



              Unassigned Unassigned
              jblackburn James Blackburn
              0 Vote for this issue
              3 Start watching this issue