você está usando uma partição apenas para backups?
Rui F Ribeiro
1
É subvolume @homemontado em /home, com btrbkbackups no subvolume btrbk-snap. Para um sistema de arquivos que suporta até 2 ^ 64 instantâneos, eu esperaria que ele tem uma maneira de aumentar o tamanho de metadados ...
@EmmanuelRosa eu tenho. Qual parte você considera útil?
Tom Hale
Há um segundo que discute o reequilíbrio dos metadados. Talvez com o filtro certo você possa conceder mais espaço para os blocos de metadados.
Emmanuel Rosa
Respostas:
7
TL; DR Os metadados (se o btrfs não estiver sofrendo uma condição geral de pouco espaço) aumentarão automaticamente . Nos casos em que não existe espaço livre não alocado, o aumento automático é impedido. Se, no entanto, a parte dos dados btrfstiver sido alocada com mais espaço do que precisa, será possível redistribuí-lo. Isso é chamado de balance-ing no btrfs.
Supondo que haja memória não alocada suficiente no (s) dispositivo (s) de bloco de apoio do btrfs, a parte Metadados do sistema de arquivos aloca - exatamente como assumido pelo OP - automaticamente a memória para aumentar / expandir os metadados.
Portanto, a resposta é: Sim (desde que não haja pouca condição de memória / espaço livre no btrfs) , os metadados serão automaticamente aumentados, como tal:
(1) Vimos algumas configurações de alocação inicial dos btrfs (em um 40GBdispositivo)
(2) Como pode ser visto, o espaço alocado no sistema de arquivos para armazenar metadados é 1,55GiB, dos quais 1,33GiB, portanto quase todos são usados (isso pode ser uma situação que ocorre no caso do OP)
(3) Agora provocamos um aumento de metadados a serem adicionados. Para fazer isso, copiamos a pasta / home usando a --reflink=alwaysopção do cpcomando
$> cp -r --reflink=awlways /home /home.copy
(4) Como (como assumimos que havia muitos arquivos em / home), que muitos dados novos foram adicionados ao sistema de arquivos, que, porque --reflinkusamos pouco espaço para os dados reais, ele usa o método Mecanismo Copy-on-Write. Em resumo, a maioria dos metadados foi adicionada ao sistema de arquivos. Podemos, portanto, ter outro olhar
Como pode ser visto, o espaço alocado para Metadados usado neste btrfstem automaticamente aumentada expandida.
Como isso é automático, normalmente não é detectado pelo usuário. No entanto, existem alguns casos, principalmente aqueles em que todo o sistema de arquivos já está praticamente cheio. Nesses casos, btrfspode começar a "gaguejar" e falhar ao aumentar automaticamente o espaço alocado para os metadados. O motivo seria, por exemplo, que todo o espaço já tenha sido alocado para as partes (Dados, Sistema, Metadados, GlobalReserve). De maneira confusa, pode ser que exista espaço aparente. Um exemplo seria esta saída:
Como pode ser visto, todo o sistema 40GiB, mas a alocação está um pouco desativada balance, pois enquanto ainda há espaço para os dados dos novos arquivos, os Metadados (como no caso do OP) são baixos. A alocação automática de memória para os dispositivos que btrfsfazem o backup do sistema de arquivos não é mais possível (basta somar os totais da alocação, 38,12G + 1,55G + .. ~ = 40GiB).
Como existe, no entanto, espaço livre em excesso que foi alocado para a dataparte do sistema de arquivos, agora pode ser útil, necessário para equilibrar os btrfs. O saldo significaria redistribuir o espaço já alocado.
No caso do PO, pode-se supor que, por algum motivo, btrfsocorreu um desequilíbrio entre as diferentes partes da alocação.
Infelizmente, o comando simples sudo btrfs balance -dusage=0, que em princípio deve procurar blocos vazios (alocados para dados) e colocá-los para um melhor usuário (que seria o espaço quase esgotado para os metadados), pode falhar, porque nenhum bloco de dados completamente vazio pode ser encontrado.
Os btrfsdesenvolvedores recomendam, portanto, aumentar sucessivamente o limite de uso de "quando os blocos de dados devem ser reorganizados para recuperar espaço"
Portanto, se o resultado de
$> sudo btrfs balance -dusage=0
Done, had to relocate 0 out of 170 chunks
está mostrando nenhuma realocação, deve-se fazer alguma
$> sudo btrfs balance -dusage=5
Done, had to relocate 0 out of 170 chunks <--(again fail)
$> sudo btrfs balance -dusage=10
Done, had to relocate 0 out of 170 chunks <--(again fail)
$> sudo btrfs balance -dusage=15
Done, had to relocate 2 out of 170 chunks <--(success)
A outra resposta sugeriu a influência do btrfstamanho do nó, que influencia um pouco a rapidez com que os metadados aumentarão. O tamanho do nó (como mencionado na outra resposta) é definido apenas uma vez no mkfs.btrfsmomento da criação do sistema de arquivos. Em teoria, seria possível reduzir o tamanho dos metadados se fosse possível mudar para um valor menor para o tamanho do nó, se isso fosse possível (não é!). O tamanho do nó, no entanto, não poderá ajudar a expandir ou aumentar o espaço de metadados alocado de forma alguma. Em vez disso, pode ter ajudado a economizar espaço em primeiro lugar. No entanto, um tamanho de nó menor não é garantido para reduzir o tamanho dos metadados. De fato, alguns casos podem mostrar que tamanhos de nós maiores reduzem o comprimento de travessia de árvore do btrfs, pois as notas podem conter mais "links".
Posso alterar o tamanho do bloco de metadados sem recriar o sistema de arquivos?
Não, o valor passado para mkfs.btrfs -n SIZE não pode ser alterado depois que o sistema de arquivos é criado. Um backup / restauração é necessário. Observe que isso provavelmente nunca será implementado porque exigiria atualizações importantes para a funcionalidade principal.
Você pode migrar o sistema de arquivos btrfs existente para um novo que tenha um maior -n SIZE. Você pode até adicioná-lo ao sistema de arquivos existente usando o btrfs RAID e balance, e depois remover o sistema de arquivos antigo.
Há uma diferença entre o tamanho do nó (que, como você afirma, só pode ser definido uma vez na criação do sistema de arquivos) e o tamanho dos metadados, que é o que representa a btrfs filesystem df /linha de saída dos comandos Metadata, single: total=xxGiB, used=xxx.
HumanidadeANDpeace
Onde você quer chegar? Claro que há uma diferença, mas não é uma questão de opinião. -ndefine o tamanho de cada bloco de metadados, enquanto btrfs filesystem dfmostra o espaço usado por esses blocos. Se o autor da postagem original tiver muito espaço ocupado por metadados versus dados reais, eles deverão diminuir o tamanho de -n, para que os blocos de metadados tenham um tamanho mínimo menor (menos espaço ocupado, mas mais fragmentação).
Etskinner #
3
O OP pergunta como "aumentar / estender o espaço alocado para os metadados"; portanto, sua -nresposta "impossível definir o tamanho do nó ( opção)" é imho, e não ao ponto. Como ele pede mais "ou [o espaço alocado para metadados] é automaticamente expandido?", Sugere que não é o tamanho do nó, mas o espaço alocado no qual ele está interessado. A resposta deve, portanto, ser "sim". Você, é claro correta, dando a entender que o -najuste influencia o tamanho metadados indiretamente, mas a questão parece mais voltada para a memória alocada para Metadados, não o tamanho única nota metadados ....
humanityANDpeace
... digamos, por exemplo, que há 100G de espaço não usado no dispositivo do bloco de suporte, caso a memória alocada / alocada para metadados seja automaticamente expandida (como o OP corretamente assumiu). No btrfsentanto, não é incomum que todos os dispositivos / memória de backup já tenham sido alocados em grupos de blocos de dados, o que significa que além da memória livre (para os próprios dados), erros de "sem espaço" são gerados. O usuário precisa, portanto, tentar algumas btrfs balanceque, se ainda houver espaço em outros segmentos, podem redistribuir para aumentar a falta de espaço na parte de metadados.
@home
montado em/home
, combtrbk
backups no subvolumebtrbk-snap
. Para um sistema de arquivos que suporta até 2 ^ 64 instantâneos, eu esperaria que ele tem uma maneira de aumentar o tamanho de metadados ...Respostas:
TL; DR Os metadados (se o btrfs não estiver sofrendo uma condição geral de pouco espaço) aumentarão automaticamente . Nos casos em que não existe espaço livre não alocado, o aumento automático é impedido. Se, no entanto, a parte dos dados
btrfs
tiver sido alocada com mais espaço do que precisa, será possível redistribuí-lo. Isso é chamado debalance
-ing no btrfs.Supondo que haja memória não alocada suficiente no (s) dispositivo (s) de bloco de apoio do
btrfs
, a parte Metadados do sistema de arquivos aloca - exatamente como assumido pelo OP - automaticamente a memória para aumentar / expandir os metadados.Portanto, a resposta é: Sim (desde que não haja pouca condição de memória / espaço livre no
btrfs
) , os metadados serão automaticamente aumentados, como tal:(1) Vimos algumas configurações de alocação inicial dos btrfs (em um
40GB
dispositivo)(2) Como pode ser visto, o espaço alocado no sistema de arquivos para armazenar metadados é 1,55GiB, dos quais 1,33GiB, portanto quase todos são usados (isso pode ser uma situação que ocorre no caso do OP)
(3) Agora provocamos um aumento de metadados a serem adicionados. Para fazer isso, copiamos a pasta / home usando a
--reflink=always
opção docp
comando(4) Como (como assumimos que havia muitos arquivos em / home), que muitos dados novos foram adicionados ao sistema de arquivos, que, porque
--reflink
usamos pouco espaço para os dados reais, ele usa o método Mecanismo Copy-on-Write. Em resumo, a maioria dos metadados foi adicionada ao sistema de arquivos. Podemos, portanto, ter outro olharComo pode ser visto, o espaço alocado para Metadados usado neste
btrfs
tem automaticamente aumentada expandida.Como isso é automático, normalmente não é detectado pelo usuário. No entanto, existem alguns casos, principalmente aqueles em que todo o sistema de arquivos já está praticamente cheio. Nesses casos,
btrfs
pode começar a "gaguejar" e falhar ao aumentar automaticamente o espaço alocado para os metadados. O motivo seria, por exemplo, que todo o espaço já tenha sido alocado para as partes (Dados, Sistema, Metadados, GlobalReserve). De maneira confusa, pode ser que exista espaço aparente. Um exemplo seria esta saída:Como pode ser visto, todo o sistema
40GiB
, mas a alocação está um pouco desativadabalance
, pois enquanto ainda há espaço para os dados dos novos arquivos, os Metadados (como no caso do OP) são baixos. A alocação automática de memória para os dispositivos quebtrfs
fazem o backup do sistema de arquivos não é mais possível (basta somar os totais da alocação, 38,12G + 1,55G + .. ~ = 40GiB).Como existe, no entanto, espaço livre em excesso que foi alocado para a
data
parte do sistema de arquivos, agora pode ser útil, necessário para equilibrar os btrfs. O saldo significaria redistribuir o espaço já alocado.No caso do PO, pode-se supor que, por algum motivo,
btrfs
ocorreu um desequilíbrio entre as diferentes partes da alocação.Infelizmente, o comando simples
sudo btrfs balance -dusage=0
, que em princípio deve procurar blocos vazios (alocados para dados) e colocá-los para um melhor usuário (que seria o espaço quase esgotado para os metadados), pode falhar, porque nenhum bloco de dados completamente vazio pode ser encontrado.Os
btrfs
desenvolvedores recomendam, portanto, aumentar sucessivamente o limite de uso de "quando os blocos de dados devem ser reorganizados para recuperar espaço"Portanto, se o resultado de
está mostrando nenhuma realocação, deve-se fazer alguma
A outra resposta sugeriu a influência do
btrfs
tamanho do nó, que influencia um pouco a rapidez com que os metadados aumentarão. O tamanho do nó (como mencionado na outra resposta) é definido apenas uma vez nomkfs.btrfs
momento da criação do sistema de arquivos. Em teoria, seria possível reduzir o tamanho dos metadados se fosse possível mudar para um valor menor para o tamanho do nó, se isso fosse possível (não é!). O tamanho do nó, no entanto, não poderá ajudar a expandir ou aumentar o espaço de metadados alocado de forma alguma. Em vez disso, pode ter ajudado a economizar espaço em primeiro lugar. No entanto, um tamanho de nó menor não é garantido para reduzir o tamanho dos metadados. De fato, alguns casos podem mostrar que tamanhos de nós maiores reduzem o comprimento de travessia de árvore do btrfs, pois as notas podem conter mais "links".fonte
De acordo com as perguntas frequentes no wiki do btrfs , isso não é possível e provavelmente não será implementado.
Você pode migrar o sistema de arquivos btrfs existente para um novo que tenha um maior
-n SIZE
. Você pode até adicioná-lo ao sistema de arquivos existente usando o btrfs RAID e balance, e depois remover o sistema de arquivos antigo.Consulte também a seção sobre unidades quase cheias .
fonte
btrfs filesystem df /
linha de saída dos comandosMetadata, single: total=xxGiB, used=xxx
.-n
define o tamanho de cada bloco de metadados, enquantobtrfs filesystem df
mostra o espaço usado por esses blocos. Se o autor da postagem original tiver muito espaço ocupado por metadados versus dados reais, eles deverão diminuir o tamanho de-n
, para que os blocos de metadados tenham um tamanho mínimo menor (menos espaço ocupado, mas mais fragmentação).-n
resposta "impossível definir o tamanho do nó ( opção)" é imho, e não ao ponto. Como ele pede mais "ou [o espaço alocado para metadados] é automaticamente expandido?", Sugere que não é o tamanho do nó, mas o espaço alocado no qual ele está interessado. A resposta deve, portanto, ser "sim". Você, é claro correta, dando a entender que o-n
ajuste influencia o tamanho metadados indiretamente, mas a questão parece mais voltada para a memória alocada para Metadados, não o tamanho única nota metadados ....btrfs
entanto, não é incomum que todos os dispositivos / memória de backup já tenham sido alocados em grupos de blocos de dados, o que significa que além da memória livre (para os próprios dados), erros de "sem espaço" são gerados. O usuário precisa, portanto, tentar algumasbtrfs balance
que, se ainda houver espaço em outros segmentos, podem redistribuir para aumentar a falta de espaço na parte de metadados.