免费给VPS扩容75G数据盘

浏览:1302次阅读
没有评论

写在前面的话

我不知道大家是否遇到过这样的情况:购买 vps 时候因为预算问题购买的数据盘过小;或者是你需要在 vps 上添加一个更安全的存储空间用来备份文件;或者干脆你只是想按照我的视频玩玩对象存储,本篇内容就很适合你!

具体思路

实际上,我们很常见的是把 s3 存储桶挂载到本地,不过这次,我们使用工具 s3fs(https://github.com/s3fs-fuse/s3fs-fuse),它可以实现通过 FUSE 挂载 S3 存储桶到 Linux,macOS 等!

于是,我就想到找免费的 s3,然后挂载到我们的 vps 上,既可以当做 vps 扩容存储,也可以当成安全备份空间,一举两得。

理论上,所有 s3 协议的存储桶都可以使用这种方法挂载到 vps 或者本地!

工具和原材料

本次教程,我使用 Debian 10 系统的 vps,加上 Scaleway(https://console.scaleway.com/register)提供的免费对象存储 75G;
免费给VPS扩容75G数据盘插图

Scaleway 的总公司是 online,2002 年初创,有欧洲 3 家数据中心(巴黎、阿姆斯特丹、华沙),它比较特色的服务是可以直接创建苹果 M1 芯片的远程主机 €0.11/ 小时;Scaleway 自称对象存储服务器位于地下 25 米的防辐射避难所中,那我就感觉:非常安全——于是,本次我就选择了 Scaleway!

Scaleway 的注册需要信用卡,要支持欧元消费,没有信用卡可以参考我的文章:虚拟卡 实体卡,再没有你还可以考虑 Oracle 免费 20G 的 s3、AWS 免费 5G 的 S3 等等。

操作步骤

1、在 Scaleway 创建存储桶;
免费给VPS扩容75G数据盘插图1

需要注意: 存储桶名称要记录;地区不要选择巴黎;可见性选择:公开!

2、在 Scaleway 创建 APIkey;

免费给VPS扩容75G数据盘插图2
免费给VPS扩容75G数据盘插图3

需要注意: 创建 apikey 时候,持有者是 IAM,过期时间: 永不过期 ,是否用于对象存储:我们选择 点击生成密钥以后,Access Key Secret Key一定要复制保存好,这玩意儿只显示一次!

3、vps 内操作:

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

ACCESS_KEY:SECRET_KEY 要修改成你的!

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

BUCKET_ID 修改成存储桶名称,有两处 BUCKET_REGION 修改成你的!在

Bucket Endpoint 中我们可以定位到存储桶的区域,阿姆斯特丹是 nl-ams 华沙是 pl-waw

下面,检查 vps 是否已经挂载了存储桶;

df -h

这里会显示有 256T 空间,但是不要太高兴了,我们能用的只有 75G,超出按月收费呀,0.01 欧 /1G/ 月!

4、至此,我们完成挂载了,可以试试硬盘的速度了!需要说明的是经过 dd 测试,挂载的存储桶会因为块大小的不同有明显的速度瓶颈,最低 13M/s,最高 39M/s,没法像本地设备一样读写,也要被网速和延迟所限制。

所以,若你想把网站文件放在存储桶那么速度会稍稍有些慢,举例来说用美国的 vps 和欧洲的对象存储,要走小半个地球呢。如果你把存储桶作为备份盘,那非常可以。还能搞个定时备份,而且存储桶与 vps 是分离的,vps 损坏都没关系,我们可以远程下载你存储桶内的文件,这一点我感觉是本期视频的亮点。

5、我们还要设置开机启动,如果你需要的话!

apt install -y supervisor
systemctl enable supervisor
vi /etc/supervisor/conf.d/s3fs.conf

然后添加下面代码:

[program:s3fs]
command=/bin/bash -c "s3fs vps-mount-amsterdam /oss -o allow_other -o passwd_file=~/.passwd-s3fs -o use_path_request_style -o endpoint=Bnl-ams -o parallel_count=15 -o multipart_size=128 -o nocopyapi -o url=https://s3.nl-ams.scw.cloud"
directory=/ 
autorestart=true
stderr_logfile=/supervisor-err.log
stdout_logfile=/supervisor-out.log
user=root
stopsignal=INT

注意:双引号内部内容与手动挂载一致!!然后可以重启一下看看效果!

文件在哪?

上面我们把 s3 挂载到 vps 上,可以通过 ftp,sftp 上传和下载文件,考虑到对象存储的安全性,所以我们不得不牺牲了一些速度,不建议用这个方法直播,视频文档放在存储桶推流会出现卡顿。最后,我们备份的文件都可以在 Scaleway 对象存储后台看到并下载。

进阶玩法

我现在想到的就是实现自动备份网站的文件和数据库,具体实现的方法如下:

1、写 backup.sh 如下:

user= 数据库用户名
key= 数据库密码
dbname= 数据库名称
date=$(date +%Y%m%d);
bak=${dbname}_${date};
mysqldump -u$user --password="${key}" ${dbname} > /root/${bak}.sql
tar czvf /root/${bak}.zip /www/wwwroot/ 你的网站路径
mv *.sql *.zip /oss

2、chmod u+x backup.sh

3、添加定时任务:

crontab -e

添加:

30 10 * * * /root/backup.sh

保存,然后查看任务

crontab -l

没问题的话,每天 10:30 分,服务器将自动打包网站文件和数据库,然后把备份的文件发送到 /oss 也就是我们挂载的数据库里,这下安全了吧。

正文完
 0