Linux, SSD, BTRFS e Trim

4

Estou executando um sistema Linux (baseado no Gentoo) com um sistema de arquivos BTRFS instalado em um SSD (Toshiba Q300 com rede de 480GB). Minhas /etc/fstab parece:

UUID=14cb9b65-... swap           swap    defaults,noatime, 0       0                                                                                                                                                                                                                           
UUID=cd7d93b3-... /              btrfs   defaults,cache,compress=lzo,subvol=@ 0       1                                                                                                                                                                                          
UUID=cd7d93b3-... /home          btrfs   defaults,noatime,space_cache,compress=lzo,subvol=@home 0       2                                                                                                                                                                                      
UUID=cd7d93b3-... /Data          btrfs   defaults,noatime,space_cache,compress=lzo,subvol=@Data 0       2                                                                                                                                                                                     
UUID=cd7d93b3-... /mnt/rootfs    btrfs   defaults,noatime,space_cache,compress=lzo 0       0                                                                                                                                                                                                   
tmpfs             /tmp           tmpfs   defaults,noatime,mode=1777 0       0                                                                                                                                                                                                                   tmpfs             /proc          proc    defaults                   0       0                                                                                                                                                                                                              
tmpfs             /var/log       tmpfs   defaults,noatime,rw,mode=1777 0    0
tmpfs             /var/tmp       tmpfs   defaults,noatime,rw,mode=1777 0    0                                                                                                                                                                                                              
tmpfs             /var/run        tmpfs   defaults,noatime             0    0 
tmpfs             /var/spool      tmpfs   defaults,noatime             0    0 
tmpfs             /var/lock       tmpfs   defaults,noatime             0    0 
tmpfs             /var/cache      tmpfs   defaults,noatime             0    0
tmpfs             /run            tmpfs   defaults,noatime             0    0
sysfs             /sys            sysfs   defaults                     0    0
tmpfs             /dev/shm        tmpfs   defaults                     0    0
devpts            /dev/pts        devpts  gid=5,mode=620               0    0
devtmpfs          /dev            devtmpfs gid=5,mode=620              0    0

Antes, eu tinha um Intel SSD com 240GB de rede com sistema de arquivos XFS. Quando eu executei o fstrim -v / para esse sistema XFS, que eu fazia diariamente, eu recebia mensagens como:

8 gigabytes aparados.

Agora, no nível superior do SSD Toshiba de 480GByte, tenho vários Subvolumes como:

# btrfs subvolume list /mnt/rootfs
ID 264 gen 273 top level 5 path @_original_install
ID 265 gen 152 top level 5 path @home_install_ok
ID 266 gen 270 top level 5 path @_snapshot_install_ok             
ID 267 gen 28504 top level 5 path @       
ID 275 gen 28504 top level 5 path @home
ID 276 gen 26900 top level 5 path @Data
ID 607 gen 245 top level 5 path @_snapshot_home_20160330
ID 628 gen 3837 top level 5 path @_root_snapshot_20160402

e quando eu começo o fstrim comando, recebo este resultado:

*****************************************
# fstrim -v /mnt/rootfs/@
  177,3 GiB (190331097088 Bytes) getrimmt
*****************************************

Por que a quantidade de espaço aparado é de 177 GiB, em vez de 8 ou 10, como no meu antigo SSD formatado em XFS de 240 GB?

Depois de cortar o meu Toshiba SSD de 480 GB novamente logo após o primeiro corte, o resultado é quase o mesmo, 172 GiB foram cortados agora. Então: faz fstrim não funciona para o BTRFS?

E você conhece um (muito) bom tutorial / website ou similar, o que explica o BTRFS, incluindo como funciona o subvolume, e os metadados?

Quanto mais infos sobre os últimos btrfs-progs (eu uso a versão 4.4.1), melhor. Se em alemão, seria ótimo também ...

E, é prejudicial ao SSD, ao aparar, ou ao aparar frequentemente?

Auguste Leconte
fonte
Estou pensando em comprar um Toshiba Q300, mas a Amazon deu críticas muito ruins, dizendo que ele funciona mal depois de alguns meses. Por quanto tempo você teve o seu?
Geremia

