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 の親会社はオンラインで、2002 年に設立され、ヨーロッパに 3 つのデータセンター(パリ、アムステルダム、ワルシャワ)を持っています。Scaleway の特徴的なサービスは、リモートホストで Apple M1 チップの作成が直接可能で、1 時間あたり 0.11 ユーロです。Scaleway は、オブジェクトストレージサーバーが地下 25 メートルの防放射線避難所にあると主張しており、非常に安全だと感じました。したがって、今回は Scaleway を選びました!
Scaleway に登録するにはクレジットカードが必要で、ユーロでの支払いをサポートする必要があります。クレジットカードがない場合は、私の記事を参考にしてください:仮想カード および 実体カード。それでもない場合は、Oracle の無料 20G の S3 や AWS の無料 5G の S3 などを検討することもできます。
手順#
- Scaleway でバケットを作成します。
注意: バケット名を記録しておく必要があります。地域はパリを選択しないでください。可視性は「公開」を選択してください。
- Scaleway で API キーを作成します。
注意: API キーを作成する際には、所有者はIAM
、有効期限は「期限切れなし」、オブジェクトストレージに使用するかどうかは「はい」と選択します。キーが表示されるのは 1 回だけなので、必ずコピーして保存してください。
- 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 の 2 か所を自分のものに変更してください。
Bucket Endpoint では、バケットの地域を特定できます。アムステルダムは nl-ams
、ワルシャワは pl-waw
です。
次に、VPS がバケットをマウントしているかどうかを確認します。
df -h
ここでは 256T のスペースが表示されますが、喜びすぎないでください。利用できるのは 75G だけで、それを超えると月額料金が発生します(0.01 ユーロ / 1G / 月)。
- これでマウントが完了しました。ディスクの速度を試してみましょう!注意点として、dd テストを経て、マウントされたバケットはブロックサイズの違いにより明らかな速度制限があります。最低 13M/s、最高 39M/s です。ローカルデバイスのように読み書きすることはできず、ネットワーク速度と遅延に制限されます。
したがって、ウェブサイトのファイルをバケットに配置する場合、速度はやや遅くなります。例えば、アメリカの VPS とヨーロッパのオブジェクトストレージを使用する場合、半分以上の地球を移動する必要があります。バケットをバックアップディスクとして使用する場合は非常に便利です。定期的なバックアップも作成できますし、バケットと VPS は分離されているため、VPS が壊れても問題ありません。バケット内のファイルをリモートでダウンロードできます。これは今回のビデオのハイライトだと感じました。
- もし必要なら、起動時に自動的にマウントするように設定します。
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 オブジェクトストレージのバックエンドで確認およびダウンロードできます。
上級プレイ#
私が思いついたのは、ウェブサイトのファイルとデータベースの自動バックアップを実現することです。具体的な実装方法は次のとおりです。
- 以下のような 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
-
chmod u+x backup.sh
-
クロンジョブを追加します。
crontab -e
以下を追加します。
30 10 * * * /root/backup.sh
保存して、タスクを確認します。
crontab -l
問題がなければ、毎日 10 時 30 分にサーバーが自動的にウェブサイトのファイルとデータベースをバックアップし、バックアップファイルを /oss(つまり、マウントしたデータベース)に送信します。これで安全ですね。