É possível obter o SSD TRIM (descarte) funcionando no software RAID ext4 + LVM + no Linux?

18

Usamos RAID1 + 0 com md no Linux (atualmente 2.6.37) para criar um dispositivo md, depois usamos LVM para fornecer gerenciamento de volume na parte superior do dispositivo e, em seguida, usamos ext4 como nosso sistema de arquivos nos grupos de volumes LVM.

Com os SSDs como unidades, gostaríamos de ver os comandos TRIM propagados pelas camadas (ext4 -> LVM -> md -> SSD) para os dispositivos.

Parece que os kernels 2.6.3x recentes tiveram um monte de suporte TRIM novo relacionado ao SSD, incluindo muito mais cobertura dos cenários do Device Mapper, mas ainda não conseguimos fazer com que ele desça adequadamente.

Isso ainda é possível? Se sim, como? Caso contrário, algum progresso está sendo feito?

Don MacAskill
fonte

Respostas:

7

Não é possível, porque o Linux Soft RAID não suporta isso (ainda?).

UPD. : Obrigado a Wodin por me informar - de acordo com lkml.org/lkml/2012/3/11/261, esta funcionalidade foi adicionada proposta recentemente. proposto ! = aceito , no entanto.

poige
fonte
Você pode ainda menos esta resposta, mas isso não faria LSR apoio TRIM :)
poige
3
Faz agora. lkml.org/lkml/2012/3/11/261
Wodin 06/04/12
@ Wodin, não consigo encontrar as alterações propostas, mesmo na versão 3.5. Eles não parecem ser aceitos.
poige
14

A partir de 2.6.37, ele deve estar presente ( fonte ) . O kernel não faz isso em segundo plano, o processo de descarte de bloco atualmente é projetado para ser executado sob demanda (script cron!). O suporte ao Dm-crypt ainda não existe.

Em 13 de janeiro de 2011, um patch foi mesclado no dm-raid1.c que diz:

dm raid1: support discard

Enable discard support in the DM mirror target.
Also change an existing use of 'bvec' to 'addr' in the union.

Não sou 100%, mas acho que essa é a janela de mesclagem da 2.6.38.

O EXT4 adicionou suporte há um tempo, assim como o LVM. RAID é a única chave que não tem suporte. Desde 13/01/2011, parece que o suporte foi adicionado. Procure em 2.6.38 ou talvez 2.6.39.


O tempo passou e o suporte ao TRIM está definitivamente incluído no kernel 3.7 . A confirmação para o RAID10 diz :

Isso faz com que o md raid 10 suporte TRIM. Se um disco suportar descartar e outro não, ou se discard_zero_data e outro não, pode haver inconsistência entre os dados de tais discos. Mas isso não importa, dados descartados são inúteis. Isso adicionará uma cópia extra na reconstrução.

sysadmin1138
fonte
Vi esse segmento e os commits relacionados, mas como eu disse na pergunta - isso significa que ele passará corretamente não apenas pelo LVM (Device Mapper), mas também pelo md (Software RAID)?
quer
11
Isso parece promissor, mas meu entendimento é que o dmraid é usado principalmente para os chamados controladores RAID de hardware 'fakeRAID'. O que estou falando é de uma matriz mdadm RAID-1 (+0) mais típica de software, com LVM na parte superior. AFAIK, essa configuração não se beneficia da recém-descoberta capacidade do dmraid de lidar com descartes. Certo?
Don MacAskill
11
@DonMacAskill O arquivo 'raid1.c' não possui nenhum commit referente ao TRIM, FITRIM ou 'descarte'. Portanto, parece que o suporte a mdadm --create RAID ainda não existe, afinal.
sysadmin1138
@ sysadmin1138 Acho que você quer dizer discard, como é chamado no kernel do Linux. E esse patch parece se referir ao descarte.
Michael Hampton
1

Mdtrim pode precisar de mais trabalho:

Cyberax-mdtrim-0a40e8d# ./mdtrim.py -m /dev/md4 -s /home
Scratch directory is /home, trimmer file size is 0 GB 790 MB
Found slave sdc2 on /dev/sdc with MD offset 0 and partition offset 249856
Creating trimmer file
252,2: device not found in /dev
Traceback (most recent call last):
  File "./mdtrim.py", line 120, in <module>
    if lines[2].find("assuming %d byte sectors" % sector_size) == -1:
IndexError: list index out of range
Eros
fonte
0

Você pode usar meu script MDTRIM ( https://github.com/Cyberax/mdtrim/ ) para TRIM de espaço vazio nos RAIDs ext4 / 3 de nível 1. Começamos periodicamente a partir do cron e funciona muito bem para nós.

É possível adicionar suporte para outros níveis de RAID, mas não tenho tempo (ou preciso) para isso.

Cyberax
fonte
0

Como sugerido aqui Você pode usar

lsblk -D

para verificar se seus dispositivos de bloco passam pelos comandos de descarte.

Observe também que os dispositivos de seção no lvm.conf contêm uma opção issue_discards. Vejo

man 5 lvm.conf

para mais informações.

sebastianwagner
fonte