2017年03月16日

MegaRAID上でのSSDのSecure Erase

はてなブックマークに登録

はじめに

KLabさんの協力会社として一緒にお仕事をさせて頂いておりますクラスターコンピューティングと申します。今回はMegaRAID上でSSDに対してATA Security Eraseを実行する方法について調べてみました。

サーバの廃棄や転用時にディスクドライブの内容を消去し回復不可能な状態する手段としてはShredコマンド等よるディスク全体を(複数回)上書きする方法があります。しかしSSDの場合、その仕組みがHDDと大きく異なるためでこの方法では搭載されているNANDメモリ上のデータを全て消去できない可能性が指摘されています(参考文献)。また転用する場合は、上書き処理によりSSDの寿命を縮めてしまうことも問題です。

SSDのNANDメモリ上のデータを完全に消去し、かつ寿命にも影響をあたえない手段としてATAコマンドのSecurity Eraseを利用する方法があります。今回はMegaRAIDに接続されているSSDに対してSecurity Eraseを実行する方法について調べてみました。

MegaRAIDに接続されているSSDに対してSecurity Eraseを実行する方法としては今回は以下の3つの方法を紹介します。

  • MegaRAIDのユーティリティコマンドStorcliを利用する
  • hdparmを利用してSecurity Eraseを実行する
  • hdparmを利用してSANITIZEを実行する

検証環境

今回の検証環境は以下の通りです。

  • 使用RAID SAS HBA:LSI Mega RAID 9266-8i
    • ファームウェアのバージョン:3.460.115-6465
    • ドライバのバージョン:magaraid_sas 06.810.09.00-rc1
  • 使用SSD:Intel DC S3500 120GB
    • ファームウェアのバージョン:D2012370
  • 使用カーネル/ソフトウェアのバージョン
    • Linux Kernel:4.6.2
    • StorCli:1.21.06
    • hdparm:9.51

StorCliでのSecurity Erase

StorCliはMegaRAID付属のコマンドラインユーティリティです。StorCliにはドライブの消去手段としてstart eraseコマンドが用意されています。これはShredコマンドと同様な全体を上書きするタイプの消去方法でオプションによる上書き回数やパターンの指定が可能です。ただ、対象がSSDの場合、この通常の処理ではなく代わりにATAのSecurity Eraseが実行されるようです。

まずSSDをMegaRAIDからみて状態が”UnconfiguredGood”な状態にします。ここでSSDドライブはStorCliで/c0/e252/s0として認識されているものとします。

# storcli /c0/e252/s0 set good force
Controller = 0
Status = Success
Description = Set Drive Good Succeeded.

# storcli /c0/e252/s0 show          
Controller = 0
Status = Success
Description = Show Drive Information Succeeded.


Drive Information :
=================

---------------------------------------------------------------------------------
EID:Slt DID State DG       Size Intf Med SED PI SeSz Model               Sp Type 
---------------------------------------------------------------------------------
252:0     8 UGood -  111.281 GB SATA SSD N   N  512B INTEL SSDSC2BB120G4 U  -    
---------------------------------------------------------------------------------

EID-Enclosure Device ID|Slt-Slot No.|DID-Device ID|DG-DriveGroup
DHS-Dedicated Hot Spare|UGood-Unconfigured Good|GHS-Global Hotspare
UBad-Unconfigured Bad|Onln-Online|Offln-Offline|Intf-Interface
Med-Media Type|SED-Self Encryptive Drive|PI-Protection Info
SeSz-Sector Size|Sp-Spun|U-Up|D-Down|T-Transition|F-Foreign
UGUnsp-Unsupported|UGShld-UnConfigured shielded|HSPShld-Hotspare shielded
CFShld-Configured shielded|Cpybck-CopyBack|CBShld-Copyback Shielded

そしてそのSSDドライブに対してstart eraseコマンドを実行するとATA Security Eraseが実行されSSDの中身が消去されます。コマンドは即座で完了してしまうので直後に進捗を確認しても"Not in progress"と表示されてしまいますが消去は完了しています。SSDドライブが対象の場合はstart eraseコマンドのオプションはすべて無視されてATA Security Eraseのみが実行されるようです。

