使用s3fs 将AWS S3挂载到EC2当做本地目录使用
AWS供了S3存储服务,但是普通用户并不能直接使用此项服务,因为使用的话需要通过S3所提供的API修改程序才行对S3里的文件进行读写,有没有一个工具能够让用户不修改程序也可以使用S3服务呢,答案肯定是有的 ,一个叫 s3fs 的工具就能够帮助我们做这件事,通过 s3fs 可以把S3挂载到EC2本地,我们在正常使用是就跟使用本地磁盘的方式一样,非常方便。
需要注意的是不要用S3只适合存储一些静态文件等,不要用S3来直接存储数据库之类的数据文件,而且也会受到速度的影响,但可存储备份文件。
环境:RHEL6.5 x64
安装s3fs
s3fs github地址:https://github.com/s3fs-fuse/s3fs-fuse
1)安装依赖包
yum install automake gcc-c++ git libcurl-devel libxml2-devel make openssl-devel
2)安装fuse:
卸载老的fuse:
# rpm -qa|grep fuse
安装新的:
fuse已更名为libfuse
项目地址:https://github.com/libfuse/libfuse
# cd /data/software/ # wget https://github.com/libfuse/libfuse/releases/download/fuse_2_9_4/fuse-2.8.4.tar.gz # tar -zxvf fuse-2.8.4.tar.gz # cd fuse-2.8.4 # ./configure # make # make install # export PKG_CONFIG_PATH=/usr/lib/pkgconfig:/usr/lib64/pkgconfig/:/usr/local/lib/pkgconfig # modprobe fuse # echo "/usr/local/lib" >> /etc/ld.so.conf # ldconfig # pkg-config --modversion fuse 2.8.4 //看到版本表示安装成功
3)安装s3fs
github下载并编译安装:
# cd /data/software/ # git clone https://github.com/s3fs-fuse/s3fs-fuse.git # cd s3fs-fuse # ./autogen.sh # make # make install
4)配置s3fs:
新建一个文件去储存AWS秘钥,以允许s3fs去访问你的S3存储桶:
# vim /etc/passwd-s3fs
内容为AWS秘钥,请注意保管
秘钥的储存方式为 AWSACCESSKEYID:AWSSECRETACCESSKEY
# chmod 640 /etc/passwd-s3fs
挂载S3存储桶
新建一个文件夹来作为S3与本地交互的缓存
# mkdir ~/cache
挂载:
# s3fs -o use_cache=/root/cache/ bucket_name /mnt/
说明:bucket_name 为你在S3对应建立的bucket名字
查看是否挂载成功:
[root@sg ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/xvda1 20G 2.8G 16G 15% /
tmpfs 3.6G 0 3.6G 0% /dev/shm
s3fs 256T 0 256T 0% /mnt
已成功挂载到/mnt目录。
这样就可以按照平时操作文件一样操作S3存储桶了。
如果在 ./configure时如果得到错误信息,请删除老的fuse参照步骤安装新的fuse:
# ./configure checking for common_lib_checking... configure: error: Package requirements (fuse >= 2.8.4 libcurl >= 7.0 libxml-2.0 >= 2.6) were not met: Requested 'fuse >= 2.8.4' but version of fuse is 2.8.3 Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables common_lib_checking_CFLAGS and common_lib_checking_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.
哈哈
怎么在fstab中开机自动挂载s3
admin@哈哈
可以尝试将挂载命令添加到 /etc/rc.local 实现开机挂载。
匿名
博主,设置了缓存之后,缓存大小一直在增大
admin@匿名
如果S3文件很多的话,建议调用API来使用S3.
匿名
use_cache 这个参数有什么作用呢
admin@匿名
可以理解为这个cache是一个本地与s3的中转站,数据不是直接在本地和s3中读写,而是先在cache中将数据处理好再进行传输。