Automatically mount bucket with s3fs on boot
I use an Amazon S3 bucket to deliver some of my server's content.
I was able to mount it successfully, and grant Apache rights over it, but can't get it mounted properly at reboot.
I updated my /etc/fstab
with this line, but nothing happens when I boot
s3fs#my-bucket-name /mnt/s3_bucket fuse allow_other,umask=227,uid=33,gid=33,use_cache=/root/cache 0 0
So, I tried another way, commented said line, and just put my command line in /etc/init.d/local
:
#!/usr/bin/env bash
s3fs -o allow_other,uid=33,gid=33,umask=227,use_cache=/root/cache my-bucket-name /mnt/s3_bucket
... didn't work either.
I ended up putting a cron
, and now, it works, but it feels terribly hacky to me, and I wonder why mounting it at start doesn't work.
//Crontab
*/10 * * * * ~/mountBucket.sh 1>/dev/null
//Mount script
#!/usr/bin/env bash
if [[ -d /mnt/s3_bucket/someBucketVirtualDirectoryName ]] ; then echo 'Bucket already mounted' ; else s3fs -o allow_other,uid=33,gid=33,umask=227,use_cache=/root/cache my-bucket-name /mnt/s3_bucket ; fi 1>/dev/null
Is there something I missed ?
I'm Using Ubuntu 14.04.4 LTS, with Fuse 2.9.2
EDIT : Here is another unrelated, yet important performance issue I had to figure out by myself:
If your system includes locate and/or mlocate (and Ubuntu 14.04 does), you may want to add an exception, so that it does NOT scan your bucket.
I had to modify both my /etc/updatedb.conf
and /etc/cron.daily/locate
, adding " /mnt/my-bucket-name"
to PRUNEPATHS
and " fuse.s3fs"
to PRUNEFS
I suppose adding fuse.s3fs should be enough
, but... no time to take risks right now :)
Solution 1:
You want to add _netdev to your fstab:
s3fs#my-bucket-name /mnt/s3_bucket fuse _netdev,allow_other,umask=227,uid=33,gid=33,use_cache=/root/cache 0 0