Como renomear um subvolume BTRFS?

21

Eu tenho um sistema de arquivos BTRFS com um conjunto de subvolumes. Por enquanto, tudo bem. Eu preciso mudar o nome de um subvolume, infelizmente o programa btrfs não me permite renomear um subvolume. Pesquisando com o Google produziu alguns resultados, um disse que eu posso apenas mv , o outro disse que eu posso apenas snapshot para um novo nome e excluir o subvolume antigo. Antes de travar minha partição e ter que recarregá-la a partir do backup (é bem grande), minha pergunta é:

  • Qual é a melhor maneira de renomear um subvolume?
  • Há problema em apenas mv ou invalida algumas estruturas internas?
  • Está fazendo um novo instantâneo e removendo o antigo subvolume do caminho, ou isso tem algumas desvantagens?

Eu sei que tudo ainda é experimental, mas para meus propósitos tem funcionado muito bem (até agora, e tenho backups incrementais para cada dia).

    
por hochl 23.03.2012 / 16:44

3 respostas

12

Apenas mv . Essa é a maneira recomendada na documentação da comunidade do Ubuntu .

E para esclarecer melhor por que esse é o caminho certo para fazer isso, aqui está uma citação do guia sysadmin btrfs:

Snapshots

A snapshot is simply a subvolume that shares its data (and metadata) with some other subvolume, using btrfs's COW capabilities. Once a [writable] snapshot is made, there is no difference in status between the original subvolume, and the new snapshot subvolume. To roll back to a snapshot, unmount the modified original subvolume, and mount the snapshot in its place. At this point, the original subvolume may be deleted if wished. Since a snapshot is a subvolume, snapshots of snapshots are also possible.

    
por 22.04.2012 / 01:26
6

existem algumas coisas importantes a serem observadas. Os nomes:

btrfs Subvolume - contêiner de dados independente inside sistema de arquivos. Ele é representado como diretório do FS existente. Se você criar um novo subvolume, ele estará vazio, pronto para usar o bloco de dados lógicos dentro do sistema de arquivos. Muito conveniente usar onde os dados devem ser separados logicamente diferentes VMs ou diferentes clientes em diferentes subvolumes. Isso permite a remoção very fast do bloco de dados lógico all com apenas o comando delete subvolume.

Snapshot de btrfs - uma cópia de existing subvolume com todos os seus dados no momento em que o snapshot é feito. Pode ser usado como backup operacional para reverter configurações ou alterações, por exemplo, faça um instantâneo de subvolume, faça mudanças (VM ou dados), teste se tudo estiver bem, depois de algum período de carência remova o instantâneo. Importante notar: as capturas instantâneas podem ser somente de leitura ( -r switch) e, portanto, podem ser usadas como blocos de incremento de alterações de FS e possivelmente transferidas para absolutamente outro BTRFS!

Current (2016-12-30) Limitações do BTRFS:

Copiar ou mover dados entre subvolumes, por ex. mv dir1/dataset1 dir_subvolume1/ produz todo o io real para copiar dados para outro subvolume e, em caso de movimentação, remover o original. E muito cópia eficiente de toneladas de dados apenas fazendo referências e, portanto, usando o recurso COW do BTRFS:

cp -a --reflink=always dir1/dataset1 dir_subvolume1/

e, se necessário:

rm -rf dir1/dataset1

Somente leitura A captura instantânea de subvolume pode ser renomeada (movida com mv ) no nível do diretório existente, mas não pode ser renomeada / movida para um nível de subdiretório diferente. por exemplo. mv /btrfs/subvol_snap1 /btrfs/.snaphots não é possível, produz pouco erro explicado: mv: cannot move 'subvol_snap1' to '.snapshots/subvol_snap1': Read-only file system . Para poder mover um instantâneo desse tipo, você precisa criar um novo instantâneo somente leitura do instantâneo existente somente leitura para o novo local preferido e, em seguida, remover o antigo:

btrfs sub snap -r /btrfs/subvol_snap1 /btrfs/.snaphots/subvol_snap1
btrfs sub del /btrfs/subvol_snap1

Apenas para uma transmissão mais fácil:

btrfs sub list /btrfs

Espero que isso poupe tempo para todos os novos fãs do btrfs:)

    
por 30.12.2016 / 12:27
4

Se você quiser renomear o volume raiz para um subvolume aninhado, será necessário fazer um instantâneo e, em seguida, fazer um find $ROOT_VOL -xdev -delete para remover o conteúdo anterior do volume raiz. A manipulação reversa (renomeando um subvolume para o volume raiz) não parece possível.

    
por 11.09.2012 / 18:26