A FUSE wrapper around MongoDB gridfs using python and llfuse.
gridfs_fuse --mongodb-uri="mongodb://127.0.0.1:27017" --database="gridfs_fuse" --mount-point="/mnt/gridfs_fuse"
- pymongo
- llfuse
- create/list/delete directories => folder support.
- read files.
- delete files.
- open and write once (like HDFS).
- rename
- modify an existing file.
- resize an existing file.
- hardlink
- symlink
- statfs
- AWS d2.xlarge machine.
- 4 @ 2.40Ghz (E5-2676)
- 30 gigabyte RAM
- filesystem: ext4
- block device: three instance storage disks combined with lvm.
lvcreate -L 3T -n mongo -i 3 -I 4096 ax /dev/xvdb /dev/xvdc /dev/xvdd
- mongodb 3.0.1
- mongodb storage engine WiredTiger
- mongodb compression: snappy
- mongodb cache size: 10 gigabyte
- sequential write performance: ~46 MB/s
- sequential read performance: ~90 MB/s
Write performance was tested by copying 124 files, each having a size of 9 gigabytes and different content. Compression factor was about factor three. Files were copied one by one => no parallel execution.
Read performance was tested by randomly picking 10 files out of the 124. Files were read one by one => no parallel execution.
# Simple illustration of the commands used (not the full script).
# Write
pv -pr /tmp/big_file${file_number} /mnt/gridfs_fuse/
# Read
pv -pr /mnt/gridfs_fuse${file_number} > /dev/null