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). Meu /etc/fstab se parece com:

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, o que eu fiz diariamente, eu recebi mensagens como:

8 Gigabytes trimmed.

Agora, no nível superior do SSD Toshiba de 480GBytes, 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 inicio o comando fstrim , recebo este resultado:

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

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

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

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

Quanto mais informações 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 com frequência?

    
por Auguste Leconte 28.04.2016 / 12:04

1 resposta

2

A partir das FAQs do Wiki do BTRFS:

Is Btrfs optimized for SSD?

There are some optimizations for SSD drives, and you can enable them by mounting with -o ssd. As of 2.6.31-rc1, this mount option will be enabled if Btrfs is able to detect non-rotating storage. SSD is going to be a big part of future storage, and the Btrfs developers plan on tuning for it heavily. Note that -o ssd will not enable TRIM/discard.

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

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

A página fstrim diz:

Running fstrim frequently, or even using mount -o discard [which permanently turns TRIM on], might negatively affect the lifetime of poor-quality SSD devices. For most desktop and server systems the sufficient trimming frequency is once a week. Note that not all devices support a queued trim, so each trim command incurs a performance penalty on whatever else might be trying to use the disk at the time.

Além disso, o CoW (copy-on-write) do BTRFS é vantajoso para SSDs, minimizando overwrites desnecessários, então o TRIM não é realmente necessário com o BTRFS. Sistemas de arquivos não-CoW em SSDs precisam TRIM ativado.

Why is the amount of trimmed space 177 GiB, instead of maybe 8 or 10 like on my old XFS formatted 240 GB SSD?

Talvez esteja relacionado a ssd_spread não estar ativado, de onde você teria um espaço livre maior e menos fragmentado:

ssd_spread Mount -o ssd_spread is more strict about finding a large unused region of the disk for new allocations, which tends to fragment the free space more over time. It is often faster on the less expensive SSD devices.

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

Does fstrim not work for BTRFS?

Sim. A página de opções de montagem do BTRFS diz "você pode executar o comando fstrim periodicamente."

And, do you know a (very) good tutorial / website or similar, which explains BTRFS, including how subvolume work, what about Meta data?

Este é o melhor recurso do BTRFS: link

A página de manual do btrfs-subvolume é boa. Portanto, é a seção Subvolumes do guia Sysadmin . btrfsQuota.py é um script interessante para entender snapshot / tamanhos de subvolume e metadados.

The more infos on latest btrfs-progs (I use version 4.4.1) the better.

A versão mais recente é 4.5.3 .

If in German, it would be great, too...

Eu recomendo o script btrbk Perl para aproveitar o BTRFS para fazer backups automáticos e snapshots. Isso realmente demonstra o poder do BTRFS. O autor, Axel Burri , é de Zurique, na Suíça, e, com base em seu sobrenome em alemão, ele provavelmente conhece Alemão também; 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):

por 03.06.2016 / 04:17

Tags