首页 » 云计算 » AWS » 正文

使用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.




1460303116920628.png







本文共 2 个回复

  • 匿名 2019/05/31 14:15

    use_cache 这个参数有什么作用呢

    • admin 博主 2019/05/31 17:46

      @ 可以理解为这个cache是一个本地与s3的中转站,数据不是直接在本地和s3中读写,而是先在cache中将数据处理好再进行传输。

发表评论

2 + 7 =