免費給 VPS 擴容 75G 數據盤#
寫在前面的話#
我不知道大家是否遇到過這樣的情況:購買 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;
Scaleway 的總公司是 online,2002 年初創,有歐洲 3 家數據中心(巴黎、阿姆斯特丹、華沙),它比較特色的服務是可以直接創建蘋果 M1 芯片的遠程主機 €0.11 / 小時;Scaleway 自稱對象存儲服務器位於地下 25 米的防輻射避難所中,那我就感覺:非常安全 —— 於是,本次我就選擇了 Scaleway!
Scaleway 的註冊需要信用卡,要支持歐元消費,沒有信用卡可以參考我的文章:虛擬卡 和 實體卡,再沒有你還可以考慮 Oracle 免費 20G 的 s3、AWS 免費 5G 的 S3 等等。
操作步驟#
1、在 Scaleway 創建存儲桶;
需要注意: 存儲桶名稱要記錄;地區不要選擇巴黎;可見性選擇:公開!
2、在 Scaleway 創建 APIkey;
需要注意: 創建 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要修改成你的!
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 也就是我們掛載的數據庫裡,這下安全了吧。