O driver mpt2sas suporta TRIM?

3

Estou executando o Ubuntu 13.10 com um adaptador SAS LSI 9211-8i com SSDs Samsung 840 EVO. Fazendo alguns testes de desempenho notei a velocidade de gravação caindo significativamente, então eu tenho tentado obter TRIM trabalhando com este adaptador. Os SSDs suportam TRIM:

# hdparm -I /dev/sdc | grep "TRIM supported"
    *   Data Set Management TRIM supported (limit 8 blocks)

Se eu mover os SSDs para outro sistema com um controlador diferente, execute o fstrim e mova-os de volta para este sistema para que o desempenho esperado seja restaurado.

De acordo com a LSI, seus firmwares de iniciador-alvo (IT) suportam trim . No entanto, o suporte de compensação não está funcionando:

# cat /sys/block/sdc/queue/discard_granularity 
0

# fstrim /srv/node/disk2p1
fstrim: /srv/node/disk2p1: FITRIM ioctl failed: Operation not supported

Eu sou não usando LVM ou crypto para esses sistemas de arquivos. Eu tentei os formatos xfs e ufs4, embora eu esteja planejando usar o xfs. Aqui está um exemplo da linha fstab:

LABEL=disk2p1 /srv/node/disk2p1 xfs noatime,nodiratime,nobarrier,logbufs=8,discard 0 0

Para o firmware do controlador, experimentei os firmwares P14, P16 e P18 (mais recentes) da LSI. Eu também construí o LSI fornecido mpt2sas driver P18, que exigia um patch menor para remover __devexit mas de outra forma compilado e funciona bem. Eu também tentei uma compilação de instantâneo diário de Trusty usando o driver mpt2sas de estoque.

Aqui estão as linhas do mpt2sas dmesg com o tempo removido:

