はじめに
Zoned NameSpace SSD (ZNS SSD) とは近年注目を集めているストレージデバイスのことです。
一般的なSSDよりもアクセス速度に優れリアルタイム性が求められる組込みシステムでの適応が期待されています。この記事ではZNS SSDの特徴と利点を解説しようと思います。
ストレージ
まずはストレージとは何かというところからいきましょう。
ストレージとは直訳すると”貯蔵”という意味、つまりコンピュータの世界ではプログラムを実行する命令やデータを保管しておく記憶装置のことを指します。
日常的にわかりやすい例でいうと、みなさんが保管しているファイルはストレージに保管されていて、アクセス時はファイルシステムを介してストレージデバイスにアクセスしているわけです。
SSD
先ほど説明したストレージデバイスの一種としてSolid State Drive(SSD)があります。
従来はストレージデバイスとしてはHDDが一般的で多くのコンピュータに使用されていましたが、HDDはデータアクセス命令時にプラッタ内に保管されているデータ位置まで磁気ヘッドを移動することでデータのアクセスをします。つまり、HDDは機械的アクセスが必須なわけでその分アクセスレイテンシが高くなるわけです。
そこで、SSDは記憶素子としてはNAND型フラッシメモリを使用しています。つまりSSDは電気的なアクセスのみで機械的なアクセスが一切必要ないためHDDに比べて圧倒的に高速ということです。
従来のSSD
ZNS SSDの利点を説明する前に従来のSSDの問題点を説明していきます。
SSDができた当初は既存のSoftware Stackとの互換性を維持することで市場を獲得しました。つまり、アプリケーションがSSDにアクセスをしようとすると
APP ⇨ File System ⇨ Block layer ⇨ Device Driver ⇨ SSD
というように、論理アドレスから物理アドレスへの変換を経てアクセスされます。つまり、書き込みファイルは以下の図のようにバラバラな位置に書き込まれます。
SSDは上書きができないという特徴がありファイルの上書き時は対象ファイルを削除してから書き込みをする必要があります。SSDの削除はブロック単位で行われるため以下の図からわかるようにファイルCを削除しようとすると、ファイルCと同一ブロックにある他のファイルを空きブロックに退避させる必要があります。この処理をガーベジコレクションと言います。
つまり、本来の書き込み量より多くの書き込みが発生してします。これが、結果的に書き込みレイテンシにつながっているわけですね。
ZNS SSD
さて、本題のZNS SSDの説明に入りましょう。
ZNS SSDの最大の特徴はストレージ上のデータ配置をホストが直接管理できるという点です。
つまり、以下のようなデータ配置になりガーベジコレクションなどの書き込みレイテンシを低減できるわけです。
まとめ
本記事では次世代ストレージZNS SSDの特徴と利点を説明しました。ZNSに欠点がないように思えますが、アプリケーション開発者がストレージ内のデータ配置を考えながら実装することは難易度が高いと言えるでしょう。そこで、最近のLinuxではZNSに対応したファイルシステムなどが存在します。次の記事でLinuxのZNSへのアプローチを紹介しようと思います。