PR
スポンサーリンク

[Nutanix]Linuxのベストプラクティスを整理~その2

スポンサーリンク
Linux
Nutanix logo
記事内に広告が含まれています。
スポンサーリンク
スポンサーリンク

はじめに

参考に掲載させていただいているドキュメントで、主にAHVでLinux OSを利用したVMを使用する場合のベストプラクティスが載っています。今回は、管理人の勉強を兼ねて整理したものを紹介します。

ボリュームの関係で2つの記事に分けております。

“This best practice guide provides the recommended settings for Nutanix AHV clusters and Linux operating systems, including Oracle Linux and Red Hat Enterprise Linux. It covers vDisk (LUN) configuration and settings, Logical Volume Manager (LVM) configuration, file system settings for ext4 and XFS, and kernel parameters. Most of the recommendations in this guide also apply to other hypervisor environments on Nutanix”

概要

主にストレージに関する設定について述べられています。

  • ストレージコンテナの設定
  • カーネルパラメータの設定
  • Native vDiskもしくはVolume Groupの利用判断基準
  • Volume Groupを利用する場合のiSCSIパラメータ設定
  • LVMの作成方法(ストライピングを含む)
  • 主要なファイルシステムのマウントオプション
  • デバイスの最適化設定

※青字がこの記事の対象。

お断り

本記事の説明には、Microsoft Copilotを使用しております。

LVMの作成と設定

アプリケーションやデータベース用にファイルシステムを作成する場合、特定のマウントポイントに対して全てのvDiskでLVMストライピングを使用します。

  • 物理ボリュームを作成
pvcreate /dev/sdc /dev/sdd
  • VGを作成
vgcreate vgdata /dev/sdc /dev/sdd
  • 論理ボリュームを作成
lvcreate -l 100%FREE -i 8 -I 1024 -n vol1 vgdata

※-l:ボリュームグループ内の空き領域をすべて使用して論理ボリュームを作成します。
   -l は「論理エクステント数」を指定するオプションで、100%FREE は空き領域全体を意味します。
※i:ストライプ数を指定します。ここでは 8 本のストライプを使用することを意味します。
※I(大文字のi):ストライプサイズ(データを分割して書き込む単位)を指定します。ここでは 1024 KB (1 MB) のストライプサイズを使用します。
※-n:作成する論理ボリュームの名前を指定。
  • ファイルシステムを作成。例ではext4ファイルシステム。
mkfs.ext4 /dev/vgdata/vol1
  • ext4ファイルシステムをマウント
mount /dev/vgdata/vol1 /u01/oradata -o

ファイルシステムのマウントオプション

一時的に反映させる場合は、mount -o <オプション>を使用。

恒久的に反映させる場合は、/etc/fstabを修正。

ext4
noatime
noatime は、ファイルやディレクトリにアクセスした際に、アクセス時刻(atime)を更新しないようにするマウントオプションです。
これにより、ディスクI/Oが減少し、システムのパフォーマンスが向上します。
nodiratime
nodiratime は、ディレクトリに対してアクセス時刻(atime)を更新しないようにするマウントオプションです。
noatime に似ていますが、ファイルではなくディレクトリに限定されます。
これもディスクI/Oを減少させ、パフォーマンスを向上させます。
discard
discard は、SSDなどのフラッシュメモリデバイスで使用されるTRIM操作を有効にするマウントオプションです。
TRIMは、不要になったデータブロックをSSDに通知し、そのブロックを再利用できるようにすることで、SSDの寿命を延ばし、パフォーマンスを向上させます。
barrier=0
barrier=0 は、ジャーナリングファイルシステムにおいて、ディスクの書き込みバリアを無効にするマウントオプションです。
これにより、データの一貫性を確保するための書き込みオペレーションが省略され、ディスクI/Oのパフォーマンスが向上しますが、突然の電源断やシステム障害時にデータが破損するリスクが高まります。
Just a moment...
General overview of the Linux file system
XFS
inode64
inode64 は、XFSファイルシステムのマウントオプションの一つです。
このオプションを指定すると、XFSはファイルシステム内の任意の場所にinodeを作成することができます。
これにより、inode番号が32ビットを超えることが可能になります。
The SGI XFS Filesystem — The Linux Kernel documentation
largeio
largeio は、XFSファイルシステムのマウントオプションで、大きなI/O操作を最適化するために使用されます。
このオプションを指定すると、ファイルシステムは大きなI/O操作を効率的に処理するように調整されます。
The SGI XFS Filesystem — The Linux Kernel documentation
swalloc
swalloc は、XFSファイルシステムのマウントオプションの一つで、スワップ領域の割り当てを最適化するために使用されます。
このオプションを指定すると、スワップ領域の割り当てが効率的に行われ、システムのパフォーマンスが向上します。
Should I use XFS on Linux? - Darwin's Data
XFS is a high-performance 64-bit journaling file system created by Silicon Graphics, Inc (SGI) in 1993 . It was designed...

ディスクデバイスの最適化

