BTRFS は、高度な機能で実装されたオープンソースの最新のファイルシステムです。 コピーオンライト(CoW)メカニズムで動作します。
これはメインラインのLinuxカーネルに含まれています。 Btrfsの注目すべき機能は、コピーオンライトのデータとメタデータ、スナップショット、組み込みのRAIDサポート、オンラインでのサイズ変更と最適化、透過的な圧縮、小さなファイルの効率的なストレージなどです。
スナップショット Btrfsの特定の時間コピーです サブボリューム。 スナップショットはデフォルトで書き込み可能です。 Btrfsを使用すると、バックアップを取るのに役立つ読み取り可能なスナップショットを作成できます。
このチュートリアルでは、Btrfsスナップショット、増分バックアップを作成し、それを復元する方法を学習します。
システムインフォメーション
私は使っている Fedora そして今 Fedora 33にはデフォルトでBtrfsがあります。 私のシステムには、20GBのブートディスクと10GBの追加ディスクがあり、Btrfsファイルシステムが搭載されています。
ここで、sdaはブートディスクであり、sdbはbtrfsスナップショットに使用する追加のディスクです。
ディスク情報の一覧表示:
$ ls -l /dev | grep sd
brw-rw----. 1 root disk 8, 0 Nov 21 08:42 sda
brw-rw----. 1 root disk 8, 1 Nov 21 08:42 sda1
brw-rw----. 1 root disk 8, 2 Nov 21 08:42 sda2
brw-rw----. 1 root disk 8, 16 Nov 21 08:57 sdb
brw-rw----. 1 root disk 8, 17 Nov 21 08:57 sdb1
説明のために、LVMを作成し、btrfsファイルシステムを使用して/ mnt / linoxide_btrfs1にマウントしました。
作成されたPV、VG、およびLVのリスト:
$ pvs && vgs && lvs
PV VG Fmt Attr PSize PFree
/dev/sdb1 linoxide_vg lvm2 a-- <10.00g <5.00g
VG #PV #LV #SN Attr VSize VFree
linoxide_vg 1 1 0 wz--n- <10.00g <5.00g
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
linoxide_lv1 linoxide_vg -wi-a----- 5.00g
マウント情報の出力:
$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 286M 0 286M 0% /dev
tmpfs 294M 0 294M 0% /dev/shm
tmpfs 294M 4.5M 289M 2% /run
tmpfs 294M 0 294M 0% /sys/fs/cgroup
/dev/sda2 20G 2.3G 18G 12% /
/dev/sda1 200M 12M 189M 6% /boot/efi
tmpfs 59M 0 59M 0% /run/user/1000
tmpfs 59M 0 59M 0% /run/user/0
/dev/mapper/linoxide_vg-linoxide_lv1 5.0G 17M 4.5G 1% /mnt/linoxide_btrfs1
Btrfsスナップショット
btrfsスナップショットを作成するには、最初に サブボリューム。
手順1.サブボリュームを作成する
‘/ mnt / linoxide_btrfs1 / subvol1’という名前のサブボリュームを作成するには、次のコマンドを実行します。
$ sudo btrfs subvolume create /mnt/linoxide_btrfs1/subvol1
ステップ2.ファイルをサブボリュームにコピーします
いくつかのデータファイルをサブボリュームにコピーしましょう。 次のコマンドは、いくつかのファイルを/ etc /からsubvol1にコピーします。
$ cd /mnt/linoxide_btrfs1/subvol1
$ cp /etc/[abc]* .
$ ls -l
-rw-r--r--. 1 root root 16 Nov 21 09:25 adjtime
-rw-r--r--. 1 root root 1529 Nov 21 09:25 aliases
-rw-r--r--. 1 root root 12288 Nov 21 09:25 aliases.db
-rw-------. 1 root root 541 Nov 21 09:25 anacrontab
-rw-r--r--. 1 root root 55 Nov 21 09:25 asound.conf
-rw-r--r--. 1 root root 2853 Nov 21 09:25 bashrc
-rw-r--r--. 1 root root 112 Nov 21 09:25 boto.cfg
-rw-r--r--. 1 root root 37 Nov 21 09:25 centos-release
-rw-r--r--. 1 root root 51 Nov 21 09:25 centos-release-upstream
-rw-r--r--. 1 root root 1053 Nov 21 09:25 chrony.conf
ステップ3.スナップショットを作成する
subvolume1(/ mnt / linoxide_btrfs1 / subvol1)のスナップショットを作成しましょう。
に注意してください -r
読み取り専用のフラグ。 send / receiveコマンド(次のセクションで説明)を使用する場合は、必ず読み取り専用としてスナップショットを作成してください。
‘/mnt/linoxide_btrfs1/.snapshots/subvol1-day1’に ‘/ mnt / linoxide_btrfs1 / subvol1’の読み取り専用スナップショットを作成するには、次のコマンドを実行します。
$ sudo btrfs subvolume snapshot -r /mnt/linoxide_btrfs1/subvol1 /mnt/linoxide_btrfs1/.snapshots/subvol1-day1
スナップショットの内容を確認します。
$ cd .snapshots/
$ ls -l
drwxr-xr-x. 1 root root 446 Nov 21 09:25 subvol1-day1
$ cd subvol1-day1/
$ ls -l
-rw-r--r--. 1 root root 16 Nov 21 09:25 adjtime
-rw-r--r--. 1 root root 1529 Nov 21 09:25 aliases
-rw-r--r--. 1 root root 12288 Nov 21 09:25 aliases.db
-rw-------. 1 root root 541 Nov 21 09:25 anacrontab
-rw-r--r--. 1 root root 55 Nov 21 09:25 asound.conf
-rw-r--r--. 1 root root 2853 Nov 21 09:25 bashrc
-rw-r--r--. 1 root root 112 Nov 21 09:25 boto.cfg
-rw-r--r--. 1 root root 37 Nov 21 09:25 centos-release
-rw-r--r--. 1 root root 51 Nov 21 09:25 centos-release-upstream
-rw-r--r--. 1 root root 1053 Nov 21 09:25 chrony.conf
sendを使用したBtrfsスナップショット
サブボリュームと同じディスクにスナップショットを作成しましたが、これはバックアップ戦略には適していません。ディスクの破損などの災害が発生した場合、リカバリオプションが失われます。
BTRFSにはそのためのソリューションがあります。 コマンドbtrfssendおよびbtrfsreceiveを使用して、スナップショットをリモートシステムまたは外付けハードドライブに送信できます。 それらはSSHに基づいています。 リモートシステムもBTRFSとしてフォーマットする必要があります。
で説明させてください example。
/ mnt / linoxide_btrfs2にマウントされたbtrfsファイルシステムを使用して新しいディスクを作成します。
$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 286M 0 286M 0% /dev
tmpfs 294M 0 294M 0% /dev/shm
tmpfs 294M 4.5M 289M 2% /run
tmpfs 294M 0 294M 0% /sys/fs/cgroup
/dev/sda2 20G 2.3G 18G 12% /
/dev/sda1 200M 12M 189M 6% /boot/efi
tmpfs 59M 0 59M 0% /run/user/1000
tmpfs 59M 0 59M 0% /run/user/0
/dev/mapper/linoxide_vg-linoxide_lv1 5.0G 17M 4.5G 1% /mnt/linoxide_btrfs1
/dev/mapper/linoxide_vg2-linoxide_lv2 5.0G 17M 4.5G 1% /mnt/linoxide_btrfs2
これで example、 宛先Btrfsボリューム / mnt / linoxide_btrfs2としてマウントされた2番目のbtrfsディスクです。
スナップショットをリモート宛先に送信するための次のコマンド:
$ sudo sudo btrfs send /mnt/linoxide_btrfs1/.snapshots/subvol1-day1 | sudo btrfs receive /mnt/linoxide_btrfs2
At subvol /mnt/linoxide_btrfs1/.snapshots/subvol1-day1
At subvol subvol1-day1
データファイルを確認します。
$ cd /mnt/linoxide_btrfs2/
$ ls -l
drwxr-xr-x. 1 root root 446 Nov 21 09:25 subvol1-day1
$ cd subvol1-day1/
$ ls -l
-rw-r--r--. 1 root root 16 Nov 21 09:25 adjtime
-rw-r--r--. 1 root root 1529 Nov 21 09:25 aliases
-rw-r--r--. 1 root root 12288 Nov 21 09:25 aliases.db
-rw-------. 1 root root 541 Nov 21 09:25 anacrontab
-rw-r--r--. 1 root root 55 Nov 21 09:25 asound.conf
-rw-r--r--. 1 root root 2853 Nov 21 09:25 bashrc
-rw-r--r--. 1 root root 112 Nov 21 09:25 boto.cfg
-rw-r--r--. 1 root root 37 Nov 21 09:25 centos-release
-rw-r--r--. 1 root root 51 Nov 21 09:25 centos-release-upstream
-rw-r--r--. 1 root root 1053 Nov 21 09:25 chrony.conf
今、あなたは フルバックアップ DRとしても使用できます。
増分バックアップ
スナップショットは、増分的にバックアップを送信することもできます。 一部のディレクトリの名前が変更されると、Rsyncはディレクトリを削除してすべてのデータを再度転送しますが、BTRFは数バイトのメタデータを転送するだけです。
別のスナップショットを撮りましょう。
$ sudo btrfs subvolume snapshot -r /mnt/linoxide_btrfs1/subvol1 /mnt/linoxide_btrfs1/.snapshots/subvol1-day2
使用する -p
フラグを立てるには、ベーススナップショットを指定する必要があり、このスナップショットはソースと宛先に存在する必要があります。 次のコマンドは、2つのベーススナップショットの違いを宛先に送信します。
$ sudo btrfs send -p /mnt/linoxide_btrfs1/.snapshots/subvol1-day1 /mnt/linoxide_btrfs1/.snapshots/subvol1-day2 | sudo btrfs receive /mnt/linoxide_btrfs2
Btrfsスナップショットを復元する方法
このセクションでは、前に作成したスナップショットからデータを復元する方法について説明します。 ファイルが誤って削除されるシナリオを考えてみましょう。 最後のスナップショットに戻すことも、古いスナップショットから古いバージョンのファイルを復元することもできます。
cpコマンドを使用するだけで、削除されたファイルを復元できます。
$ sudo cp /mnt/linoxide_btrfs1/.snapshots/subvol1-day1/chrony.conf /mnt/linoxide_btrfs1/subvol1
サブボリューム全体を削除したと仮定します。その場合でも、cpコマンドを使用すると、スナップショットからコンテンツ全体を復元できます。
$ sudo cp -r /mnt/linoxide_btrfs1/.snapshots/subvol1-day1 /mnt/linoxide_btrfs1/subvol1
または、btrfssnapshotコマンドを使用してサブボリュームを復元できます。
$ sudo btrfs subvolume snapshot /mnt/linoxide_btrfs1/.snapshots/subvol1-day1 /mnt/linoxide_btrfs1/subvol1
スナップショットのクリーンアップ
btrfsスナップショットを使用して定期的な増分バックアップを作成している場合、それらを大量に積み上げることができます。 これにより、混乱が生じ、ディスク上の多くのスペースを占有する可能性があります。 スナップショットの削除を使用して、古い不要なスナップショットを削除することもできます。 パージ中は、インクリメンタル送信を実行するために、最後のスナップショットが必要であることに注意してください。
$ sudo btrfs subvolume delete /mnt/linoxide_btrfs1/.snapshots/subvol1-day1
結論
Btrfsは速いペースで成熟しています。 現在では、圧縮、スナップショット、データの整合性、パフォーマンスなど、本番環境に対応したファイルシステムを実現する幅広い機能を備えています。 この記事がBTRFSのスナップショットの使用に役立つことを願っています。 コメント欄であなたの意見を教えてください。