questões subvolume Btrfs

2

Apenas algumas perguntas sobre o Btrfs:

  1. Preciso montar um sistema de arquivos Btrfs antes de criar subvolumes?
  2. Posso converter facilmente um diretório existente em um subvolume? (ou seja, se eu quiser transformar "/ home" em um subvolume separado, posso ir apenas mk_btrfs_subfolder /home (ou seja qual for o comando), em vez de ter que criar um novo subvolume vazio e copiar tudo de volta?

Os comandos para fazer o acima seria bom, mas não necessário, apenas sim / não vai ficar bem e eu posso Google como.

    
por Clinton 04.02.2013 / 04:24

4 respostas

1
  1. Sim.
  2. Não.

Pelo menos não no momento.

por 07.03.2013 / 18:55
4

Sim, você precisa montá-lo e, se quiser converter um diretório em um subvolume, o que você pode fazer é criar um instantâneo usando

btrfs su sn <name of subvolume containing folder> @new_subvol

Então você poderia entrar no subvolume e excluir tudo o que não fosse @ new_subvol / home e mover tudo em casa para a raiz do novo subvolume com algo como

mv @new_subvol/home/* @new_subvol

Em seguida, você pode excluir o diretório original e colocar o instantâneo recém-criado em seu lugar.

    
por 26.06.2015 / 07:47
1

Can I easily convert an existing directory into a subvolume? (i.e. if I want to make "/home" a separate subvolume can I just go mk_btrfs_subfolder /home (or whatever the command is), instead of having to make a new empty subvolume and copying everything over?

Para subvolumes grandes, a maneira menos ruim de fazer isso é criando o subvolume como um instantâneo e, em seguida, limpando as coisas. Isso evita, na verdade, copiar quaisquer dados de arquivo, embora isso signifique um monte de atualizações de metadados que seriam desnecessárias se isso fosse suportado nativamente.

Andrew menciona isso em sua resposta, mas não dá um exemplo completo, então aqui está um. Eu tomo uma abordagem um pouco diferente dele movendo primeiro os diretórios antigos para que eu possa criar os subvolumes em seus locais finais.

cd /build/
mkdir xxxx
mv *-rpi-staging xxxx
btrfs subvolume snapshot /build /build/wheezy-armhf-rpi-staging
btrfs subvolume snapshot /build /build/jessie-armhf-rpi-staging
btrfs subvolume snapshot /build /build/stretch-armhf-rpi-staging
btrfs subvolume snapshot /build /build/buster-armhf-rpi-staging
cd /build/wheezy-armhf-rpi-staging/
find -maxdepth 1 ! -name xxxx ! -name . -exec rm -rf {} +
(shopt -s dotglob; mv -- xxxx/wheezy-armhf-rpi-staging/* . )
rm -rf xxxx
cd /build/jessie-armhf-rpi-staging/
find -maxdepth 1 ! -name xxxx ! -name . -exec rm -rf {} +
(shopt -s dotglob; mv -- xxxx/jessie-armhf-rpi-staging/* . )
rm -rf xxxx
cd /build/stretch-armhf-rpi-staging/
find -maxdepth 1 ! -name xxxx ! -name . -exec rm -rf {} +
(shopt -s dotglob; mv -- xxxx/stretch-armhf-rpi-staging/* . )
rm -rf xxxx
cd /build/buster-armhf-rpi-staging/
find -maxdepth 1 ! -name xxxx ! -name . -exec rm -rf {} +
(shopt -s dotglob; mv -- xxxx/buster-armhf-rpi-staging/* . )
rm -rf xxxx

Notas sobre este exemplo trabalhado.

  1. / build é um sistema de arquivos btrfs.
  2. wheezy-armhf-rpi-staging jessie-armhf-rpi-staging stretch-armhf-rpi-staging e buster-armhf-rpi-staging são os diretórios a serem convertidos.
  3. este exemplo trabalhado é uma versão limpa do que eu realmente fiz, se houver algum erro nele, por favor, aponte-os para fora.
  4. nenhum arquivo / diretório chamado xxxx deve existir diretamente sob os diretórios que você deseja converter ou diretamente sob o diretório de nível superior no qual a conversão está ocorrendo.
  5. Eu recomendaria que, se você fizer isso em um sistema com dados importantes, crie primeiro um instantâneo extra para recuperar se estragar tudo.
  6. O shell usado é considerado como bash.
por 23.11.2017 / 00:31
1

Can I easily convert an existing directory into a subvolume? (i.e. if I want to make "/home" a separate subvolume can I just go mk_btrfs_subfolder /home (or whatever the command is), instead of having to make a new empty subvolume and copying everything over?

Eu tive uma versão específica deste problema: Eu tenho um par de subvolumes btrfs de nível superior no meu sistema de arquivos que são capturados por um utilitário chamado snapper em uma programação específica. Infelizmente, isso pode criar bastante inchaço quando se trata de diretórios que mudam constantemente, dos quais eu tinha muitos que eu queria excluir.

Na configuração inicial, excluir caminhos específicos de instantâneos é fácil: basta criar um novo subvolume btrfs no caminho em questão. Infelizmente, é um pouco mais complicado quando você tem um sistema em execução.

Eu achei que isso não seria muito difícil de escrever, então comecei um pequeno script bash. E, claro, esse pequeno script cresceu rapidamente para quase 100 linhas, quando comecei a lidar com diferentes tipos de entrada, bloqueios de arquivos, permissões, etc.

Se você tiver um problema semelhante (sistema de arquivos btrfs gerenciado pelo snapper que gostaria de remover), convido-o a usar (por sua conta e risco): link

    
por 08.04.2018 / 22:42

Tags