[OT] Optymalizacja dysku SSD, który _nie_ obsługuje TRIM
Grzegorz Sójka
pld w sojka.co
Wto, 25 Lis 2014, 15:33:29 CET
On 11/25/14 13:19, Łukasz Maśko wrote:
> Przepraszam za OT, ale sprawa związana jest bezpośrenio z PLD. Mam w laptopie
> dysk SSD, który nie obsługuje TRIM:
>
> $ sudo hdparm -I /dev/sda
>
> /dev/sda:
>
> ATA device, with non-removable media
> Model Number: KingSpec KSD-ZF18.6-128MS
> Serial Number: ZF18613110800309
> Firmware Revision: 20130619
> Standards:
> Supported: 9 8 7 6 5
> Likely used: 9
> Configuration:
> Logical max current
> cylinders 16383 16383
> heads 15 15
> sectors/track 63 63
> --
> CHS current addressable sectors: 15481935
> LBA user addressable sectors: 247975936
> LBA48 user addressable sectors: 247975936
> Logical/Physical Sector size: 512 bytes
> device size with M = 1024*1024: 121082 MBytes
> device size with M = 1000*1000: 126963 MBytes (126 GB)
> cache/buffer size = 1 KBytes (type=DualPort)
> Nominal Media Rotation Rate: Solid State Device
> Capabilities:
> LBA, IORDY(can be disabled)
> Standby timer values: spec'd by Vendor, no device specific minimum
> R/W multiple sector transfer: Max = 1 Current = 0
> DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 *udma5 udma6
> Cycle time: min=120ns recommended=120ns
> PIO: pio0 pio1 pio2 pio3 pio4
> Cycle time: no flow control=120ns IORDY flow control=120ns
> Commands/features:
> Enabled Supported:
> * SMART feature set
> * Power Management feature set
> Write cache
> * Host Protected Area feature set
> * WRITE_BUFFER command
> * READ_BUFFER command
> * NOP cmd
> SET_MAX security extension
> * 48-bit Address feature set
> Mandatory FLUSH_CACHE
> FLUSH_CACHE_EXT
> * SMART error logging
> HW reset results:
> CBLID- above Vih
> Device num = 0
> Integrity word not set (found 0x0000, expected 0x3ca5)
>
> Jest to malutki dysk 1.8" ze złączem ZIF (nie SATA). Nie jest też szybki,
> chociaż i tak 2x szybszy od tależówki (urok dość starego kompa ze złączem ZIF
> do dysku i bez SATA). Użytkuję go już jakiś czas, ale ostatnio zaczęło mnie
> wkurzać, że np. jak odpalę w konsoli aktualizację większych pakietów w
> poldku, to cały system dostaje koszmarnej czkawki. Ponieważ dzieje się to
> głównie właśnie przy zapisie, doszedłem do wniosku, że to z braku TRIM.
> Zacząłem czytać o optymalizacji. Zmieniłem filesystem na ext4 (z innych
> przyczyn początkowo), scheduler na NOOP. Ale tak się zacząłem zastanawiać,
> czy nie ma przypadkiem jakiegoś sposobu na wykonanie TRIM mimo wszystko.
> Mógłbym to zrobić offline, przejść do single i tam zapuścić. Raz na jakiś
> czas. To nie serwer tylko laptop, mogę sobie na to pozwolić. Oczywiście bez
> straty danych. Ale czy się da i jeśli tak, to jak?
>
> Czy potraficie mi coś konstruktywnego poradzić?
>
Według mojej wiedzy jest po ptakach. W kontrolerach macierzowych (nie
obsługujących TRIMu) stosuje się provisioning. Zostawia się ok 10-20%
niespartycjonowanego miejsca na końcu dysku żeby miał zawsze dość
wolnych komórek do podmieniania zużytych. Jeśli długo używasz i
wszystkie komórki mają status "zajęta" to nawet jak zmniejszysz partycję
i tak to nic nie da. Trzeba by zTRIMować cały dysk albo zapuścić
security erase (którego też nie masz).
Więcej informacji o liście pld-users-pl