VPS的硬盘空间向来“精贵”,对于硬盘空间较小的VPS,挂载外部存储是一个很好的选择。这样不但可以腾出更多的本地空间供虚拟内存等使用,而且也方便了数据的备份和迁移。
与通过专用用户界面上传下载的各大网盘平台不同,对象存储提供相对统一的CLI接口及程序化命令,其价格普遍昂贵。目前市面上的云平台中,对象存储的免费层往往只有10~20GB左右,并且大多还会另计请求费。而本文中选择的是Scaleway Cloud, 提供了75GB的免费存储空间及月流量且不计请求费,真的非常大方。
(注:Scaleway还提供75GB的归档存储,但无法直接存取,不过正好可以用于历史版本备份。)
零、文章结构
- 注册账号和创建存储桶
- 配置挂载的VPS
- 确保重启后优先挂载目录(重要)
一、注册账号和创建存储桶
Scaleway账号的注册相对较严格,注册账号时需要验证卡,并且还会将验证码随扣账单发送,如果注册账号10天内不完成验证就会暂停账号,因此市面上一般出售的虚拟卡号不支持查帐单的话基本上过不了,建议使用正规的实体卡。
注册完成后,直接访问下面的链接创建一个存储桶:
https://console.scaleway.com/object-storage/buckets/create
需要注意的是,目前PARIS区域由于支持多区域,所以上传的文件默认是使用的Multi-AZ收费层级,如果是Web/CLI上传的话可以指定Onezone_IA免费层级,但是经询问客服确认,使用s3fs挂载不能指定。所以这里建议选择AMSTERDAM或者WARSAW区域,这两个区域上传就是默认Onezone_IA免费层级。
二、配置挂载的VPS
下面将存储桶挂载到VPS上。首先访问下面的链接,创建一个密钥。
https://console.scaleway.com/project/credentials
创建完会显示ACCESS_KEY和SECRET_KEY,只会显示一次,需要记下来。
然后开始为VPS配置挂载所需的环境。执行下面的命令安装软件和保存密钥,注意将ACCESS_KEY和SECRET_KEY换成上面记下的。
apt update && apt install -y s3fs
echo "user_allow_other" >>/etc/fuse.conf
mkdir -p /oss
echo ACCESS_KEY:SECRET_KEY > ~/.passwd-s3fs
chmod 600 ~/.passwd-s3fs
下面是挂载命令。这里先运行测试一下,测试成功后记得执行"umount /oss"取消挂载或reboot系统,以便配置下一步的开机自启动。
其中BUCKET_ID是第一步在创建存储桶时所取的名称;BUCKET_REGION荷兰区为nl-ams,波兰区为pl-waw。
s3fs BUCKET_ID /oss -o allow_other -o passwd_file=~/.passwd-s3fs -o use_path_request_style -o endpoint=BUCKET_REGION -o parallel_count=15 -o multipart_size=128 -o nocopyapi -o url=https://s3.BUCKET_REGION.scw.cloud
三、确保重启后优先挂载目录(重要)
挂载的外部存储在重启时可能会遇到一个问题,就是如果使用该存储目录的软件和s3fs都启用了开机自启动,而s3fs完成挂载的时间相对更晚的话,那么该软件可能会误读取本机存储而不是挂载的存储,返回空目录。经过试验,使用下面的方法成功解决这个问题。
下面以nginx为例,其余程序类似。如果第二步运行的程序需要指定运行目录的话(如php -S),修改/oss/nginxsite即可。(注意不是修改directory,因为这里使用了/bin/bash以便依次运行多个命令)
首先关掉nginx原来的自启动,如果你配置了s3fs的自启动当然也需关掉:
systemctl disable nginx
我比较习惯supervisor,那么这里就用supervisor完成自启动工作:
apt install -y supervisor
systemctl enable supervisor
vi /etc/supervisor/conf.d/s3fs.conf
s3fs.conf文件内容如下:
[program:s3fs]
command=/bin/bash -c "刚才的挂载命令 && cd /oss/nginxsite && systemctl start nginx"
directory=/ # 注意运行目录不是修改这里
autorestart=true
stderr_logfile=/supervisor-err.log
stdout_logfile=/supervisor-out.log
user=root
stopsignal=INT
然后重新加载supervisor的配置:
supervisord -c /etc/supervisor/supervisord.conf
重启一下系统,执行"df -h"命令可以看到VPS多了一块大“硬盘”。
- 【原创】转载请注明出处
文章评论
你好,我在别的地方看到说必须在同一个区域的实例和对象存储之间的流量才不收费,也就是说我的法国实例和荷兰的对象存储之间的流量是计费的吗?我看官方说区域间和外部传输也有免费的75G?
@2333 不同区域间是75G流量免费,同一区域间目前是不限流量的。虽然75G流量也够用了,但是毕竟不限量放心一点
博主,请问如何取消法国区的储存呢?不打算用这个,只用VPS对我而言就够了
@weeper 删掉存储桶就可以