web-dev-qa-db-ja.com

hdparmはSSDを読みませんか? HDIO_DRIVE_CMD(identify)failed:Inappropriate ioctl for device

512 GB SSD SK Hynixを安全に消去するためにhdparmを使用しようとしています。 SSDにはWindows 10がインストールされています。

私はusbフラッシュドライブからUbuntuを起動します。

Sudo fdisk -l

/ dev/sdaはSSDではなく8GBフラッシュドライブであることがわかりました。

SSDは次のように表示されます。

Disk /dev/nvme0n1: 477 GiB, 512110190592 bytes, 1000215216 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt

ここで実行しようとすると:hdparm -I/dev/nvme0n1ターミナルでエラーが発生します: "/ dev/nvme0n1:HDIO_DRIVE_CMD(identify)failed:Inappropriate ioctl for device"

sSDでhdparmセキュア消去オプションを使用するにはどうすればよいですか?インターネット上の別のページの提案から、 nvme-cliパッケージが提案されました ですが、それがどのように役立つかわかりません。

sSDは読み取り/書き込みサイクルが制限されており、HDDとは非常に異なる動作をするため、SSDではshredコマンドの使用はお勧めしません。

更新:SSDはATAではなくNVMeデバイスなので、hdparmコマンドは適切ではありません。代わりにnvme -formatを使用してください。

5
Jack

NVMeデバイスを消去するには nvme-cliを使用して、nvme format -s1 <device>

nvme-cliパッケージが提案されましたが、それがどのように役立つかわかりません。

hdparmは[〜#〜] ata [〜#〜]プロトコルを話すデバイスでのみ機能しますが、SSDはNVMeプロトコル。

その違いは、物理的な接続(IDE/SATAなど)だけに限定されず、OSはデバイスと通信するときにまったく異なるコマンドセットを使用する必要があります。 ATAコマンドはいずれもNVMeには適用されません(「セキュア消去」のの一般的なアイデアは存在しますが、実装方法は異なります)。

したがって、hdparmは最初からこのジョブに適したツールではないため、nvme-cliが推奨されました。


理論的には、OSがコマンドセット間を変換する(ATAコマンドをインターセプトし、同等のNVMeコマンドを発行する)ことが可能であり、実際、LinuxカーネルはSCSI-to-ATAに対してある程度内部的にこれを実行します。ある時点で、Linuxは基本的なSCSIからNVMeへの変換をサポートするために使用されていましたが、システムがあまりに異なるため、これは最終的に削除されました。

ただし、Linuxは他の方法でそれを実行しないため、それは役に立ちませんでした。SCSIディスクに対してATA固有のhdparmを使用することはできません。同様に、NVMeに対してhdparmを使用することもできません。ディスク。

4
user1686