# storcli /c0/e252/s0 start erase   
Controller = 0
Status = Success
Description = Start Drive Erase Succeeded.

# storcli /c0/e252/s0 show erase
Controller = 0
Status = Success
Description = Show Drive Erase Status Succeeded.


----------------------------------------------------------
Drive-ID    Progress% Status          Estimated Time Left 
----------------------------------------------------------
/c0/e252/s0 -         Not in progress -                   
----------------------------------------------------------

なお、同様のコマンドをHDDドライブやRAIDアレイ(論理ドライブ)に対して実行するとアレイがSSDで構成されていても通常の処理が実行されます。

MegaRAIDではドライブがSSDかHDDかは自動で認識します。そして"UnconfiguredGood"のSSDドライブを選択してstart eraseコマンド実行した場合は、通常の処理に変わってATA Security Eraseを実行されるという動作になっているようです。

hdparmでのSecurity Erase

hdparmを利用してもMegaRAIDに接続されてるSSDに対してSecurity Eraseを実行することが可能です。

まず、対象のSSDをMegaRAID上でJBODとして認識させます。するとデバイスファイルが作成されます。ここでは/dev/sdaとしてカーネルに認識されているものとします。

# storcli /c0/e252/s0 set JBOD
Controller = 0
Status = Success
Description = Set Drive JBOD Succeeded.

# storcli /c0/e252/s0 show    
Controller = 0
Status = Success
Description = Show Drive Information Succeeded.


Drive Information :
=================

---------------------------------------------------------------------------------
EID:Slt DID State DG       Size Intf Med SED PI SeSz Model               Sp Type 
---------------------------------------------------------------------------------
252:0     8 JBOD  -  111.281 GB SATA SSD N   N  512B INTEL SSDSC2BB120G4 U  -    
---------------------------------------------------------------------------------

EID-Enclosure Device ID|Slt-Slot No.|DID-Device ID|DG-DriveGroup
DHS-Dedicated Hot Spare|UGood-Unconfigured Good|GHS-Global Hotspare
UBad-Unconfigured Bad|Onln-Online|Offln-Offline|Intf-Interface
Med-Media Type|SED-Self Encryptive Drive|PI-Protection Info
SeSz-Sector Size|Sp-Spun|U-Up|D-Down|T-Transition|F-Foreign
UGUnsp-Unsupported|UGShld-UnConfigured shielded|HSPShld-Hotspare shielded
CFShld-Configured shielded|Cpybck-CopyBack|CBShld-Copyback Shielded

hdparmでSecurity Eraseを実行するためには対象のドライブが"not frozen"な状態である必要があります。状態はhdparm -Iコマンドで確認できます。今回の場合、はじめから"not frozen"な状態でした。

# hdparm -I /dev/sda
...
...
Security: 
	Master password revision code = 65534
		supported
	not	enabled
	not	locked
	not	frozen <--ここ
	not	expired: security count
		supported: enhanced erase
	4min for SECURITY ERASE UNIT. 4min for ENHANCED SECURITY ERASE UNIT.
...
...

あとのhdparmによるSecurity Eraseによる実行方法は一般的な場合と同様です。まずパスワードを設定してATAのSecurityを有効にしたあと、そのパスワードを指定してSecurity Eraseを実行します。設定するパスワードはSecurity Eraseが完了するとリセットされてしまうので適当なもので構いません。

パスワード "pass" 設定
# hdparm --user-master u --security-set-pass pass /dev/sda
/dev/sda:
 Issuing SECURITY_SET_PASS command, password="pass", user=user, mode=high
security_password: "pass"

Security Erase実行
# hdparm --user-master u --security-erase pass /dev/sda
security_password: "pass"

/dev/sda:
 Issuing SECURITY_ERASE command, password="pass", user=user

今回の場合、Security Erase実行後に以下のようなエラーがでてしました。ただ実行後にddでSSDのセクタを確認してみるとデータは"0"でクリアされており消去は完了しているようです。エラーがでてはいますが、消去はされているようでしたので今回紹介させていただきました。

Secure Erase実行時にエラー
# hdparm --user-master u --security-erase pass /dev/sda
security_password: "pass"

