最近はSSDの価格が高騰していることもあり、値ごろ感のある中古のエンタープライズ向けU.2 SSDに手を出してみました。
入手したのは Samsung PM1733の1.92TBモデルです。しかしエンプラ向けは互換性優先のためにセクターサイズが512バイトに設定されていることがあるようです。最初は気付かずにopenSUSEをインストールしてしまい、暗号強度の確認でluksDumpで確認したらsector 512byteとありました。

セクターサイズの変更は低レイヤー中の低レイヤーなのでインストールをまた最初からやり直しました。以下はその備忘録になります。
1. 現在のセクターサイズの確認
まずは、openSUSEのインストーラー起動直後に Ctrl + Alt + F5 でCUI(tty5)に切り替え、現在のディスクの状態を lsblk コマンドで確認します。
Bash
lsblk -o NAME,PHY-SEC,LOG-SEC /dev/nvme0n1

出力結果を見ると、物理セクター(PHY-SEC)も論理セクター(LOG-SEC)も「512」になっています。一般的なPCや古いOSとの互換性を保つためのメーカー初期設定ですが、最新のファイルシステム(Btrfsなど)をこのまま構築すると、書き込み効率が低下し、SSDの寿命を縮める原因になります。
2. 対応フォーマットの確認
次に、このSSDがどのようなセクターサイズに対応しているかを nvme-cli で確認します。
Bash
nvme id-ns -H /dev/nvme0n1 | less

画面最下部に出力されたリストを見ると、複数のフォーマットが確認できます。
LBA Format 0: 512 bytes(現在の設定、Performance: Better)LBA Format 2: 4096 bytes(Performance: 0 Best)
メーカーの仕様として、LBA Format 2 の4096バイト(メタデータなし)が最もパフォーマンスが良い(0 Best)と明記されていることが分かります。
3. フォーマットの執行
ターゲットを LBA Format 2 に決め、以下のコマンドで物理セクターの再構築を実行します。
Bash
nvme format --lbaf=2 /dev/nvme0n1

10秒のデータ消去警告のあと、無事に Success formatting namespace:1 と表示され、フォーマットが完了しました。これでOS側の管理単位とSSDの物理セクターが1対1で一致する状態になります。
4. まとめ
作業完了後、Ctrl + Alt + F7 でGUIインストーラー(YaST)に戻ります。
中古のエンタープライズSSDしかもU.2は初めてだったのですが、環境を構築する前に気付けたので良かったです。ベンチマークの数字が劇的に変わるわけではありませんが、ファイルシステムとの整合性やディスクの寿命を考慮すると、インストール前にやっておく価値のある作業です。