Mantık yanlış değil. Ancak bu, yalnızca bazı koşullar sağlandığında geçerlidir.
TRIM komutu belirtilen, ATA komut seti , ya da karşı verilir sektörleri sıfır olabilir veya olmayabilir.
Aslında, standart TRIM verildikten sonra hangi verilerin iade edilmesi gerektiğine odaklanmaktadır 1 :
Aşağıdaki davranışlar, aygıtın kırptığı sektörler için bu standart tarafından belirtilir (bkz. 7.5.3.3):
a) deterministik olmayan - kesilmiş bir sektörden gelen bir okumaya yanıt olarak veriler, sektör ev sahibi tarafından yazılana kadar her bir okuma için değişebilir;
b) Kırpmadan Sonra Deterministik Okuma (DRAT) - kesilmiş bir kesimin okunmasına yanıt olarak döndürülen veriler değişmez, ancak daha önce döndürülen verilerden farklı olabilir; ve
c) Kırpmadan Sonra Sıfırları Oku (RZAT) - kırpılan sektörün okunmasına yanıt olarak döndürülen veriler sıfırdır.
[...] Hem DRAT hem de deterministik olmayan depolama aygıtları için, başarıyla kesilmiş bir LBA'ya okuma komutuna yanıt olarak döndürülen veriler:
a) belirtilen LBA için önceden döndürülen veriler olabilir;
b) depolama cihazı tarafından üretilen bir model olabilir; ve
c) ev sahibi tarafından daha önce farklı bir LBA'ya yazılan veriler değildir.
Bu nedenle, cihazınızın sonra ne döndürdüğü fstrim
uyguladığı özelliklere bağlıdır. RZAT'ı desteklemediği sürece, kesilmiş bir cihazdan okunan verilerin yalnızca sıfır olacağı varsayımı tutmaz.
Bunu hdparm
kontrol etmek için kullanabilirsiniz :
sudo hdparm -I /dev/sdX | grep -i trim
İki SSD kullanarak bazı testler yaptım sda
ve sdb
. Aynı üretici, farklı modeller, farklı ATA uyumluluğu ile:
$ sudo hdparm -i /dev/sdb
...
Drive conforms to: Unspecified: ATA/ATAPI-3,4,5,6,7
...
$ sudo hdparm -i /dev/sda
...
Drive conforms to: unknown: ATA/ATAPI-2,3,4,5,6,7
...
İki SSD'nin TRIM için farklı desteği var:
$ sudo hdparm -I /dev/sda | grep -i trim
* Data Set Management TRIM supported (limit 1 block)
$ sudo hdparm -I /dev/sdb | grep -i trim
* Data Set Management TRIM supported (limit 8 blocks)
* Deterministic read ZEROs after TRIM
Bunu teyit edebilir, vermeden sonra fstrim
, destekleyici sürücü (RZAT) "deterministik TRIM sonra sıfırları okumak" aslında neredeyse tamamen ilgili bölüm sıfırlanmasını gibi görünüyor. Tersine, diğer sürücünün boş alanın sadece küçük bir kısmı sıfırlanmış (veya başka bir şekilde oldukça sıkıştırılabilir bir modelle değiştirilmiş) görünmektedir.
1 Çevrimiçi kaynak: INCITS 529: Bilgi teknolojisi - ATA / ATAPI Komut Seti - 4 (ACS-4)
Test hakkında not:
Yorumlarda frostschutz tarafından işaret edildiği gibi , bir okuma sonrası fstrim
, kesilmiş cihazdan değil, işletim sistemi önbelleğinden veri döndürebilir. Örneğin, bu qustion'da olan buydu .
(Ben de işaret ediyorum bu cevap TRIM test etmek için alternatif bir yöntem için aynı soruya).
Arasında fstrim
ve sonraki okuma arasında önbelleği bırakmanız gerekebilir, örneğin:
echo 3 | sudo tee /proc/sys/vm/drop_caches
Oynadığınız bölümün boyutuna bağlı olarak, testlerin başarısız olması için önbelleği düşürmemek yeterli olabilir.
Kurulumunuzla ilgili not:
discard
Seçenek her zaman dosyalar silinir yani sürekli TRIM, kolayca monte edin. Tarafından gerekli değildir fstrim
. Aslında, isteğe bağlı TRIM ve sürekli TRIM, TRIM operasyonlarını yönetmenin iki ayrı yoludur. Daha fazla bilgi için Arch Linux Wiki'de bu konunun ayrıntılı bir şekilde ele alındığı Katı hal sürücüsüne işaret edeceğim .
dmsetup table | grep allow_discards