web-dev-qa-db-fra.com

Le pilote mpt2sas prend-il en charge TRIM?

J'utilise Ubuntu 13.10 avec un adaptateur LSI 9211-8i SAS avec SSD Samsung 840 EVO. Lors de tests de performances, j’ai constaté que la vitesse d’écriture ralentissait considérablement et j’essayais donc de faire fonctionner TRIM avec cet adaptateur. Les SSD supportent TRIM:

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

Si je déplace les disques SSD vers un autre système avec un autre contrôleur, exécutez fstrim et les ramène sur ce système, les performances attendues sont restaurées.

Selon LSI, leur soutien de firmwares initiateur-cible (TI) trim . Cependant, le support du trim ne fonctionne pas:

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

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

Je n'utilise pas LVM ou crypto pour ces systèmes de fichiers. J'ai essayé les formats xfs et ufs4, bien que je prévoie d'utiliser xfs. Voici un exemple de ligne fstab:

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

Pour le firmware du contrôleur, j'ai utilisé les firmwares P14, P16 et P18 (les plus récents) de LSI. J'ai également construit le pilote P18 mpt2sas fourni par LSI qui nécessitait un correctif mineur pour supprimer __devexit mais qui était compilé et fonctionne normalement. J'ai également essayé de créer un instantané quotidien de Trusty à l'aide du pilote stock mpt2sas.

Voici les lignes de mpt2sas dmesg avec le temps enlevé:

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

Est-ce juste que mpt2sas ne supporte pas TRIM (SAS UNMAP)? Quelqu'un pourrait-il recommander un contrôleur fonctionnel pour un système monté en armoire ou un JBOD si celui-ci ne le prend pas en charge? J'ai besoin de 8 à 16 disques SSD SATA (configuration non-RAID) dans un système monté en armoire ou un JBOD combiné à un contrôleur prenant en charge TRIM.

3
Kurt M

J'ai reçu quelque aide sur la liste linux-scsi où il a été suggéré que pour que trim puisse fonctionner avec les contrôleurs LSI, une lecture déterministe après trim (lire zéro) était nécessaire. Je suis passé au Samsung Pro SSD. Ils ont une lecture déterministe après ajustement et fonctionnent correctement avec les contrôleurs LSI. Donc, mpt2sas prend en charge TRIM lorsque la lecture déterministe après ajustement est prise en charge sur le SSD.

En outre, j'ai trouvé le liste de compatibilité LSI où vous pouvez vérifier si un SSD est pris en charge. Cette liste est actuellement mise à jour assez fréquemment.

5
Kurt M