Como criar um instantâneo btrfs?

22

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

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

outro problema semelhante, nenhuma solução sólida .
alguém tão confuso quanto eu sobre os problemas de nomeação

Minha pergunta:

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

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

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

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

Esse comando funcionaria? E se não, por que?

btrfs subvolume snapshot /home /home/@home_snapshot_20120421

É @apenas uma convenção de nomenclatura? É significativo?

Aqui estão alguns resultados que podem ser relevantes:

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

Não tenho certeza do que isso significa exatamente. Quando tento btrfs device scan, ocorre um erro (por exemplo, incapaz de verificar o dispositivo / dev / sda1). Meu sistema de arquivos não possui erros. Tudo está 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"  
MountainX para Monica Cellio
fonte
a comunidade vai decidir sobre repo ...
Um Zero

Respostas:

19

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

Dado o fato de que o home está em uma partição btrfs e está 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 esse método é que os instantâneos são exibidos quando você é (lista) / home.

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

Como trabalhar com capturas instantâneas 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 do btrfs, e não dos subvolumes montados. <- 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 na parte superior da árvore do btrfs. Como está no topo da árvore, não será exibido ao listar arquivos em um volume montado.

Para reverter para um instantâneo, basta alterar o nome para o nome que o ubuntu monta e reinicia. 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 snapshots btrfs são subvolumes em si mesmos e independentes, excluindo o subvolume @ antigo dessa maneira, desde que tenhamos uma substituição.

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

MountainX para Monica Cellio
fonte
Então você está aí, certo? Agora você deve conseguir montar seus instantâneos.
turbo
Na verdade, eu ainda não tentei montá-los. E acabei de ver a resposta da psusi sobre o pacote apt-btrfs-snapshot. Isso parece interessante, certo?
MountainX para Monica Cellio
Sim, eu mencionei isso no terceiro ponto também. Desculpe teve que apontar para fora;)
turbo
Eu sugiro que você marque sua solução como resposta então.
turbo
Existe uma solução para os instantâneos que aparecem quando você está / em casa. Estou editando minha resposta com as informações agora.
MountainX para Monica Cellio
11

Ok, as primeiras coisas primeiro:

  • O nome do subvolume que você está visualizando é @homemostrado por btrfs subvolume list /home. Está montado /home. @home é o nome do subvolume e também possui o ID 256; portanto, provavelmente apenas sua / home está formatada como btrfs.

  • Agora, para criar um instantâneo do @home, você deve 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ê usar apt-btrfs-snapshoto subvolume raiz, terá que ser chamado de @btw.) O wiki da comunidade recomenda fortemente manter @como root e @homecomo home, pois é montado dessa maneira. Isso é especialmente importante se você deseja reverter: NÃO deve usar o subtrolume btrfs set-default (não sintaxe destacada por objetivo).

  • Para btrfs device scanvocê ter que usar sudo.

  • Para excluir um subvolume, você pode usar 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 scanpodem ser truncados para sudo btrfs d s, sudo btrfs dev scou qualquer outro meio.

Espero que tenha respondido suas perguntas. Existem algumas ferramentas disponíveis para fazer backups regulares, o btrfs-snapshot-rotation é um exemplo. Use aqueles com cautela, pois nenhum deles é realmente maduro ou ganhou tração suficiente, ou seja, eles podem muito bem conter bugs.

turbo
fonte
Eu recebo um erro:$ sudo btrfs subvolume snapshot @home home/@snapshot_20120611_1257 ERROR: error accessing '@home'
MountainX para Monica Cellio
Além disso, ainda não tive sucesso btrfs device scan. Qualquer variante, incluindo o uso, sudoapresenta o erro "ERRO: Incapaz de verificar o dispositivo '/ dev / sdX'", em que X é um nome válido como a, a1, b, etc.
MountainX para Monica Cellio
@OneZero: Ainda não tenho todas as respostas, mas descobri o comando correto para criar um instantâneo da minha partição pessoal no Ubuntu 12.04 e forneci essas informações como resposta abaixo.
MountainX para Monica Cellio
isso é realmente estranho. Eu verifiquei com minha partição btrfs btrfs sub snap @ /mnt/randome funcionou para mim. Então, novamente, eu estava em / mnt onde @ foi montado. Desculpe pela confusão
turbo
@ turbo: Sua resposta foi muito útil. Não há necessidade de pedir desculpas por tentar ajudar. Até as páginas do Ubuntu não são claras. Nós vamos descobrir tudo eventualmente.
MountainX para Monica Cellio
10

Instalar o apt-btrfs-snapshotpacote, e usar seus subcomandos list, snapshot, deletee set-default.

Este é um script que agrupa os btrfscomandos de 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 /mntpara que possa ver os subvolumes que serão listados como /mnt/@, /mnt/@homee quaisquer outros que você criou. A partir daí, você pode btrfs subvolume snapshot /mnt/@home @snapshot-today, o que criará um instantâneo de /@homenomeado /@snapshot-today. Compare isso com a execução btrfs subvolume snapshot /home /home/@snapshot_today, que em vez disso cria o instantâneo como filho de /@home, portanto, ele aparece quando você ls /homee seu nome verdadeiro são /@home/@snapshot-today.

Revertendo um instantâneo é apenas uma operação de renomeação simples: mv /mnt/@home @backup ; mv /mnt/@snapshot-today @home. A próxima vez que você iniciar, quando ele vai montar /@homeem /home, ele vai encontrar o instantâneo.

É um pouco complicado 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, que é influenciado pelas opções de montagem (o subvol = argumento especificamente).

psusi
fonte