そのオプションを使用してSSDをインストールするかどうか疑問に思いますdiscard
。man mount
)実際にATA TRIMをSSDコントローラに送信する必要があります。
discard
証拠はやや情況的です。サンディスクSSDプラス、削除されたファイルはすぐにTestDiskを実行して回復できません。ファイルパスはそのままですが、ファイルの内容は消えました。これからTRIMがSSDで実行されており、ファイル内容を回復できないようにすることが疑われます。
見てみるとsystemctl list-timers
ランニングユニットはないようですfstrim
。
パーティションがマウントされていなくてもファイルが削除された後、カーネルはTRIMを送信しますかdiscard
?それとも、TestDiskがSSDからファイルを確実に回復できないもう一つの理由ですか?
私はArch Linux 5.12.3を使用しています。
findmnt
パーティションとマウントオプションについて教えてください。
TARGET SOURCE FSTYPE OPTIONS
/ /dev/sda3 ext4 rw,relatime
└─/sda1 /dev/sda1 ext4 rw,relatime,lazytime,discard
答え1
ファイルシステムがマウントされている場合、discard
ファイルを削除すると自動的にTRIMコマンドが実行されます。これはしばしばパフォーマンスに悪影響を及ぼすため、通常はそのマウントオプションを使用せずに定期的に実行することをお勧めしますfstrim
。これは、すべてのブロックデバイス層がそれをサポートしている限り機能します(暗号化にLUKSを使用する場合はこれを使用する必要があります。)cryptsetup --allow-discards
このマウントオプションを使用しないと、ファイルリンクを解放するとファイルシステムドライバは自動的にTRIMコマンドを送信しません。
を使ってインストールしてみることもできますnodiscard
。これはデフォルトであり、通常は必要ありませんが、ファイルシステムに継続的なTRIMサポートが追加されている可能性がありますtune2fs -o discard /dev/sda1
。tune2fs -o ^discard /dev/sda1
debugfs
このユーティリティを使用すると、ファイルを削除する前に最初にファイルの実際のブロックを一覧表示してから、削除後にブロックに直接アクセスして、そのブロックがゼロになっているか中断されていないが割り当てられていないデータを返すことを確認して、問題が何であるかを判断できます。あります。
debugfs
以下は、削除されたファイルの内容をブロック番号を使用して読み取ることができるかどうかをテストするシェルスクリプトです。
#!/bin/sh
file=test_file
echo "Current date: $(date)" > "$file"; sync
# Get the device of our test file, for example "/dev/sda1"
device=$(df -P "$file" | awk 'END{print $1}')
# The block of the file's contents, stat gets the inode number
block=$(sudo debugfs -R "blocks <$(stat -c %i "$file")>" "$device")
rm $file; sync
# Read the contents of the deleted file, -D bypasses the buffer cache
sudo debugfs -D -R "block_dump $block" "$device"