Saya memiliki LUKS
partisi /dev/sda1
yang saya luksOpen dengan --allow-discards
:
cryptsetup --allow-discards luksOpen /dev/sda1 root
Saya kemudian me-mount sistem ext4
file dengan discard
opsi:
grep /dev/mapper/root /proc/mounts
/dev/mapper/root / ext4 ro,relatime,block_validity,discard,delalloc,barrier,user_xattr,acl 0 0
Saya kemudian memangkas ruang kosong pada partisi yang terpasang:
fstrim -v /
dengan df
, saya melihat /
memiliki ruang kosong 80%. Itu berarti bahwa pada /dev/sda1
, 80% dari disk adalah nol biner.
Jika saya mengkloning gambar dengan cat
cat /dev/sda1 > sda1.img
dan kompres gambar dengan xz
, saya harapkan semua nol pada disk dikompresi. Karena 20% dari data pada disk dienkripsi, itu harus terlihat seperti acak dan tidak terkompresi. Oleh karena itu, gambar yang dikompresi xz harus aprox. 20% dari ukuran mentah.
Namun, gambar yang dikompresi xz kira-kira berukuran sama dengan aslinya.
Apakah alasan saya benar?
Mengapa teori saya tidak diterjemahkan ke dalam praktik?
dmsetup table | grep allow_discards
Jawaban:
Logika Anda tidak salah. Tetapi itu hanya valid jika beberapa persyaratan dipenuhi.
The perintah TRIM , sebagaimana ditentukan dalam ATA perintah set , mungkin atau mungkin tidak nol sektor itu dikeluarkan terhadap.
Sebenarnya, standar ini berfokus pada data apa yang harus dikembalikan setelah TRIM dikeluarkan 1 :
Jadi, apa yang dikembalikan perangkat Anda
fstrim
tergantung pada fitur yang diterapkannya. Kecuali jika ia mendukung RZAT, asumsi bahwa data yang dibaca dari perangkat yang dipangkas hanya nol yang tidak berlaku.Anda dapat menggunakan
hdparm
untuk memeriksa ini:Saya melakukan beberapa tes menggunakan dua SSD,
sda
dansdb
. Pabrikan yang sama, model yang berbeda, dengan kesesuaian ATA yang berbeda:Kedua SSD memiliki dukungan berbeda untuk TRIM:
Saya dapat mengkonfirmasi bahwa, setelah mengeluarkan
fstrim
, drive yang mendukung "Deterministic read NERO after TRIM" (RZAT) tampaknya benar-benar memusatkan perhatian pada partisi yang bersangkutan hampir seluruhnya. Sebaliknya, drive lain tampaknya memusatkan perhatian (atau diganti dengan beberapa pola yang sangat kompresibel) hanya sebagian kecil dari ruang yang dibebaskan.1 Sumber online: INCITS 529: Teknologi informasi - ATA / ATAPI Command Set - 4 (ACS-4)
Catatan tentang pengujian:
Seperti yang ditunjukkan oleh frostschutz dalam komentar, baca setelah
fstrim
dapat mengembalikan data dari cache sistem operasi, dan bukan dari perangkat yang dipangkas. Misalnya, apa yang terjadi dalam qustion ini .(Saya juga akan mengarahkan jawaban ini ke pertanyaan yang sama untuk metode alternatif untuk menguji TRIM).
Antara
fstrim
dan bacaan berikutnya Anda mungkin perlu menjatuhkan cache, misalnya dengan:Bergantung pada ukuran partisi yang Anda mainkan, tidak menjatuhkan cache mungkin cukup untuk pengujian Anda gagal.
Catatan pada pengaturan Anda:
The
discard
mount option memungkinkan TRIM terus menerus, yaitu file waktu akan dihapus. Tidak diwajibkan olehfstrim
. Memang, TRIM atas permintaan dan TRIM berkelanjutan adalah dua cara berbeda untuk mengelola operasi TRIM. Untuk informasi lebih lanjut, saya akan menunjuk ke solid state drive di Arch Linux Wiki, yang memiliki cakupan terperinci tentang masalah ini.sumber
Apakah SSD memiliki lapisan enkripsi perangkat keras bawaan? Jika ada, maka blok TRIMmed mungkin all-nol (atau mungkin semua-yang) pada tingkat perangkat keras, tetapi karena komputer melihatnya melalui lapisan enkripsi, mereka akan muncul sebagai omong kosong semu acak setelah melewati semua -menggunakan blok mentah melalui proses dekripsi.
Lapisan enkripsi perangkat keras seperti itu akan memiliki beberapa keuntungan:
sumber
Buang tidak sama dengan Nol.
Jika Anda ingin nol dengan cryptsetup Anda bisa mengecilkan fs maka blok crypt kemudian dd ruang volume yang tidak digunakan.
Jika Anda ingin tahu apakah trim bekerja melakukan tes kecepatan harus menjadi indikator setelah digunakan berat.
https://linux.die.net/man/8/fstrim https://en.m.wikipedia.org/wiki/Trim_(computing)
sumber
df
melaporkan ruang kosong tidak berarti ruang kosong.trim
memberi tahu perangkat penyimpanan bahwa blok tidak digunakan. Saya tidak berpikir bahwa ini nol mereka.sumber