Como criar um instantâneo do btrfs?

21

Minha partição / home consiste em um disco físico inteiro. Está formatado como btrfs. Eu quero tirar uma foto. Estou confuso em relação à nomenclatura de subvolume, em particular.

Estou ciente de que existem questões semelhantes, mas cada pergunta semelhante parece estar fazendo algo diferente do que estou perguntando (e elas são mais antigas, o que significa provavelmente desatualizado, dado o rápido desenvolvimento de btrfs). Por exemplo, a resposta para essa questão aparentemente não é a resposta para minha pergunta porque minha partição / home é um volume separado e a página man do btrfs mostra um comando diferente para criar instantâneos agora.

Outro problema parecido, nenhuma solução sólida. /groups.google.com/group/uk.comp.os.linux/browse_thread/thread/849e855e9e25552b/cec74000de2b49cd?lnk=raot">alguém mais confuso que eu sobre os problemas de nomeação

Minha pergunta:

Começando de forma simples: este é o comando correto para tirar um instantâneo simples da minha partição inicial?

btrfs subvolume snapshot /home/@home /home/@home_snapshot_20120421

Eu fui muito corajoso e testei e não funciona. O erro é error accessing /home/@home . Como mostrado abaixo, @home está listado.

Estou obviamente confuso em nomes de subvolume. Preciso usá-los na criação de instantâneos? Alguns exemplos mostram tirar instantâneos de home usando /home como o parâmetro de origem, mas com base em exemplos de volumes de raiz, parece-me que preciso usar /home/@home .

Este comando funcionaria? E se não, por quê?

btrfs subvolume snapshot /home /home/@home_snapshot_20120421

O @ é apenas uma convenção de nomenclatura? É significativo em tudo?

Veja alguns resultados que podem ser relevantes:

btrfs subvolume list /home
ID 256 top level 5 path @home

Eu não tenho certeza do que isso significa exatamente. Quando tento btrfs device scan , ocorre um erro (por exemplo, não é possível verificar o dispositivo / dev / sda1). Meu sistema de arquivos não possui erros. Está tudo bem.

Aqui estão minhas partições. Em resposta a uma resposta, no / home não é minha única partição btrfs.

/dev/sda1: (boot partition) TYPE="ext2"  
/dev/sda2: (root partition) TYPE="btrfs"  
/dev/sdb1: (home partition) TYPE="btrfs"  
/dev/sdc1: (shared partition) TYPE="btrfs"  
/dev/sdc2: TYPE="swap"  
    
por MountainX 22.04.2012 / 00:52

3 respostas

18

Qual é o comando correto para criar um instantâneo da minha partição inicial no Ubuntu 12.04?

Dado que o home está em uma partição btrfs e é montado como / home, o comando correto é:

sudo btrfs subvolume snapshot /home/ /home/<any_name_you_choose_for_the_snapshot>

Aqui estão os meus resultados:

Antes de executar o comando hoje:

$ btrfs subvolume list /home  
ID 256 top level 5 path @home  
ID 257 top level 5 path @home/@snapshot_20120521_1936

O comando:

$ sudo btrfs subvolume snapshot /home/ /home/@snapshot_20120611_1307  
Create a snapshot of '/home/' in '/home/@snapshot_20120611_1307'

Depois de executar o comando hoje:

$ btrfs subvolume list /home  
ID 256 top level 5 path @home  
ID 257 top level 5 path @home/@snapshot_20120521_1936  
ID 258 top level 5 path @home/@snapshot_20120611_1307

O único problema com este método é que os instantâneos aparecem quando você ls (list) / home.

O Wiki da comunidade Ubuntu foi atualizado com uma solução para isso. Aqui está:

Como trabalhar com instantâneos no layout do Ubuntu

Para trabalhar com instantâneos de / ou / home no layout do Ubuntu, é muito conveniente montar o sistema de arquivos btrfs em um local separado e trabalhar a partir da parte superior da árvore btrfs, em vez dos subvolumes montados. & lt; - essa é a solução. Infelizmente, não é conveniente .

sudo mount /dev/sdX# /mnt