mpt2sas version 18.00.00.00 loaded
mpt2sas0: 64 BIT PCI BUS DMA ADDRESSING SUPPORTED, total mem (16418600 kB)
mpt2sas0: _base_get_ioc_facts: IOC_STATE(0x22000000)
sd 3:0:0:0: [sda] 7815168 512-byte logical blocks: (4.00 GB/3.72 GiB)
sd 3:0:0:0: [sda] Write Protect is off
sd 3:0:0:0: [sda] Mode Sense: 43 00 00 00
sd 3:0:0:0: [sda] No Caching mode page found
sd 3:0:0:0: [sda] Assuming drive cache: write through
sd 3:0:0:0: [sda] No Caching mode page found
sd 3:0:0:0: [sda] Assuming drive cache: write through
sda: sda1
sd 3:0:0:0: [sda] No Caching mode page found
sd 3:0:0:0: [sda] Assuming drive cache: write through
sd 3:0:0:0: [sda] Attached SCSI removable disk
mpt2sas0: _base_get_ioc_facts: failed going to ready state  (ioc_state=0x20000000)
mpt2sas0: MSI-X vectors supported: 1, no of cores: 16, max_msix_vectors: -1
mpt2sas 0000:04:00.0: irq 79 for MSI/MSI-X
mpt2sas0-msix0: PCI-MSI-X enabled: IRQ 79
mpt2sas0: iomem(0x00000000df2b0000), mapped(0xffffc90011c80000), size(65536)
mpt2sas0: ioport(0x000000000000fc00), size(256)
mpt2sas0: _base_get_ioc_facts: IOC_STATE(0x22000000)
mpt2sas0: _base_get_ioc_facts: failed going to ready state  (ioc_state=0x20000000)
mpt2sas0: sending message unit reset !!
mpt2sas0: message unit reset: SUCCESS
mpt2sas0: Allocated physical memory: size(7445 kB)
mpt2sas0: Current Controller Queue Depth(3307), Max Controller Queue Depth(3432)
mpt2sas0: Scatter Gather Elements per IO(128)
mpt2sas0: overriding NVDATA EEDPTagMode setting
mpt2sas0: LSISAS2008: FWVersion(18.00.00.00), ChipRevision(0x03), BiosVersion(07.35.00.00)
mpt2sas0: Dell 6Gbps SAS HBA: Vendor(0x1000), Device(0x0072), SSVID(0x1028), SSDID(0x1F1C)
mpt2sas0: Protocol=(Initiator,Target), Capabilities=(TLR,EEDP,Snapshot Buffer,Diag Trace Buffer,Task Set Full,NCQ)
mpt2sas0: sending port enable !!
mpt2sas0: host_add: handle(0x0001), sas_addr(0x590b11c027281600), phys(8)
mpt2sas0: port enable: SUCCESS
sd 2:0:1:0: [sdc] 976773168 512-byte logical blocks: (500 GB/465 GiB)
sd 2:0:0:0: [sdb] 143374000 512-byte logical blocks: (73.4 GB/68.3 GiB)
sd 2:0:2:0: [sdd] 976773168 512-byte logical blocks: (500 GB/465 GiB)
sd 2:0:3:0: [sde] 976773168 512-byte logical blocks: (500 GB/465 GiB)
sd 2:0:4:0: [sdf] 976773168 512-byte logical blocks: (500 GB/465 GiB)
sd 2:0:0:0: [sdb] Write Protect is off
sd 2:0:0:0: [sdb] Mode Sense: d7 00 00 08
sd 2:0:5:0: [sdg] 976773168 512-byte logical blocks: (500 GB/465 GiB)
sd 2:0:0:0: [sdb] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
sd 2:0:1:0: [sdc] Write Protect is off
sd 2:0:1:0: [sdc] Mode Sense: 7f 00 10 08
sd 2:0:1:0: [sdc] Write cache: enabled, read cache: enabled, supports DPO and FUA
sd 2:0:2:0: [sdd] Write Protect is off
sd 2:0:2:0: [sdd] Mode Sense: 7f 00 10 08
sd 2:0:2:0: [sdd] Write cache: enabled, read cache: enabled, supports DPO and FUA
sd 2:0:3:0: [sde] Write Protect is off
sd 2:0:3:0: [sde] Mode Sense: 7f 00 10 08
sd 2:0:3:0: [sde] Write cache: enabled, read cache: enabled, supports DPO and FUA
sd 2:0:4:0: [sdf] Write Protect is off
sd 2:0:4:0: [sdf] Mode Sense: 7f 00 10 08
sd 2:0:4:0: [sdf] Write cache: enabled, read cache: enabled, supports DPO and FUA
sd 2:0:5:0: [sdg] Write Protect is off
sd 2:0:5:0: [sdg] Mode Sense: 7f 00 10 08
sd 2:0:5:0: [sdg] Write cache: enabled, read cache: enabled, supports DPO and FUA

É só que o mpt2sas não suporta o TRIM (SAS UNMAP)? Alguém poderia recomendar um controlador de trabalho para um sistema montado em rack ou JBOD se este não suportá-lo? Eu preciso de 8 - 16 SATA SSDs (configuração não-RAID) em um sistema montado em rack ou JBOD combinado com um controlador que suporte TRIM.

    
por Kurt M 05.02.2014 / 20:20

1 resposta

5

Recebi alguma ajuda na lista linux-scsi em que foi sugerido que para o trim funcionar com os controladores LSI, é necessária uma leitura determinística após o trim (leitura zero). Eu mudei para o Samsung Pro SSD. Eles possuem leitura determinística após o ajuste e funcionam corretamente com os controladores LSI. Portanto, mpt2sas suporta TRIM quando a leitura determinística após o ajuste é suportada no SSD.

Além disso, encontrei a Lista de compatibilidade de LSI , onde você pode verificar se um SSD é suportado. Esta lista atualmente é atualizada com alguma frequência.

    
por Kurt M 26.03.2014 / 21:45

Tags