O que exatamente fazem os parâmetros Linux 'allow-discards' e 'root_trim'?


10

Atualmente, muitas instruções online relacionadas ao SSD dizem que você deve adicionar allow- discards e root_trim = yes ao seu GRUB_CMDLINE_LINUX. Ainda não encontrei um que diga por que você deve fazer isso, ou seja, o que exatamente (se é que existe alguma coisa!) Faz esses parâmetros. Onde está a documentação sobre isso e o que diz sobre o objetivo desses dois parâmetros?

De acordo com as Notas de versão do Cryptsetup 1.4.0 ,

Desde o kernel 3.1, os dispositivos dm-crypt opcionalmente (não por padrão) suportam os comandos de descarte de bloco (TRIM). Para ativar esta operação, você deve habilitá-la manualmente em todas as ativações usando --allow-discards

cryptsetup luksOpen --allow-discards /dev/sdb test_disk 

mas é o mesmo quando passado para o kernel (via GRUB_CMDLINE_LINUX)?

Edit: a lista de parâmetros do kernel.org (atualmente em janeiro de 2013, pelo menos) não possui nenhuma dessas opções.


Talvez ter um olhar para webupd8.org/2013/01/enable-trim-on-ssd-solid-state-drives.html Não dá explicação, mas um procedimento rápido ...
alci

1
Como eu disse, a net está cheia de instruções sem explicações. Estou atrás das explicações, não do procedimento.
Jani Uusitalo

Respostas:


6

Pelo que entendi, o parâmetro de inicialização root_trim=yesé específico do Gentoo. Dentro, genkernelhá um script que procura o parâmetro e define a opção --allow-discardscom cryptsetup (consulte o repositório git ). Além disso, encontrei muitos relatórios de usuários do Ubuntu ou Debian que diziam que funcionavam sem o root_trimparâmetro. Também não encontrei linhas no update-initramfsscript Ubuntus .

Portanto , apesar de tudo, não é um parâmetro de inicialização, mas mais um parâmetro para cryptsetup. A documentação --allow-discardspode ser encontrada na página de manual do cryptsetup (8) :

--allow-discards
Permite o uso de solicitações de descarte (TRIM) para o dispositivo. Esta opção é relevante apenas para create , luksOpen ou loopaesOpen .

AVISO : Avalie cuidadosamente os riscos de segurança específicos antes de ativar esta opção. Por exemplo, permitir descartes em dispositivos criptografados pode levar ao vazamento de informações sobre o dispositivo de texto cifrado (tipo de sistema de arquivos, espaço usado etc.) se os blocos descartados puderem ser localizados facilmente no dispositivo posteriormente.

É necessária a versão 3.1 do kernel ou mais recente. Para versões mais antigas é a opção ignorada.

Baseado neste blog sobre TRIM e dm-crypt , TRIM é uma operação em que a camada superior (por exemplo, sistema de arquivos) informa ao dispositivo quais setores não são mais usados ​​(não contêm mais dados válidos) e que o dispositivo não precisa manter o conteúdo desses dados .

Na terminologia Linux, essa operação é chamada de descarte. No mundo do SCSI, ele é chamado de comando UNMAP.

A operação de descarte pode ser usada para dois propósitos: thin provisioning (informa que a área de dados pode ser retornada ao pool de alocação) e para otimização da operação do SSD.

O descarte é mais útil para a otimização do SSD, pois a arquitetura interna usa blocos maiores que setores e que os blocos devem ser apagados antes que uma operação de gravação possa ser executada. Informações sobre setores que não precisam manter dados são muito úteis, pois o sistema de arquivos seria capaz de organizar blocos de maneira mais eficaz, de modo a minimizar a fragmentação dos dados e aumentar a vida útil do disco.


Portanto, nenhuma das opções é necessária se o sistema de arquivos não estiver codificado? Por que duas opções, se tudo o que fazem é ativar um comando para funcionar?
Jani Uusitalo

Obrigado por apontar a relação entre o parâmetro do kernel e a opção mount / devicemapper na sua resposta atualizada. +1 desta vez. :)
gertvdijk

Esta resposta está começando a parecer boa. Eu também encontrei allow_discards na documentação atual do dm-crypt ; tudo parece sugerir que não é um parâmetro do kernel, mas uma opção para o destino do mapeador de dispositivo dm-crypt. Ainda estou tentando descobrir se esses podem ser passados ​​na linha de comando do linux. Isso explicaria as instruções repetidas por toda parte, caso contrário, provavelmente é apenas desinformação.
Jani Uusitalo

1
@JaniUusitalo Realmente não faz sentido para mim tornar este um paramater (global) do kernel. 1) você realmente deseja especificar este sistema de arquivos / dispositivo específico em vez de todo o sistema, 2) opções de montagem / fstab já o fazem, 3) no momento da inicialização (antes que o initramfs o monte /como leitura / gravação) você ' provavelmente não precisará dessa funcionalidade.
precisa saber é

4
A parametrização do kernel de allow-discards pode ser um Archism: aparentemente no Arch, você notifica o GRUB sobre uma raiz criptografada com (por exemplo) "cryptdevice = / dev / mapper / root: root: allow-discards". Isso é percebido pelos usuários do Ubuntu devido ao fato de o wiki do Arch ser referido como "Melhor referência" pelos EncryptedFilesystems do wiki do Ubuntu .
Jani Uusitalo
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.