Respostas:

2

Das FAQs do Wiki do BTRFS:

O Btrfs é otimizado para SSD?

Existem algumas otimizações para as unidades SSD e você pode ativá-las   montando com -o ssd. A partir de 2.6.31-rc1, esta opção de montagem será   ativada se o Btrfs for capaz de detectar armazenamento não rotativo. SSD vai   para ser uma grande parte do armazenamento futuro, e os desenvolvedores do Btrfs planejam   sintonizando fortemente. Observe que -o ssd não habilitará TRIM / descartar .

Eu vejo que você não está montando com -o ssd. Talvez o seu btrfs-progs não está detectando como um SSD. (Verifica se /sys/block/sdX/queue/rotational é 0.)

" -o ssd não habilitará TRIM / descartar "provavelmente porque overwrites excessivos desgastam os drives SSD mais rapidamente.

o fstrim manpage diz:

Corrida fstrim freqüentemente, ou mesmo usando mount -o discard [que ativa permanentemente o TRIM], pode afetar negativamente o tempo de vida de dispositivos SSD de baixa qualidade. Para a maioria dos sistemas de desktop e servidor,          frequência de corte suficiente é uma vez por semana. Observe que nem todos os dispositivos oferecem suporte a um ajuste de enfileiramento, portanto, cada comando de compensação gera uma penalidade de desempenho em qualquer outra coisa          pode estar tentando usar o disco no momento.

Além disso, o BTRFS CoW (copy-on-write) é vantajoso para SSDs, minimizando sobrescrições desnecessárias, portanto TRIM não é realmente necessário com o BTRFS. Sistemas de arquivos não-CoW em SSDs precisar TRIM ligado.

Por que a quantidade de espaço aparado é de 177 GiB, em vez de 8 ou 10, como no meu antigo SSD formatado em XFS de 240 GB?

Talvez esteja relacionado com ssd_spread não estando ligado, de onde você teria um espaço livre maior e menos fragmentado:

ssd_spread Monte -o ssd_spread é mais rigoroso quanto a encontrar uma grande região não utilizada do disco para novas alocações, o que tende a fragmentar mais o espaço livre ao longo do tempo. Geralmente é mais rápido nos dispositivos SSD mais baratos.

Como o seu Toshiba Q300 é um SSD de baixo custo, você deve ligar o ssd_spread opção de montagem.

O fstrim não funciona para o BTRFS?

Isso acontece. o Página de opções de montagem do BTRFS diz "você pode correr fstrim comando periodicamente ".

E você conhece um (muito) bom tutorial / website ou similar, o que explica o BTRFS, incluindo como funciona o subvolume, e os metadados?

Este é o melhor recurso do BTRFS: https://btrfs.wiki.kernel.org/

o btrfs-subvolume manpage é bom. Então é a seção Subvolumes do guia Sysadmin . btrfsQuota.py é um script puro para entender os tamanhos de snapshot / subvolume e metadados.

Quanto mais infos sobre os últimos btrfs-progs (eu uso a versão 4.4.1), melhor.

O mais recente é a versão 4.5.3 .

Se em alemão, seria ótimo também ...

Eu recomendo o btrbk Script Perl para alavancar o BTRFS para fazer backups automatizados e snapshots. Isso realmente demonstra o poder do BTRFS. O autor, Axel Burri é de Zurique, na Suíça, e, com base no fato de ter um primeiro nome em alemão, ele provavelmente também sabe alemão; talvez ele pudesse apontar alguns recursos alemães do BTRFS.

Além disso, fazendo uma pesquisa no WorldCat, este livro menciona o BTRFS, mas está um pouco desatualizado (2011):

Geremia
fonte
btrbk está disponível no Alpine Linux para que possa ser executado facilmente em um lxc ou docker contêiner se não estiver disponível em sua distribuição Linux: pkgs.alpinelinux.org/…
Stuart Cardall
@Stuart Lá também uma btrbk SlackBuilds script para construir um pacote do Slackware.
Geremia