0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Reboot せずに Linode Block Storage のサイズを増やす

Posted at

はじめに

Linode (Akamai のクラウドコンピュートサービス)の仮想マシンはシンプルな構成と価格のパッケージで提供されており、選択したパッケージにはローカルディスクが含まれています。ローカルディスクは root 含む必要なファイルシステムが構成されています。固定のサイズのローカルストレージに対して、 ブロックストレージはサイズを決めて自由にインスタンスにアタッチし、追加のディレクトリとしてマウントできるストレージです。次のページも参照してください。

本記事はインスタンスをリブートすることなく、アタッチしたブロックストレージのサイズを増やす方法についての説明です。

ローカルディスクのサイズを変更するためには、インスタンスのパッケージ変更が伴います。つまり、CPU 数、メモリ数なども同時に変更することになります。一方、外付けとなるブロックストレージは、ストレージサイズの変更ができます。

ブロックストレージの変更は増加のみです。縮小はできません。

ブロックストレージはインスタンスの Backup 機能の対象ではありませんので、別途考慮が必要になります。

https://techdocs.akamai.com/cloud-computing/docs/backup-service

ブロックストレージを初期設定するフロー

ブロックストレージを利用可能にする初期設定は、一部省略していますが、大枠次のフローです。

詳細については、上記に紹介した記事を参照ください。

ブロックストレージをリサイズするフロー

利用中のブロックストレージのサイズ変更は、次のフローにになります。

OS 上の resize2fs を実行する前に、インスタンスからブロック・ストレージをデタッチしないとリブートが必須になります。もし リブートが許容されるなら、デタッチする必要はありません。

ブロック・ストレージをリサイズする

ここからリサイズの手順を解説していきますが、リサイズに関するドキュメントも見ながら作業してください。

このドキュメントにはリブートするフローが書かれていますが、本記事はデタッチすることでリブートを回避する方法を解説します。

必須ではないですが、筆者はクローンをして、不測の事態に備えました。2 TB (95% 利用)のクローン時間は 2 分弱でした。

初期状態 (OS)

ブロック・ストレージを OS 内でマウントした状態です。/dev/sdc として見えています。

> df
Filesystem      1K-blocks       Used Available Use% Mounted on
tmpfs               98044        964     97080   1% /run
/dev/sda         25202692    2707536  21194276  12% /
tmpfs              490208          0    490208   0% /dev/shm
tmpfs                5120          0      5120   0% /run/lock
tmpfs               98040          4     98036   1% /run/user/0
/dev/sdc       2112657248 1903482696 101783988  95% /mnt/bs
# df -h
Filesystem      Size  Used Avail Use% Mounted on
tmpfs            96M  992K   95M   2% /run
/dev/sda         25G  3.7G   20G  16% /
tmpfs           479M     0  479M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs            96M  4.0K   96M   1% /run/user/0
/dev/sdc        2.0T  1.8T   98G  95% /mnt/bs

初期状態 (UI)

Cloud Manager の画面です。ブロック・ストレージは Volumes のメニューとなっています。bs とラベル化されたストレージをこれからリサイズしていきます。
volumes-bs.jpg

OS 上でアンマウントする

最初に OS 上でアンマウントして、ディスクを切り離します。/mnt/bs は 1.8 TB ほど利用されていたのですが、マウントポイントが外れたあとは、空となっています。

> umount /mnt/bs

> df /mnt/bs -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda         25G  3.7G   20G  16% /

> ls -l /mnt/bs
total 0

プロセスが対象ディレクトリ上のファイルを使用していた場合はロックされアンマウントできないため、確認の上該当プロセスを終了してください。

インスタンスからデタッチする

ブロックストレージをインスタンスからデタッチする作業は、API, CLI からもできますが、ここでは Cloud Manager の UI を使って説明します。
Volumes から bs ラベルをデタッチします(割当済みのインスタンスからを切り離します)。
bs-edit-detach.jpg
確認メッセージを注意深く読んで実行します。
confirm-detach-bs.jpg

status-unattached.jpg
デタッチが終了すると、ストレージがどのインスタンスにも紐づけされていない状態となります (Unattached)。

ブロック・ストレージをリサイズする

Resize を選びます。
bs-edit-resize.jpg

今は 2048 GB (2 TB) となっています。
size-2048.jpg

数字を 2560 に変更します。2.5 TB になります。
size-2560.jpg

変更はすぐに完了します。数秒です。UI では Status が Resizing にしばらくなりますが、画面をリロードすると Active になります。Active になっていれば、通知が届きます。

show-resizing.jpg

通知イベントの例です。

notification1.jpg

インスタンスに再アタッチする