Para criar um instantâneo, use a mesma sintaxe que usei acima:

sudo btrfs subvolume snapshot /mnt/@ /mnt/@_snapshot

Isso criará um instantâneo do @ subvolume chamado @_snapshot localizado também no topo da árvore btrfs. Como está no topo da árvore, ele não será exibido ao listar arquivos em um volume montado.

Para reverter para um instantâneo, basta alterar seu nome para o nome que o ubuntu monta e reinicializa. Veja como alterar o nome:

sudo mv /mnt/@ /mnt/@_badroot
sudo mv /mnt/@_snapshot /mnt/@

Para excluir um instantâneo, use:

sudo btrfs subvolume delete /mnt/@_badroot

Os instantâneos do btrfs são subvolumes em si mesmos e autocontidos, excluindo o antigo @ subvolume como este é bom, desde que tenhamos uma substituição.

NOTA: O comando btrfs-tools set-default quebrará o layout do Ubuntu.

    
por MountainX 11.06.2012 / 19:17
10

Ok, as primeiras coisas primeiro:

  • O nome do subvolume que você está vendo é @home , como mostrado por btrfs subvolume list /home . Está montado em /home . @home é o nome do subvolume e também tem o ID 256, então provavelmente o seu / home está formatado como btrfs.

  • Agora, para criar um instantâneo do @home, você precisa emitir: sudo btrfs subvolume snapshot /home/ /home/@home_snapshot_20120421

  • O subvolume pode ter qualquer nome. O @ é a convenção do Ubuntu no momento da instalação. (Se você usa apt-btrfs-snapshot , o subvolume raiz deve ser nomeado @ btw.) O wiki da comunidade recomenda enfaticamente manter @ como root e @home como inicial, pois é montado dessa forma. Isto é especialmente importante se você quiser reverter: você NÃO deve usar o btrfs subvolume set-default (não a sintaxe destacada por propósito).

  • Para btrfs device scan , você precisa usar sudo .

  • Para excluir um subvolume, use sudo btrfs subvolume delete @home_snapshot_20120421

Todos os comandos btrfs podem ser abreviados desde que não sejam ambíguos, portanto, por exemplo, sudo btrfs device scan pode ser truncado para sudo btrfs d s , sudo btrfs dev sc ou qualquer coisa entre eles.

Espero que tenham respondido às suas perguntas. Existem algumas ferramentas para fazer backups regulares, rotação de snapshots-btrfs é um exemplo. Use-os com cuidado, pois nenhum deles é realmente maduro ou ganhou tração suficiente, ou seja, eles podem conter bugs.

    
por turbo 11.06.2012 / 18:16
10

Instale o pacote apt-btrfs-snapshot e use seus subcomandos list , snapshot , delete e set-default .

Este é um script que envolve os comandos btrfs do nível inferior. Ele funciona primeiro montando o sistema de arquivos raiz btrfs em algum lugar. Com isso quero dizer a raiz real, em oposição ao /@ subvolume que é normalmente montado como / . Em outras palavras, você precisa executar mount /dev/sda1 /mnt para poder visualizar os subvolumes que serão listados como /mnt/@ , /mnt/@home e quaisquer outros que você tenha criado. A partir daí, você pode usar btrfs subvolume snapshot /mnt/@home @snapshot-today , o que criará um instantâneo de /@home named /@snapshot-today . Compare isso com a execução de btrfs subvolume snapshot /home /home/@snapshot_today , que cria o instantâneo como um filho de /@home , portanto ele aparece quando você é ls /home e seu nome real é /@home/@snapshot-today .

Reverter um instantâneo é apenas uma simples operação de renomeação: mv /mnt/@home @backup ; mv /mnt/@snapshot-today @home . Da próxima vez que você inicializar, quando for montar /@home em /home , ele encontrará o instantâneo.

É um pouco difícil de entender porque você deve ter em mente a diferença entre como o btrfs vê as coisas e como o kernel vê as coisas, o que é influenciado pelas opções de montagem (o subvol = argumento especificamente).

    
por psusi 11.06.2012 / 20:16

Tags