ディスク設定の最適化

SSDディスクおよび回転式ディスクの最適な設定を構成します。

ほとんどのLinuxディストリビューションにおいて、デフォルトのディスク構成は適切ではありません。ソリッド・ステート・ドライブ(SSD)または回転式ディスクの設定を最適化するには、以下の手順を実行します。

注: SSDディスクまたは回転式ディスクの最適化設定を実行します。いずれかのストレージ・タイプで両方の手順は実行しないでください。

SSDの最適化

SSDの最適な設定を確認するには、以下の手順を実行します。

  1. SysFS回転フラグがfalse(ゼロ)に設定されていることを確認します。

    この設定によって、オペレーティング・システムによるあらゆる検知がオーバーライドされてドライブがSSDと見なされます。

  2. SSDストレージから作成されたすべてのブロック・デバイス(mdarraysなど)に、同じ回転フラグ設定を適用します。
  3. lsblkを実行してデバイスを決定します。
    lsblk
    NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
    vda    253:0    0  32G  0 disk
    |
    |-sda1 253:1    0   8M  0 part
    |-sda2 253:2    0  32G  0 part /

    この例では、現在のデバイスはsda1sda2です。

  4. リストされているデバイスごとに、IOスケジューラーをdeadlinenoopのいずれかに設定します。
    例を次に示します。
    echo deadline > /sys/block/device_name/queue/scheduler

    ここで、device_nameは、設定を適用するデバイスの名前です。

    • deadlineスケジューラーはIOレイテンシーを最小化する要求を最適化します。確信が得られない場合はdeadlineスケジューラーを使用します。
      echo deadline > /sys/block/device_name/queue/scheduler
    • 対象となるブロック・デバイスがIOの最適化を実行する高度なIOコントローラーよりも下位のSSDアレイである場合は、noopスケジューラーが適しています。
      echo noop > /sys/block/device_name/queue/scheduler
  5. nr_requests値を設定して、キューに入れることが可能な読み取り要求と書き込み要求の最大数を示します。
    マシン・サイズ
    大型マシン
    echo 128 sys/block/device_name/queue/nr_requests
    小型マシン
    echo 32 sys/block/device_name/queue/nr_requests
  6. ブロック・デバイスのreadahead値を8KBに設定します。

    この設定によって余分なバイトを読み込まないようにオペレーティング・システムに通知が行われ、IO時間が増加して、ユーザーが要求しなかったバイトによってキャッシュが汚染される可能性があります。

    注: SSDのRAIDの推奨readahead設定は、RAIDインストールで使用されていないSSDの設定と同じです。
    1. 編集するために/etc/rc.localを開きます。
    2. 以下の行を追加して起動時のreadaheadを設定します。
      touch /var/lock/subsys/local
      echo 0 > /sys/class/block/sda/queue/rotational
      echo 8 > /sys/class/block/sda/queue/read_ahead_kb
    3. /etc/rc.localを保存して閉じます。

回転式ディスクの最適化

  1. 先読み値が65536に設定されていないことを確認します。
    sudo blockdev --report /dev/spinning_disk
  2. readaheadを128に設定します。これは推奨値です。
    sudo blockdev --setra 128 /dev/spinning_disk