max_sectors_kbを1024に変更
【説明】
max_sectors_kb は、Linuxカーネルのブロックデバイスサブシステムに関連する設定パラメータで、単一のI/O操作で処理できる最大セクタサイズを指定します。
このパラメータは、ディスクI/O操作の効率性とパフォーマンスに直接影響を与えます。
具体的な意味
• 値が大きい: 1回のI/O操作でより多くのデータを処理することができ、ディスクの読み取り/書き込みパフォーマンスが向上する可能性があります。ただし、システムメモリの負荷が増加する場合があります。
• 値が小さい: 1回のI/O操作で処理されるデータ量が減り、I/O操作の頻度が増加します。これにより、ディスクI/Oのオーバーヘッドが増加し、パフォーマンスが低下する可能性がありますが、システムメモリの負荷が軽減されます。

設定の例
以下のコマンドを使用して、ディスクデバイス sda に対する max_sectors_kb の値を設定することができます:
bash
echo 512 | sudo tee /sys/block/sda/queue/max_sectors_kb
※一時的に反映させる場合
この例では、1回のI/O操作で最大512キロバイトのデータを処理するように設定されています。

注意点
このパラメータを調整する際は、システムの特性や使用状況に応じて最適な値を見つけるためにテストが必要です。特に、ディスクI/Oパフォーマンスの向上を目指す場合や、メモリ負荷を調整したい場合に有効です。
ディスクのタイムアウトを60に変更
【説明】
Linuxシステムにおける SCSI デバイスのタイムアウト値を設定するためのファイルです。
この値は、デバイスが応答しない場合に、システムがどれだけの時間待機するかを秒単位で指定します。

このタイムアウト値は、デバイスが応答しない場合にエラー処理を開始するまでの待機時間を決定します。
例えば、ストレージデバイスが応答しない場合、システムはこのタイムアウト値を超えると、コマンドの再試行やデバイスのリセットなどのエラーハンドリングを実行します。
ディスクのio_schedulerをnoopに変更
【説明】
io_scheduler は、LinuxカーネルのI/Oサブシステムにおいて、ディスクI/O(入力/出力)操作のスケジューリングを制御するコンポーネントです。
I/Oスケジューラは、ディスクへの読み書き要求を効率的に処理し、ディスクアクセスのパフォーマンスを最適化するためのアルゴリズムを提供します。

以下に、一般的なI/Oスケジューラの種類とそれぞれの特性を示します:
1. CFQ (Completely Fair Queuing)
 • 特性: すべてのプロセスに対して公平なディスクアクセスを提供します。各プロセスに専用のI/Oキューを割り当て、キューごとに一定の時間スライスを与えます。
 • 適用: 一般的なデスクトップやサーバーシステムに適しています。
2. Deadline
 • 特性: 各I/O要求に期限を設定し、期限を超えないように処理することを重視します。読み取り要求を優先し、書き込み要求を期限内に処理します。
 • 適用: リアルタイムアプリケーションやタイミングが重要なシステムに適しています。
3. NOOP (No Operation)
 • 特性: 最もシンプルなI/Oスケジューラで、I/O要求をそのままFIFO(先入れ先出し)で処理します。SSDのようなランダムアクセスが速いデバイスに適しています。
 • 適用: SSDやUSBメモリなど、シークタイムがほとんど問題とならないストレージデバイスに適しています。
4. BFQ (Budget Fair Queuing)
 • 特性: バジェットに基づいた公平なディスクアクセスを提供し、I/O操作のスループットとレイテンシのバランスを取ります。各プロセスに対してI/Oバジェットを割り当て、そのバジェットに基づいてディスクアクセスを制御します。
 • 適用: 高スループットが必要なデスクトップやサーバーに適しています。
I/Oスケジューラは、システムの用途やストレージデバイスの特性に応じて選択することが重要です。システムのパフォーマンスを最適化するために、最適なI/Oスケジューラを選定することが求められます。

永続的に設定を反映する場合は次のフローが必要です。

  • 新しいudevルールの作成
sudo vi /etc/udev/rules.d/99-recommend-nutanix.rules
  • 以下を記述
ACTION=="add", SUBSYSTEMS=="scsi", ATTRS{vendor}=="NUTANIX ", ATTRS{model}=="VDISK", RUN+="/bin/sh -c 'echo 1024 >/sys$DEVPATH/queue/max_sectors_kb'"
ACTION=="add", SUBSYSTEMS=="scsi", ATTRS{vendor}=="NUTANIX ", ATTRS{model}=="VDISK", RUN+="/bin/sh -c 'echo 60 >/sys$DEVPATH/device/timeout'"
ACTION=="add", SUBSYSTEMS=="scsi", ATTRS{vendor}=="NUTANIX ", ATTRS{model}=="VDISK", RUN+="/bin/sh -c 'echo noop >/sys$DEVPATH/queue/scheduler'"
※デバイス名は変更してください
  • 設定を再読み込みして保存
sudo udevadm control --reload-rules
sudo udevadm trigger
  • 設定の保存
cat /sys/block/sda/queue/max_sectors_kb
cat /sys/block/sda/device/timeout
cat /sys/block/sda/queue/scheduler

続き

[Nutanix]Linuxのベストプラクティスを整理~その1
はじめに参考に掲載させていただいているドキュメントで、主にAHVでLinux OSを利用したVMを使用する場合のベストプラクティスが載っています。今回は、管理人の勉強を兼ねて整理したものを紹介します。ボリュームの関係で2つの記事に分けており...

参考

Nutanix Support & Insights

コメント

タイトルとURLをコピーしました