/dev/sda:
 Issuing SECURITY_ERASE command, password="pass", user=user
The running kernel lacks CONFIG_IDE_TASK_IOCTL support for this device.
SECURITY_ERASE: Invalid argument

hdparmによるSANITIZE

SANITIZEは最近になってATA規格に追加された機能でSecurity Erase同様にドライブの内容を消去する機能です。そのため新しい製品でないと利用できないかもしれません。SANITIZEが実行できるかどうかはhdparm -Iで調べることができます。今回のSSD Intel DC S3500 ではSANITIZEのBLOCK ERASE機能が利用可能でした。

# hdparm -I /dev/sda
...
	   *	SANITIZE feature set
...
	   *	BLOCK_ERASE_EXT command

hdparmを利用してSANITIZEのBLOCK ERASEコマンドを実行します。Security Eraseの場合と同様にSSDはMegaRAID上でJBODとして認識させます。そのデバイスファイルは/dev/sdaとします。

hdparmによるSANITIZEのBLOCK ERASEは--sanitize-block-eraseオプションで実行します。今回利用したバージョン9.51のhdparmのではこのオプションはまだ追加されたばかりらしく実行するためには"--yes-i-know-what-i-am-doing"オプションによる同意が必要です。

# hdparm  --yes-i-know-what-i-am-doing --sanitize-block-erase /dev/sda

/dev/sda:
Issuing SANITIZE_BLOCK_ERASE command
Operation started in background
You may use `--sanitize-status` to check progress

SANITIZEはバックグラウンドで実行されます。現在の進捗状況は--sanitize-statusオプションで確認できます。SANITIZEも比較的に短時間で終了します。

# hdparm  --sanitize-status /dev/sda     確認1回目(実行中)
/dev/sda:
Issuing SANITIZE_STATUS command
Sanitize status:
    State:    SD2 Sanitize operation In Process
    Progress: 0x1999 (10%)

# hdparm  --sanitize-status /dev/sda 確認2回目(完了済)

/dev/sda:
Issuing SANITIZE_STATUS command
Sanitize status:
    State:    SD0 Sanitize Idle

こちらはSecurity Eraseの場合と異なりhdparmのエラーが発生することなく完了しました。完了後にddでSSDのセクタを確認してみましたが”0"でクリアされていました。

まとめ

MegaRAID上でのSSDのSecurity Eraseを試してみました。現状ではSSDの消去に以下の2つの方法いずれかを利用するのが良さそうです。

  • SSDを"UnconfiguredGood"の状態にしてStorcliのerase startを実行する
  • SSDをJBODとして認識させてhdparmを利用してSANITIZEを実行する

 
MegaRAID上でのSSDの消去方法
使用コマンド SSDドライブの状態 消去方法の種類 全NAND上データ消去 寿命への影響 備考
StorCli/start erase Unconfigured Good ATA Security Erase 極小
hdparm/Security Erase JBOD ATA Security Erase 極小 但し、hdparm実行時にエラーが発生する
hdparm/SANITIZE JBOD ATA SANITIZE BLOCK ERASE 極小
StorCli/start erase RAIDアレイ 上書きタイプ 有り SSDで構築したRAIDアレイに実行した場合
Shred RAIDアレイ/JBOD 上書きタイプ 有り OS上からドライブに対してSherdコマンドを実行した場合

tech_ccmp at 14:18│Comments(0)TrackBack(0)

トラックバックURL

この記事にコメントする

名前:
URL:
  情報を記憶: 評価: 顔   
 
 
 
Blog内検索
このブログについて
DSASとは、KLab が構築し運用しているコンテンツサービス用のLinuxベースのインフラです。現在5ヶ所のデータセンタにて構築し、運用していますが、我々はDSASをより使いやすく、より安全に、そしてより省力で運用できることを目指して、日々改良に勤しんでいます。
このブログでは、そんな DSAS で使っている技術の紹介や、実験してみた結果の報告、トラブルに巻き込まれた時の経験談など、広く深く、色々な話題を織りまぜて紹介していきたいと思います。
最新コメント
最新トラックバック
Archives