第21章 ソリッドステートディスクデプロイメントのガイドライン
使用されるブロック数は、ディスク容量に近づけるため、パフォーマンスが低下します。パフォーマンスへの影響度は、ベンダーによって大きく異なります。ただし、すべてのデバイスでパフォーマンスが低下する可能性があります。
パフォーマンスの低下に対処するために、ホストシステム(Linux カーネルなど)は破棄要求を使用して、特定のブロックが使用されていないことをストレージに通知します。SSD はこの情報を使用して、対象レベルに空きブロックを使用して、内部で領域を解放できます。破棄は、ストレージプロトコル(ATA または SCSI 経由)でストレージサポートを公開する場合にのみ発行されます。破棄要求は、ストレージプロトコル固有の negotiated discard コマンドを使用してストレージに発行されます(ATA の場合はTRIM コマンド、および UNMAP セットでの WRITE SAME、SCSI 用の UNMAP コマンド)。
破棄 サポートを有効にすると、ファイルシステムに利用可能な空き領域があるものの、ファイルシステムは、基礎となるストレージデバイスのほとんどの論理ブロックに既に書き込まれている場合に便利です。TRIM の詳細は、以下のリンクの 『Data Set Management T13 Specifications』 を参照してください。
UNMAP の詳細は、以下のリンクの 『SCSI Block Commands 3 T10 Specification』 のセクション 4.7.3.4 を参照してください。
注記
市場のすべてのソリッドステートデバイスが、破棄 サポートを持つわけではありません。ソリッドステートデバイスが破棄されたかどうかを判断するには、
/sys/block/sda/queue/discard_granularity
を確認してください。
21.1. デプロイメントに関する考慮事項
SSD の内部レイアウトと操作により、内部 消去ブロック境界 のパーティション作成が最適です。Red Hat Enterprise Linux 6 のパーティショニングユーティリティーが、SSD トポロジー情報をエクスポートする場合は、デフォルトの sane を選択します。
ただし、デバイスがトポロジー情報をエクスポートし ない場合は、最初のパーティションを 1MB の境界に作成することを推奨します。
Red Hat Enterprise Linux 6.5 MD MD が破棄要求を渡すようになりました。6.5 より前のバージョンでは、サポート対象外でした。一方、LVM が、論理ボリュームマネージャー(LVM)と、LVM が破棄をサポートしているデバイスマッパー(DM)ターゲットになります。破棄をサポートしない唯一の DM ターゲットは、dm-snapshot、dm-crypt、および dm-raid45 です。Red Hat Enterprise Linux 6.1 に、dm-mirror のサポートが破棄されました。
Red Hat は、SSD 上の LVM RAID に RAID1 または RAID10 を使用することを推奨しています。このレベルは破棄をサポートしているためです。他の RAID レベルの初期化段階では、一部の RAID 管理ユーティリティー( mdadmなど)が、ストレージデバイス 上のすべての ブロックへの書き込みを行い、そのチェックサムが適切に動作するようになります。これにより、SSD のパフォーマンスがすぐに低下します。
注記
RAID1、RAID10、およびパリティー RAID で --nosync オプションを使用すると、最初の書き込みが進んだ分のストライプが計算されるため、一貫性が保たれます。ただし、スクラビング操作を実行する場合は、書き込まれていない部分
が一致しない/inconsistent
としてカウントされます。
Red Hat Enterprise Linux 6.4 では、ext4 および XFS は、破棄に対応する唯一の完全対応ファイルシステムです。以前のバージョンの Red Hat Enterprise Linux 6 は、ext4 は完全にサポートされている discard です。デバイスで discard コマンドを有効にするには、マウントオプション discard を使用します。たとえば、discard を有効にして
/dev/sda2
を /mnt
にマウントするには、次のコマンドを実行します。
# mount -t ext4 -o discard /dev/sda2 /mnt
デフォルトでは、ext4 は discard コマンドを発行しません。これはほとんどの場合、破棄 コマンドを適切に実装できないデバイスの問題を回避するためのものです。Linux swap コードは discard コマンドで -enabled デバイスを破棄し、この動作を制御するオプションはありません。