ASM1153Eコントローラー付きのmSATA-USBエンクロージャーには、既存のmSATA SSD(モデル名:Plextor PX-128M6M)が取り付けられています。
欲しい(論理的にはSSDコントローラレベルで)すべてのデータを削除します。
しかし、次のようになります。
blkdiscard
このコマンドは、実際に要求されたデータ領域全体を削除せず、最初の2GiBから32KiBを引いたデータ領域のみを削除します。hdparm --trim-sector-ranges-stdin
うまく動作しているようですが、SSDコントローラは問題です。(具体的にはこのモデルのSSD、他のモデルはこのように動作しないようです)TRIM
最初の8つのセクタ(4KiBのデータ)がコマンドによってクリアされないように保護しているようです。
私の試みと実験は次のとおりです。
Ubuntu 23.04で行われました。
Arch Wikiのガイドのおかげで、最初に
/sys/block/sdX/device/scsi_disk/*/provisioning_mode
設定する必要があることがわかりました。unmap
そう始まったfull
。その後、システムはSCSIUNMAP
コマンド(UASPを介してTRIM
コントローラによってコマンドに変換されます)を既存のSSDに送信できると思います。その後、ドライブ全体に対してこれを行いました。 (
blkdiscard -f -v /dev/sdX
はsdX
実際のデバイス名)その後、すべてのバイト(ディスク容量と一致)が削除(削除)されたことを報告しましたが、プライマリGPTとバックアップGPTの両方がディスクにあることがわかりました。 spaceの開始/終了はまだ削除されていません。2GiBサイズのパーティションを作成し
/dev/urandom
、 。blkdiscard -f -v /dev/sdX
フルドライブを実行しhexdump
たところ、最初のパーティションの最後の1MiB + 32KiBがクリアされていないことがわかりました(パーティションは512バイトのセクタサイズのLBA 2048で始まります)。blkdiscard -f -v /dev/sdX1
ドライブ全体ではなく新しいパーティションで再実行した結果、hexdump
そのパーティションの最後の32KiBは削除されていないとマークされます。hdparm --trim-sector-ranges-stdin
その後、標準入力で提供されているドライブ全体のすべてのセクタのリストを試しました。今回はデフォルトのGPTがまだ存在しますが、残りのデータはすべてゼロにクリアされます。最初の2048セクタをデータで埋めました
/dev/urandom
。その後、hdparm --trim-sector-ranges-stdin
最初の8つのセクタ(4KiBのデータ)を除くすべてのセクタが削除されたように見えます。
クリアされていない最初の8セクタの動作がmSATA-USBチップではなくSSDコントローラによって実行されることを確認するには:
その後、USBエンクロージャなしでこの古いPlextor SSDを内蔵mSATAドライブとして取り付けました。その後も、最初の8つのセクターはまだ残ります
hdparm --trim-sector-ranges-stdin
。別の最新のキングストンブランドmSATA SSDがあります。としてテストしましたが、
hdparm --trim-sector-ranges-stdin
USBカプセル化されているか内部ドライブに直接マウントされているかどうかは例外なく、すべてのセクタがゼロでした。