Azure上にデプロイしたRed Hat Enterprise Linux(RHEL) VMで知っておくべき情報や覚えておくと便利な機能をこれまで紹介してきました。
- Azure Red Hat Enterprise Linux 仮想マシン導入ポイント~その1~ - JBS Tech Blog
- Azure Red Hat Enterprise Linux 仮想マシン導入ポイント~その2~ - JBS Tech Blog
本記事では、Azure RHEL VMでswapを構成するときの考え方や知っておくべきポイントを自身の経験をもとに説明します。
swapの概要と導入時のポイント
swapとは何か
swapとは、サーバーのメモリー補助機能です。サーバーのメモリーが不足した際、その時に使用していないデータを一時的にswapに退避させることで、メモリーの負荷を軽減することが可能です。
つまりswapを有効に使うことで、サーバーのメモリ不足によるエラーの回避が期待できます。
RHEL OSにおけるswap導入の考え方
swap導入時、RHEL OSの観点で考慮すべき事項を以下にまとめます。
swapの利用用途
swapはあくまでメモリーの補助機能であり、メモリー不足の根本対策ではない点に注意が必要です。
swapに頼りすぎるのは望ましくなく、もしメモリー不足が頻発する場合は、メモリーの増設を早急に検討する必要があります。
swapの作成方法
swapの作成方法には以下の2種類がありますが、長期的・安定的に利用したい場合は1.のswapボリュームを使用することをおすすめします。
- swapボリューム(swapパーティション) ←★おすすめ
- swapファイル
swapボリュームの場合、OS上にswap専用のボリュームを作成します。安定性とパフォーマンスに優れており、公式にも推奨されています。
一方swapファイルの場合、OS上にswap専用のファイルを作成します。拡張や縮小といったサイズ変更が容易かつ迅速に行うことが可能です。
swap領域のサイズ
swap領域のサイズは、Red Hat 公式ドキュメントの推奨値を参考に検討します。
以下は推奨値の抜粋です。たとえばサーバーのメモリー容量が4GBの場合、推奨されるswap領域のサイズは4GBです。
| サーバーのメモリ容量 | 推奨されるスワップ領域 |
|---|---|
| 2GB以下 | メモリ容量の2倍 |
| 2~8GB | メモリ容量と同じ |
| 8~64GB | 最低4GB |
| 64GB以上 | 最低4GB |
引用元:15.2. システムの推奨スワップ領域 | ストレージデバイスの管理 | Red Hat Enterprise Linux | 9 | Red Hat Documentation
Azure RHEL VMにおけるswap導入のポイント
swap導入時に、Azure上のRHEL VMの観点で考慮すべき事項を以下にまとめます。詳細は後述します。
- swapはAzure VMの一時ディスクに作成することが推奨される
- OSディスクやデータディスク上にswapを作成することは推奨されない
- 一時ディスク無しのVMではswapを作成せず、サーバーに適切なサイズのメモリを割り当てる
- Azure RHEL VMでswap領域を作成する際は、cloud-initを利用する。
swap作成に適したAzure VMサイズ
swapはAzure VMの一時ディスクに作成することがMicrosoft 公式ドキュメントで推奨されています。そのため、swapを作成する要件がある場合は、一時ディスク有りのAzure VMサイズを選択します。
たとえばDadsv7シリーズや、Eadsv7シリーズなどは、ローカルストレージとよばれる一時ディスクが存在します。
OSディスクやデータディスク上にswapを作成することも可能ですが、Microsoft 公式ドキュメントでは推奨されていません。
オペレーティング システムとアプリのパフォーマンスに影響する可能性がある OS ディスクまたはデータ ディスクに SWAP パーティションを作成することはお勧めしません。
SWAP ファイルやキャッシュ ファイルなど、削除できるデータにのみリソース ディスクを使用することをお勧めします。
引用元:Azure Linux VM の SWAP ファイルを作成する - Virtual Machines | Microsoft Learn
cloud-initの利用
cloud-initとはAzure VMの初期化処理を行う仕組みであり、再起動、停止(割り当て解除)、再デプロイ時等に実行されます。
Azure VMの一時ディスクは、再起動や停止等の操作のたびにアンマウントされ、一時ディスク上のデータは消滅します。そのため、cloud-initにより一時ディスクをswap領域としてマウントする操作を毎回実行する必要があります。
cloud-initを利用したswap作成手順
Microsoft Learnにcloud-init を使用したswap作成手順が案内されています。
Azure Linux VM の SWAP ファイルを作成する - Virtual Machines | Microsoft Learn
swap作成手順にはオプションが3つありますが、swap作成に関して特別な要件がない場合は、オプション2を選択することをおすすめします。
- オプション1:swap ファイルを作成
- オプション2:一時ディスクに swap パーティションを作成 ←★おすすめ
- オプション3:swap パーティションの作成領域をカスタマイズ
オプション1は、swapファイルを作成する手順です。またオプション3は、swap領域を作成する領域をカスタマイズする手順です。
オプション2によるswapファイル作成手順は、別の方が投稿しているブログがあるのでこちらも参考にしてください。
- AzureのLinux Virtual MachinesにおけるSwapの構成方法 - JBS Tech Blog
- Azure Linux VM に cloud-init を使用して SWAP ファイルを作成する際に失敗する問題と対処法 - JBS Tech Blog
参考URL
本記事の参考URLを以下にまとめます。
- Azure Linux VM の SWAP ファイルを作成する - Virtual Machines | Microsoft Learn
- Azure Disk Storage の概要 - Azure Virtual Machines | Microsoft Learn
- 15.2. システムの推奨スワップ領域 | ストレージデバイスの管理 | Red Hat Enterprise Linux | 9 | Red Hat Documentation
- 15.5. スワップファイルの作成 | Managing storage devices | Red Hat Enterprise Linux | 9 | Red Hat Documentation
まとめ
swapはサーバーの実際のメモリ容量が不足した際の補助機能であり、有効に使うことでサーバーのメモリ不足によるエラーの回避が期待できます。
たとえば、検証目的でAzure RHEL VMを利用する際、コスト削減のためにVMサイズを最小限のものを選択した結果、メモリ不足でアプリやサービスが動かないことがあります。そんな時、一時的にswap領域を利用することで、VM サイズを変更せずにメモリ不足の問題を回避することも可能です。
Azure RHEL VMをこれから利用する方にも、すでに利用を開始されている方にも、本記事が少しでもお役に立てれば幸いです。
山﨑 優美(日本ビジネスシステムズ株式会社)
ハイブリッドクラウド本部に所属。Windows Server・Linux、どちらのOSでもさわれるインフラエンジニアです。3児のママも兼務しています。
担当記事一覧