Não é possível ativar o TRIM no SSD

4

Não consigo ativar o TRIM no meu SSD recém-instalado. Ubuntu Server 12.04, Linux 3.11.0-15 genérico. Eu liguei o TRIM através da configuração de descarte em / etc / fstab. Também o TRIM não funciona com o comando fstrim.

Aqui está como eu verifico se o TRIM funciona ou não:

#for i in {1..100000}; do echo "1" >> tempfile; done
#sudo hdparm --fibmap tempfile
#sudo hdparm --read-sector 293865512 /dev/sda
#rm tempfile
#sync
#sudo hdparm --read-sector 293865512 /dev/sda

A segunda execução do comando hdparm --read-sector deve retornar zeros no caso de TRIM ativado, mas o resultado é o mesmo da primeira execução desse comando.

O comando

fstrim não funciona:

#sudo fstrim -v /
/: 0 bytes were trimmed

Aqui está o resultado de hdparm -i / dev / sda:

Model=KINGSTON SV300S37A240G, FwRev=520ABBF0, SerialNo=50026B7243004D3E
Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs RotSpdTol>.5% }
RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=4
BuffType=unknown, BuffSize=unknown, MaxMultSect=16, MultSect=1
CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=468862128
IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
PIO modes:  pio0 pio1 pio2 pio3 pio4 
DMA modes:  mdma0 mdma1 mdma2 
UDMA modes: udma0 udma1 udma2 udma3 udma4 udma5 *udma6 
AdvancedPM=yes: unknown setting WriteCache=disabled
Drive conforms to: unknown:  ATA/ATAPI-2,3,4,5,6,7

Aqui está o resultado do sudo hdparm -I / dev / sda:

/dev/sda:    

ATA device, with non-removable media
    Model Number:       KINGSTON SV300S37A240G                  
    Serial Number:      50026B7243004D3E    
    Firmware Revision:  520ABBF0
    Transport:          Serial, ATA8-AST, SATA 1.0a, SATA II Extensions, SATA Rev 2.5, SATA Rev 2.6, SATA Rev 3.0
Standards:
    Used: unknown (minor revision code 0x0110) 
    Supported: 8 7 6 5 
    Likely used: 8
Configuration:
    Logical     max current
    cylinders   16383   16383
    heads       16  16
    sectors/track   63  63
    --
    CHS current addressable sectors:   16514064
    LBA    user addressable sectors:  268435455
    LBA48  user addressable sectors:  468862128
    Logical  Sector size:                   512 bytes
    Physical Sector size:                   512 bytes
    Logical Sector-0 offset:                  0 bytes
    device size with M = 1024*1024:      228936 MBytes
    device size with M = 1000*1000:      240057 MBytes (240 GB)
    cache/buffer size  = unknown
    Nominal Media Rotation Rate: Solid State Device
Capabilities:
    LBA, IORDY(can be disabled)
    Queue depth: 32
    Standby timer values: spec'd by Standard, with device specific minimum
    R/W multiple sector transfer: Max = 16  Current = 1
    Advanced power management level: 254
    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
            Security Mode feature set
       *    Power Management feature set
            Write cache
            Look-ahead
       *    Host Protected Area feature set
       *    WRITE_BUFFER command
       *    READ_BUFFER command
       *    NOP cmd
       *    DOWNLOAD_MICROCODE
       *    Advanced Power Management feature set
            Power-Up In Standby feature set
       *    SET_FEATURES required to spinup after power up
            SET_MAX security extension
       *    48-bit Address feature set
       *    Mandatory FLUSH_CACHE
       *    FLUSH_CACHE_EXT
       *    SMART error logging
       *    SMART self-test
       *    General Purpose Logging feature set
       *    WRITE_{DMA|MULTIPLE}_FUA_EXT
       *    64-bit World wide name
       *    IDLE_IMMEDIATE with UNLOAD
            Write-Read-Verify feature set
       *    {READ,WRITE}_DMA_EXT_GPL commands
       *    Segmented DOWNLOAD_MICROCODE
            unknown 119[6]
       *    Gen1 signaling speed (1.5Gb/s)
       *    Gen2 signaling speed (3.0Gb/s)
       *    Gen3 signaling speed (6.0Gb/s)
       *    Native Command Queueing (NCQ)
       *    Phy event counters
       *    NCQ priority information
       *    unknown 76[15]
       *    DMA Setup Auto-Activate optimization
            Device-initiated interface power management
       *    Software settings preservation
       *    SMART Command Transport (SCT) feature set
       *    SCT LBA Segment Access (AC2)
       *    SCT Data Tables (AC5)
       *    reserved 69[3]
       *    DOWNLOAD MICROCODE DMA command
       *    SET MAX SETPASSWORD/UNLOCK DMA commands
       *    WRITE BUFFER DMA command
       *    READ BUFFER DMA command
       *    Data Set Management TRIM supported (limit 1 block)
