[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