2019.09.27
GMOアプリクラウドのストレージをスケールアップする方法のご紹介
次世代システム研究室の Y.I. です。
GMOアプリクラウドのストレージ容量追加(スケールアップ)方法をご紹介します。
あるPJでストレージ(ブロックストレージ)を追加してサービスインしたところ、Disk枯渇の可能性が出てきたので容量を増やすことになりました。既存のデータは保持したまま、かつ同じデバイス同じマウント位置でDisk容量を増やそうとしたところ、少しハマった箇所がありましたのでブログに残しておきます。
補足
- ストレージの内容をコピーするためにアプリクラウドが提供するブロックストレージのイメージ作成機能を利用
- ブロックストレージのイメージとはイメージ作成時点の状態を複製できる状態にした雛形機能
- サービス中の複数台のAPサーバーのDiskをスケールアップ
- ロードバランス対象から何台か外してサービスを止めずに作業を実施
手順概要
ざっくりまとめると以下の作業内容となります。
- ロードバランス対象から外す
- ブロックストレージのイメージを作成してイメージから新しいディスクを作成
- ディスクサイズを再認識
- ロードバランス対象に戻す
手順詳細
ロードバランスから対象サーバーを外す
- アプリクラウドWebコンソールの「ネットワーク設定」メニューから該当のサーバーを外すことができます
- 詳細操作
- 「ネットワーク設定」 > 該当の「バランシング設定」ボタンをクリック
- 外したいサーバーのチェックボックスをONにして「次へ」ボタンをクリック
- 確認画面で「バランシング設定 ON->OFF」にチェックしたサーバーが表示されているか確認して「実行」ボタン
- 1~3分程度でアクセスがなくなります
サーバーシャットダウン
- アプリクラウドWebコンソールの「サーバー操作」メニューから該当のサーバーをシャットダウンすることができます
- もしくはサーバーにsshログインして shutdown コマンドを実行
- 詳細操作
- 「サーバー操作」 をクリック
- シャットダウンしたいサーバーのチェックボックスをONにして「シャットダウン」ボタンをクリック
ブロックストレージデタッチ
- アプリクラウドWebコンソールの「サーバー操作」メニューから該当のサーバーにマウントしているストレージをデタッチできます
- 詳細手順
- 「サーバー操作」 クリック
- 一覧画面にてシャットダウンした「サーバー名」リンクをクリック
- アタッチされているブロックストレージの「解除(デタッチ)」ボタンをクリック
- (スクリーンショットをとり忘れてしまいました)
ブロックストレージイメージ作成
- アプリクラウドWebコンソールの「ブロックストレージ」メニューからイメージを作成できます
- 詳細手順
- 「ブロックストレージ」メニューをクリック
- 一覧画面にて「ディスク名」リンクをクリック
- 「イメージ保存」ボタンをクリック
- 名称をわかりやすい名前にして「実行」ボタンをクリック
- (100GBのブロックストレージイメージ作成に1.5hくらいかかりました)
- (スクリーンショットをとり忘れてしまいました)
ブロックストレージ作成
- アプリクラウドWebコンソールの「ブロックストレージ」メニューから作成したイメージを使ってストレージを作成できます
- 詳細手順
- 「ブロックストレージ」メニューをクリック
- 「ストレージ追加」ボタンをクリック
- ストレージ名をわかりやすい名前へ変更、 iops/使用容量/イメージ利用欄に上記作成したイメージを選択して「実行」ボタンをクリック
- (100GBのブロックストレージイメージを元に200Gのブロックストレージをつくるのに0.75hくらいかかりました)
200Gのブロックストレージアタッチ
- アプリクラウドWebコンソールの「ブロックストレージ」メニューからサーバーにストレージを追加できます
- 詳細手順
- 「ブロックストレージ」メニューをクリック
- 該当ブロックストレージ「ディスク名」リンクをクリック
- 「アタッチサーバー」を選んで「追加(アタッチ)」ボタンをクリック
サーバー起動
- アプリクラウドWebコンソールの「サーバー」メニューからサーバーを起動できます
- 詳細手順
- 「サーバー操作」メニューをクリック
- 該当の「サーバー名」リンクをクリック
- 正しく200Gのブロックストレージがアタッチされていることを確認(サーバータグ名/接続ストレージ名/容量が意図した内容かチェック)
- 「起動」ボタンをクリック
以降サーバーへsshログインして作業します
サーバーへsshログイン
parted -l
- /dev/vdb 215GBになっていることを確認する
モデル: Virtio Block Device (virtblk) ディスク /dev/vdb: 215GB ・・・(省略)・・・
umount /mnt/data
- アンマウントします
lsof | grep mnt/data
- umountが失敗した場合にこのコマンドで掴んでいるプロセスを確認してdaemon stopやcurrent dir移動などを実施します
e2fsck -f /dev/vdb
- ファイルシステムをチェックします
resize2fs /dev/vdb
- ファイルシステムのサイズを変更します
- なぜか1度目のumountでは resizeできず mount/umountをもう一度実施したら回避できました
- ストレージスケールアップ前と同じサイズで表示されたため正しく切り替わっているのか心配になりアプリクラウドサポートへメールで問い合わせ
これが表示されたら失敗 [root@server ~]# resize2fs /dev/vdb resize2fs 1.42.9 (28-Dec-2013) Please run 'e2fsck -f /dev/vdb' first. 言われる通りに e2fsck -f /dev/vdb しても結果変わらず.
これが表示されたら成功 [root@server ~]# resize2fs /dev/vdb resize2fs 1.42.9 (28-Dec-2013) Resizing the filesystem on /dev/vdb to 52428800 (4k) blocks The filesystem on /dev/vdb is now 52428800 blocks long.
mount /dev/vdb /mnt/data
- ストレージをマウントします
df -Th
- size が 200Gになっているか確認
最後にアプリクラウドWebコンソールでロードバランスに復帰させます
対象サーバーをロードバランスへ復帰
- アプリクラウドWebコンソールの「ネットワーク設定」メニューから該当のサーバーを選んでロードバランス対象にすることができます
- 詳細操作
- 「ネットワーク設定」 > 該当の「バランシング設定」ボタンをクリック
- 対象にしたいサーバーのチェックボックスをONにして「次へ」ボタンをクリック
- 確認画面で「バランシング設定 OFF->ON」にチェックしたサーバーが表示されているか確認して「実行」ボタン
- 1~3分程度でアクセスがきます
以上でブロックストレージのスケールアップが完了します。
最後に
試したことがないと不安になるかと思いますが、ブロックストレージのイメージ保存を通して正しくデータがコピーされてブロックストレージをスケールアップできました。Diskのリサイズは必要でしたがフォーマットなど初期設定は不要です。バックアップとしても利用できますし、いつでもイメージを使ってクローンを作成することができますので、機会があればご利用ください。
また、何か困った事があれば、アプリクラウドサポートに質問できます。今回ストレージサイズの認識が変わらなくてストレージが切り替わっているかわからなかったのでサポートに問い合わせました。サポートにストレージが切り替わっていることの確認とストレーズサイズ認識変更方法を教えてもらい今回のストレージスケールアップが無事に完了しました。(その節はありがとうございました)
次世代システム研究室では、グループ全体のインテグレーションを支援してくれるアーキテクトを募集しています。アプリケーション開発の方、次世代システム研究室にご興味を持って頂ける方がいらっしゃいましたら、ぜひ 募集職種一覧 からご応募をお願いします。
皆さんのご応募をお待ちしています。
グループ研究開発本部の最新情報をTwitterで配信中です。ぜひフォローください。
Follow @GMO_RD