Security: 
    Master password revision code = 65534
        supported
    not enabled
    not locked
    not frozen
    not expired: security count
        supported: enhanced erase
    4min for SECURITY ERASE UNIT. 2min for ENHANCED SECURITY ERASE UNIT.
Logical Unit WWN Device Identifier: 50026b7243004d3e
    NAA     : 5
    IEEE OUI    : 0026b7
    Unique ID   : 243004d3e
Checksum: correct

Aqui está o dmesg | grep descarte:

[    6.417350] EXT4-fs (sda1): re-mounted. Opts: discard,errors=remount-ro
[    6.471628] EXT4-fs (sdb1): mounted filesystem with ordered data mode. Opts: discard

E aqui está o gato / etc / mtab | grep descarte:

/dev/sda1 / ext4 rw,noatime,nodiratime,discard,errors=remount-ro 0 0
/dev/sdb1 /home/backup ext4 rw,noatime,nodiratime,discard 0 0

Também consegui habilitar o TRIM através do descarte em dois outros computadores com o mesmo sistema operacional, mas com o SSD diferente.

    
por Kasheftin 10.04.2014 / 08:14

1 resposta

5

Acho que o maior equívoco aqui é que a emissão do TRIM fará com que os blocos sejam apagados na mesma hora. Realmente tudo o que o comando TRIM está fazendo é informar ao SSD que o SO não precisa mais dos dados neste local, exatamente o que acontece depois disso é com o firmware Idealmente o firmware deve usar esta informação para:

  1. Evite copiar e reescrever esses dados quando outra parte do bloco for regravada. Lembre-se de que o tamanho do bloco de apagamento de um SSD é (sempre?) Maior que o tamanho do bloco de gravação, portanto, quando precisar reescrever um determinado bloco, ele precisará copiar uma área maior, apagar e reescrever o tamanho maior. área com os dados atualizados incluídos. Se um TRIM tiver sido emitido para parte dessa área, essa parte não precisará ser copiada ou reescrita. Isso é mais rápido e evita gravações desnecessárias, o que encurtará a vida útil do dispositivo.

  2. Execute outras otimizações de nivelamento de desgaste.

Nenhum desses requer que os dados sejam apagados imediatamente. Na verdade, pode ser melhor para a vida útil do SSD se isso não acontecer quando a área recortada for menor que o tamanho de um bloco de exclusão. Dito isto, segue-se também que pode ser uma boa prática para o SSD apagar as áreas que cobrem os blocos completos de apagamento logo após o TRIM ser emitido.

Se você já teve sucesso com o método acima, pode ser que os SSDs utilizados tenham um tamanho menor de bloqueio de apagamento. Infelizmente, os fabricantes raramente publicam esses dados, mas, ao redor, 512k não parece ser algo inédito. Você pode ter sucesso se tentar ler e escrever uma área maior que cobriria vários blocos de apagamento e leria no meio da área em vez do início ou fim, já que a primeira parte pode não ter seu próprio bloco de apagamento.

No entanto, note que tive o mesmo resultado da pergunta, mesmo com um bloco contínuo de 16 MiB.

    
por 10.04.2014 / 15:14

Tags