web-dev-qa-db-ja.com

btrfsスナップショットを作成する方法は?

/ homeパーティションは物理ディスク全体で構成されています。 btrfsとしてフォーマットされています。スナップショットを撮りたいです。特にサブボリュームの命名に関して混乱しています。

私は似たような質問があることを知っていますが、それぞれの似た質問は私が尋ねているものと異なる異なるを求めているようですbtrfsの急速な開発を考えると、おそらく時代遅れを意味します)。たとえば、 この質問 に対する回答は、私の質問に対する回答ではないようです。これは、/ homeパーティションが別のボリュームであり、btrfsのmanページにスナップショットを作成するための別のコマンドが表示されるためです。

別の同様の問題、固執なし
ネーミングの問題で私と同じくらい混乱している人

私の質問:

シンプルな開始:これは、ホームパーティションのシンプルなスナップショットを撮る正しいコマンドですか?

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

私は本当に勇敢になってテストしましたが、うまくいきません。エラーはerror accessing /home/@homeです。以下に示すように、@ homeがリストされます。

私は明らかにサブボリューム名で混乱しています。スナップショットの作成にそれらを使用する必要がありますか?ソースパラメータとして/homeを使用して家のスナップショットを撮る例を示していますが、ルートボリュームの例に基づいて、/home/@homeを使用する必要があるように思われます。

このコマンドは機能しますか?そうでない場合、なぜですか?

btrfs subvolume snapshot /home /home/@home_snapshot_20120421

@は単なる命名規則ですか?それはまったく意味がありますか?

関連する可能性のある出力を次に示します。

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

それが何を意味するのか正確にはわかりません。 btrfs device scanを試すとエラーが発生します(たとえば、デバイス/ dev/sda1をスキャンできません)。ファイルシステムにエラーはありません。すべて順調。

これが私のパーティションです。 1つの応答に対して、/ homeだけが私の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"  
22
MountainX

Ubuntu 12.04でホームパーティションのスナップショットを作成する正しいコマンドは何ですか?

ホームがbtrfsパーティション上にあり、/ homeとしてマウントされているという事実を考えると、正しいコマンドは次のとおりです。

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

私の結果は次のとおりです。

今日コマンドを実行する前に:

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

コマンド:

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

今日コマンドを実行した後:

$ 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

この方法の唯一の問題は、/ homeをls(一覧表示)するとスナップショットが表示されることです。

UbuntuコミュニティWikiは、このためのソリューションで更新されました。ここにあります:

buntuのレイアウトでスナップショットを操作する方法

Ubuntuレイアウトで/または/ homeのスナップショットを操作するには、btrfsファイルシステムを別の場所にマウントし、マウントされたサブボリュームからではなく、btrfsツリーの最上部から作業することが非常に便利です。 <-それが解決策です。残念ながら、便利ではありません

Sudo mount /dev/sdX# /mnt

スナップショットを作成するには、上記で使用したものと同じ構文を使用します。

Sudo btrfs subvolume snapshot /mnt/@ /mnt/@_snapshot

これにより、btrfsツリーの最上部にある@_snapshotという名前の@サブボリュームのスナップショットが作成されます。ツリーの最上部にあるため、マウントされたボリューム内のファイルをリストするときに表示されません。

スナップショットにロールバックするには、その名前をubuntuがマウントする名前に変更して再起動するだけです。名前を変更する方法は次のとおりです。

Sudo mv /mnt/@ /mnt/@_badroot
Sudo mv /mnt/@_snapshot /mnt/@

スナップショットを削除するには:

Sudo btrfs subvolume delete /mnt/@_badroot

btrfsスナップショットはそれ自体がサブボリュームであり、自己完結型であり、古い@サブボリュームをこのように削除しても問題ありませんが、交換が必要です。

注:btrfs-toolsコマンドset-defaultは、Ubuntuのレイアウトを破壊します。

19
MountainX

まず最初に、

  • 表示しているサブボリュームの名前は、@homeで示されるbtrfs subvolume list /homeです。 /homeにマウントされています。 @homeはサブボリュームの名前であり、ID 256も持っているため、ほとんどの場合、/ homeのみがbtrfsとしてフォーマットされます。

  • @homeのスナップショットを作成するには、次を発行する必要があります:Sudo btrfs subvolume snapshot /home/ /home/@home_snapshot_20120421

  • サブボリュームには任意の名前を付けることができます。 @は、インストール時のUbuntuの規則です。 (apt-btrfs-snapshotを使用する場合、ルートサブボリュームの名前は@である必要があります。) コミュニティwiki は、@をルートとして、@homeを保持することを強くお勧めします。それがそのようにマウントされているので、家として。これは、ロールバックする場合に特に重要です。btrfssubvolume set-defaultを使用しないでください(構文は目的によって強調表示されません)。

  • btrfs device scanには、Sudoを使用する必要があります。

  • サブボリュームを削除するには、Sudo btrfs subvolume delete @home_snapshot_20120421を使用できます

すべてのbtrfsコマンドは、明確である限り省略できます。たとえば、Sudo btrfs device scanSudo btrfs d sSudo btrfs dev sc、またはその間の任意の値に切り捨てることができます。

あなたの質問に答えたと思います。定期的なバックアップを取るためのツールがいくつかあります。 btrfs-snapshot-rotation はその一例です。それらはどれも本当に成熟していないか、十分な牽引力を得ていないため、注意して使用してください。

11
turbo

apt-btrfs-snapshotパッケージをインストールし、そのサブコマンドlistsnapshotdeleteおよびset-defaultを使用します。

これは、下位レベルのbtrfsコマンドをラップするスクリプトです。最初にbtrfsルートファイルシステムをどこかにマウントすることで機能します。それは、通常/@としてマウントされる/サブボリュームとは対照的に、本当のルートを意味します。言い換えると、mount /dev/sda1 /mnt/mnt/@、および作成した他のサブボリュームとしてリストされるサブボリュームを表示できるように、/mnt/@homeを実行する必要があります。そこからbtrfs subvolume snapshot /mnt/@home @snapshot-todayを実行すると、/@homeという名前の/@snapshot-todayのスナップショットが作成されます。これをbtrfs subvolume snapshot /home /home/@snapshot_todayの実行と比較してください。これは、代わりに/@homeの子としてスナップショットを作成します。したがって、ls /homeで実際の名前が/@home/@snapshot-todayの場合に表示されます。

スナップショットのロールバックは、単純な名前変更操作です:mv /mnt/@home @backup ; mv /mnt/@snapshot-today @home。次回の起動時に、/@home内の/homeをマウントすると、スナップショットが検出されます。

マウントオプション(具体的にはsubvol =引数)の影響を受けるbtrfsの見方とカーネルの見方の違いに留意する必要があるため、頭を包むのは少し難しいです。

10
psusi