ハードウェアを仮想マシンから切り離し、ストレージサイズの変更したあと、再度仮想マシンに接続するようなイメージです。
reattach-instance.jpg

reattach-instance2.jpg

ブロックストレージは一つのインスタンスにのみアタッチできます。

OS 上で e2fsck の実行

ファイルシステムのチェックを行います。デバイス名はマウントされていた場所となります。分からなければ、Show config のリンクから確認してください。

> e2fsck -f /dev/disk/by-id/scsi-0Linode_Volume_bs
e2fsck 1.46.5 (30-Dec-2021)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/disk/by-id/scsi-0Linode_Volume_bs: 1855822/134217728 files (0.0% non-contiguous), 484577274/536870912 blocks

Show config で 開くVolume Configration にはデバイス名が表示されますが、最初にある mkfs.ext4 は絶対に実行しないでください。これは初回にディスクを初期化するコマンドであり、リサイズする目的では利用しません。
Screenshot 2024-08-16 at 4.05.52 PM.jpg

no-mkfs.jpg

OS 上で resize2fs の実行

> resize2fs /dev/disk/by-id/scsi-0Linode_Volume_bs
resize2fs 1.46.5 (30-Dec-2021)
Resizing the filesystem on /dev/disk/by-id/scsi-0Linode_Volume_bs to 671088640 (4k) blocks.
The filesystem on /dev/disk/by-id/scsi-0Linode_Volume_bs is now 671088640 (4k) blocks long.

OS 上で mount の実行

> mount "/dev/disk/by-id/scsi-0Linode_Volume_bs" "/mnt/bs"
> df /mnt/bs
Filesystem      1K-blocks       Used Available Use% Mounted on
/dev/sdc       2641097552 1903482696 603380748  76% /mnt/bs

> df -h /mnt/bs
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdc        2.5T  1.8T  576G  76% /mnt/bs

ディスク容量が増え、使用量が95% から76% になっています。Used のサイズは変わっていません。

これらの作業をしたときに記録された dmesg のメッセージです。

[ 4689.689164] scsi 6:0:0:0: Direct-Access     Linode   Volume           2.5+ PQ: 0 ANSI: 5
[ 4689.691544] sd 6:0:0:0: Power-on or device reset occurred
[ 4689.691590] sd 6:0:0:0: Warning! Received an indication that the LUN assignments on this target have changed. The Linux SCSI layer does not automatical
[ 4689.691950] sd 6:0:0:0: [sdc] 5368709120 512-byte logical blocks: (2.75 TB/2.50 TiB)
[ 4689.691988] sd 6:0:0:0: [sdc] Write Protect is off
[ 4689.691992] sd 6:0:0:0: [sdc] Mode Sense: 63 00 00 08
[ 4689.692060] sd 6:0:0:0: [sdc] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[ 4689.694148] sd 6:0:0:0: Attached scsi generic sg2 type 0
[ 4689.770195] sd 6:0:0:0: [sdc] Attached SCSI disk
[ 5341.532369] EXT4-fs (sdc): mounted filesystem with ordered data mode. Opts: (null). Quota mode: none.

作業時間

2.5 TB から 3 TB にしたときの e2fsck, resize2fs の実行時間です。9.7 秒、 13.6 秒費やしています。

# time e2fsck -f /dev/disk/by-id/scsi-0Linode_Volume_bs
e2fsck 1.46.5 (30-Dec-2021)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/disk/by-id/scsi-0Linode_Volume_bs: 1855822/167772160 files (0.0% non-contiguous), 486684926/671088640 blocks

real	0m9.774s
user	0m6.083s
sys	    0m0.483s
# time resize2fs /dev/disk/by-id/scsi-0Linode_Volume_bs
resize2fs 1.46.5 (30-Dec-2021)
Resizing the filesystem on /dev/disk/by-id/scsi-0Linode_Volume_bs to 805306368 (4k) blocks.
The filesystem on /dev/disk/by-id/scsi-0Linode_Volume_bs is now 805306368 (4k) blocks long.


real	0m13.628s
user	0m8.248s
sys	    0m0.288s

UI からディスクのリサイズは数秒で終わるので、ボリュームを外してリサイズして再アタッチするまでの作業は数分で終了すると思います。

まとめ

ブロックストレージはローカルストレージよりは遅いですが、他の大手クラウドサービスと比較すると高速です。ローカルストレージが速すぎるとも言えます。今後必要なストレージサイズが増加する可能性があるなら、リサイズが容易なブロック・ストレージの利用がおすすめです。

本記事執筆中に Linode の Doc が Akamai TechDoc に統合されました。TechDoc は Google Translate と統合されていますので、日本語でもドキュメントが読むことできます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?