「ソリッドステートドライブ/NVMe」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(→‎Discard: 他の表記に合わせ、継続的なTRIMを定期的なTRIMへ変更しました。)
(空白)
23行目: 23行目:
 
=== Discard ===
 
=== Discard ===
   
{{note|SSD では定期的なTRIMの適用を選択できる(推奨しません)のに反して、'''NVMe デバイスでは discard は実行するべきではありません'''。}}
+
{{note|SSD では定期的な TRIM の適用を選択できる (推奨しません) のに反して、'''NVMe デバイスでは discard は実行するべきではありません'''。}}
   
 
[[ext4]] や [[LVM]] を使用する普通のセットアップではデフォルトで Discard は無効になりますが、ファイルシステムによっては明示的に無効化する必要があります。
 
[[ext4]] や [[LVM]] を使用する普通のセットアップではデフォルトで Discard は無効になりますが、ファイルシステムによっては明示的に無効化する必要があります。
43行目: 43行目:
 
=== NVME 省電力パッチ ===
 
=== NVME 省電力パッチ ===
   
Andy Lutomirski は Linux における NVMe デバイスの省電力機能を修正するパッチセットをリリースしています。メインラインカーネル v4.11 でパッチはマージされました。古いカーネルを使用している場合、以下のパッケージでパッチを利用できます:
+
Andy Lutomirski は Linux における NVMe デバイスの省電力機能を修正するパッチセットをリリースしています。メインラインカーネル v4.11 でパッチはマージされました。
   
  +
NVME の電源管理が動作しているかテストするには、{{AUR|nvme-cli}} をインストールして {{ic|# nvme get-feature -f 0x0c -H /dev/nvme[0-9]}} を実行してみてください:
{{App|Linux-nvme|Andy の NVME 省電力 APST パッチが含まれたメインラインの Linux カーネル。|https://github.com/damige/linux-nvme|{{AUR|linux-nvme}}{{Broken package link|パッケージが存在しません}}}}
 
 
NVME の電源管理が動作しているかテストするには、{{AUR|nvme-cli}} をインストールして {{ic|# nvme get-feature -f 0x0c -H /dev/nvme[0-9]}} を実行してみてください。
 
   
 
{{hc|# nvme get-feature -f 0x0c -H /dev/nvme0|2=
 
{{hc|# nvme get-feature -f 0x0c -H /dev/nvme0|2=
63行目: 61行目:
 
==== Linux 4.10 における Samsung ドライブのエラー ====
 
==== Linux 4.10 における Samsung ドライブのエラー ====
   
Linux 4.10 では、ドライブのエラーが発生してシステムが不安定になることがあります。
+
Linux 4.10 では、ドライブのエラーが発生してシステムが不安定になることがあります。省電力状態となったときにドライブが使えなくなるようです。[[カーネルパラメータ]] {{ic|1=nvme_core.default_ps_max_latency_us=5500}} は一番低い省電力ステートを無効にし、書き込みエラーを防止します [https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1678184][https://askubuntu.com/questions/905710/ext4-fs-error-after-ubuntu-17-04-upgrade/906105#906105]
省電力状態となった結果ドライブが使えなくるようです。
 
[[カーネルパラメータ]] {{ic|1=nvme_core.default_ps_max_latency_us=5500}}
 
[https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1678184][https://askubuntu.com/questions/905710/ext4-fs-error-after-ubuntu-17-04-upgrade/906105#906105] は一番低い省電力ステートを無効にし、書き込みエラーを防止します。
 
   
 
== 参照 ==
 
== 参照 ==

2018年8月19日 (日) 22:11時点における版

関連記事

NVM Express (NVMe) は PCI Express バスから SSD に接続するための規格です。論理デバイスインターフェイスとして NVM Express は新規に設計されています。PCI Express SSD の低遅延と並行性を活かすために、最新の CPU やプラットフォーム、アプリケーションの並列性を複製するように開発されました。

インストール

Linux の NVMe ドライバーはカーネルバージョン 3.3 から含まれています。NVMe デバイスは /dev/nvme* 下に認識されます。

NVMe のユーザースペースツールは nvme-cliAUR または nvme-cli-gitAUR に含まれています。

サポートされているファイルシステム、パフォーマンスの最適化・ディスクの読み書きの最小化などはソリッドステートドライブを見てください。

パフォーマンス

セクタサイズ

Advanced Format#HDD が 4k セクタを使用しているかどうか判断する方法を見てください。

Discard

ノート: SSD では定期的な TRIM の適用を選択できる (推奨しません) のに反して、NVMe デバイスでは discard は実行するべきではありません

ext4LVM を使用する普通のセットアップではデフォルトで Discard は無効になりますが、ファイルシステムによっては明示的に無効化する必要があります。

SSD メーカーの Intel はファイルシステムレベルで discard を有効にすることを非推奨としており、代わりに fstrim で定期的に TRIM を適用する方法を提案しています [1]

エアフロー

NVMe SSD は負担時に高熱になることが知られており、特定の閾値に達すると性能が制限されます [2]

テスト

デバイスの性能テストは hdparm で実行できます:

# hdparm -Tt --direct /dev/nvme0n1

省電力 APST

NVME 省電力パッチ

Andy Lutomirski は Linux における NVMe デバイスの省電力機能を修正するパッチセットをリリースしています。メインラインカーネル v4.11 でパッチはマージされました。

NVME の電源管理が動作しているかテストするには、nvme-cliAUR をインストールして # nvme get-feature -f 0x0c -H /dev/nvme[0-9] を実行してみてください:

# nvme get-feature -f 0x0c -H /dev/nvme0
get-feature:0xc (Autonomous Power State Transition), Current value:0x000001
        Autonomous Power State Transition Enable (APSTE): Enabled
        Auto PST Entries        .................

...

ASPT が有効になっている場合 Autonomous Power State Transition Enable (APSTE): Enabled と出力されます。表のエントリは各ステートに移行するときの待機時間を示しています。

ASPT が有効になっているのにステートが表に表示されない場合、高遅延のせいでデフォルトで有効になっていない可能性があります。# nvme id-ctrl /dev/nvme[0-9] を使うことで NVME コントローラの未使用のステートを確認できます。ステートの遅延の合計 (enlat + xlat) が 25000 (25ms) よりも大きい場合、有効にするにはブートパラメータを使って nvme_core カーネルモジュールdefault_ps_max_latency_us オプションで最低でもこれよりも高い値を渡す必要があります。ASPT が有効になり # nvme get-feature の表にエントリが表示されるようになります。

Linux 4.10 における Samsung ドライブのエラー

Linux 4.10 では、ドライブのエラーが発生してシステムが不安定になることがあります。省電力状態となったときにドライブが使えなくなるようです。カーネルパラメータ nvme_core.default_ps_max_latency_us=5500 は一番低い省電力ステートを無効にし、書き込みエラーを防止します [3][4]

参照