GNU/Linux >> Linux の 問題 >  >> Ubuntu

Ubuntu12.10でbtrfs+apt-btrfs-snapshotを使用して動作状態にロールバックする

このチュートリアルでは、失敗したapt操作(apt-get upgradeなど)を元に戻し、btrfsファイルシステムを使用するUbuntu12.10システムでapt-btrfs-snapshotを使用して以前のシステム状態にロールバックする方法について説明します。 apt-btrfs-snapshotは、apt操作の前にシステムのスナップショットを作成します。 apt操作が失敗した後、以前のシステム状態を簡単に復元できることで、システム管理者が通常対処しなければならない苦痛の多くが取り除かれ、btrfsファイルシステムの最大の機能の1つです。

これがあなたのために働くという保証はありません!

1予備メモ

このチュートリアルでは、システム全体をbtrfsファイルシステムにインストールしました。つまり、extファイルシステムに個別の/bootパーティションはありません。別の/bootパーティションを使用し、aptがそのパーティションに何か(新しいカーネルなど)をインストールする場合、apt-btrfs-snapshotを使用して/bootパーティションへの変更を元に戻すことはできません。元に戻すことができるのはbtrfsパーティションの変更のみです。

このチュートリアルでは、ハードドライブの名前は/ dev / sdaで、システムパーティションは/ dev/sda1です。

Ubuntuユーザーへの注意:

このチュートリアルのすべてのステップをroot権限で実行する必要があるため、このチュートリアルのすべてのコマンドの前に文字列sudoを付けるか、「

」と入力して今すぐrootになります。
sudo su

2apt-btrfs-snapshotをインストールします

apt-btrfs-snapshotは次のようにインストールできます:

apt-get install apt-btrfs-snapshot

apt-btrfs-snapshotがapt操作でスナップショットを作成できるかどうかを確認するには、

を実行します。
apt-btrfs-snapshot supported

次のように表示されます:

[email protected]:~# apt-btrfs-snapshot supported
Supported
[email protected]:~#

そうでない場合、btrfsサブボリュームのレイアウトはUbuntuのデフォルトのレイアウトとは異なる可能性があります。これは次のとおりです。

  • @サブボリューム:/にマウントされます。
  • @homeサブボリューム:/homeにマウントされます。

これはデフォルトのUbuntuサブボリュームレイアウトです:

btrfs subvolume list /
[email protected]:~# btrfs subvolume list /
ID 256 top level 5 path @
ID 258 top level 5 path @home
[email protected]:~#

apt-btrfs-snapshotがシステムをサポートしている場合は、第3章に進むことができます。

3apt操作を実行します

次に、apt-get upgradeなどのapt操作を実行して、前の状態にロールバックできるかどうかをテストします。

パッケージデータベースを更新します...

apt-get update

...そしてシステムをアップグレードします:

apt-get upgrade

[メールで保護]:〜#apt-getupgrade
パッケージリストの読み取り...完了
依存関係ツリーの構築
状態情報の読み取り...完了
次のパッケージは保持されています戻る:
linux-headers-generic linux-image-generic
次のパッケージがアップグレードされます:
appport base-files isc-dhcp-client isc-dhcp-common libwhoopsie0 linux-generic lsb -base lsb-release python3-apport python3-distupgrade python3-problem-report python3.2 python3.2-minimal
ubuntu-release-upgrader-core vim vim-common vim-runtime vim-tiny whoopsie
19がアップグレードされ、0が新しくインストールされ、0が削除され、2がアップグレードされません。
14.4 MBのアーカイブを取得する必要があります。
この操作の後、3,072Bの追加のディスクスペースが使用されます。
実行する[Y / n]を続行しますか? <-ENTER
Get:1 http://de.archive.ubuntu.com/ubuntu/ Quantal-updates / main base-files amd64 6.5ubuntu12 [69.6 kB]
Get:2 http:/ /de.archive.ubuntu.com/ubuntu/ Quantal-updates / main whoopsie amd64 0.2.7 [25.1 kB]
Get:3 http://de.archive.ubuntu.com/ubuntu/ Quantal-updates / main libwhoopsie0 amd64 0.2.7 [7,054 B]
Get:4 http://de.archive.ubuntu.com/ubuntu/ quantal-updates / main lsb-base all 4.0-0ubuntu26.1 [10.3 kB]
Get:5 http://de.archive.ubuntu.com/ubuntu/ Quantal-updates / main isc-dhcp-client amd64 4.2.4-1ubuntu10.1 [775 kB]
Get:6 http ://de.archive.ubuntu.com/ubuntu/ Quantal-updates / main isc-dhcp-common amd64 4.2.4-1ubuntu10.1 [836 kB]
Get:7 http://de.archive。 ubuntu.com/ubuntu/ Quantal-updates / main lsb-release all 4.0-0ubuntu26.1 [10.7 kB]
Get:8 http://de.archive.ubuntu.com/ubuntu/ Quantal-updates / main python3.2 amd64 3.2.3-6ubuntu3.1 [2,585 kB]
Get:9 http://de.archive.ubuntu.com/ubuntu/ Quantal-updates / main python3.2-minimal amd64 3.2.3 -6ubuntu3.1 [1,798 kB]
Get:10 http://de.archive.ubuntu.com/ubuntu/ Quantal-updates / main vim amd64 2:7.3.547-4ubuntu1.1 [1,051 kB]
Get :11 http://de.archive.ubuntu.com/ubuntu/ Quantal-updates / main vim-tiny amd64 2:7.3.547-4ubuntu1.1 [413 kB]
Get:12 http:// de .archive.ubuntu.com / ubuntu / Quantal-updates / main vim-runtime all 2:7.3.547-4ubuntu1.1 [6,317 kB]
Get:13 http://de.archive.ubuntu.com/ ubuntu / Quantal-updates / main vim-common amd64 2:7.3.547-4ubuntu1.1 [85.7 kB]
Get:14 http://de.archive.ubuntu.com/ubuntu/ Quantal-updates / main ubuntu-release-upgrader-core all 1:0.190.4 [27.7 kB]
Get:15 http://de.archive.ubuntu.com/ubuntu/ Quantal-updates / main python3-distupgrade all 1:0.190 .4 [141 kB]
Get:16 http://de.archive.ubuntu.com/ubuntu/ Quantal-updates / main python3-problem-report all 2.6.1-0ubuntu6 [9,578 B]
Get:17 http://de.archive.ubuntu.com/ubuntu/ Quantal-updates / main python3-apport all 2.6.1-0ubuntu6 [85.7 kB]
Get:18 http://de.archive .ubuntu.com / ubuntu / quan tal-updates / main appport all 2.6.1-0ubuntu6 [164 kB]
Get:19 http://de.archive.ubuntu.com/ubuntu/ Quantal-updates / main linux-genericamd643.5.0.18。 21 [1,714 B]
2秒で14.4MBを取得(5,465 kB / s)
サポート
「/tmp/apt-btrfs-snapshot-mp-jnW7I_/@」のスナップショットを作成'/ tmp / apt-btrfs-snapshot-mp-jnW7I _ / @ apt-snapshot-2012-11-22_11:50:38'
(データベースを読み込んでいます... 52666ファイルとディレクトリが現在インストールされています。)
base-files 6.5ubuntu11を置き換える準備をしています(... / base-files_6.5ubuntu12_amd64.debを使用)...
置換base-filesを解凍しています...
man-dbのトリガーを処理しています。 。
install-infoのトリガーを処理しています...
plymouth-theme-ubuntu-textのトリガーを処理しています...
update-initramfs:更新を延期しています(トリガーがアクティブ化されています)
処理中initramfs-toolsのトリガー...
update-initramfs:/boot/initrd.img-3.5.0-17-genericの生成
ベースファイルの設定(6.5ubuntu12)...
(データベースを読み込んでいます...52666ファイルとディレクトリcu rrently install。)
whoopsie 0.2.5を置き換える準備をしています(... / whoopsie_0.2.7_amd64.debを使用)...
whoopsie stop / waiting
交換用whoopsieを解凍しています...
libwhoopsie0 0.2.5を置き換える準備をしています(... / libwhoopsie0_0.2.7_amd64.debを使用)...
置換libwhoopsie0を解凍しています...
lsb-base 4.0-0ubuntu26を置き換える準備をしています( using ... / lsb-base_4.0-0ubuntu26.1_all.deb)...
置換lsb-baseを解凍しています...
ureadaheadのトリガーを処理しています...
ureadaheadは次回の再起動時に再プロファイルされます
lsb-base(4.0-0ubuntu26.1)を設定しています...
(データベースを読み込んでいます... 52666ファイルと現在インストールされているディレクトリ)
iscを置き換える準備をしています- dhcp-client 4.2.4-1ubuntu10(... / isc-dhcp-client_4.2.4-1ubuntu10.1_amd64.debを使用)...
置換isc-dhcp-clientを解凍しています...
準備中isc-dhcp-common 4.2.4-1ubuntu10を置き換えるには(... / isc-dhcp-common_4.2.4-1ubuntu10.1_amd64.debを使用)...
置換isc-dhcp-commonを解凍します...
準備lsb-release 4.0-0ubuntu26を置き換えるために(... / lsb-release_4.0-0ubuntu26.1_all.debを使用)...
置換lsb-releaseを解凍しています...
python3を置き換えるための準備.2 3.2.3-6ubuntu3(... / python3.2_3.2.3-6ubuntu3.1_amd64.debを使用)...
交換用のpython3.2を解凍しています...
python3.2を交換する準備をしています-minimal 3.2.3-6ubuntu3(... / python3.2-minimal_3.2.3-6ubuntu3.1_amd64.debを使用)...
交換用のpython3.2-minimalを解凍しています...
準備中replace vim 2:7.3.547-4ubuntu1(... / vim_2%3a7.3.547-4ubuntu1.1_amd64.debを使用)...
交換用vimを開梱しています...
vim-tinyを交換する準備をしています2:7.3.547-4ubuntu1(... / vim-tiny_2%3a7.3.547-4ubuntu1.1_amd64.debを使用)...
交換用vim-tinyを解凍しています...
vimを交換する準備をしています-runtime 2:7.3.547-4ubuntu1(... / vim-runtime_2%3a7.3.547-4ubuntu1.1_all.debを使用)...
置換vim-runtimeを解凍しています...
準備中vim-common 2:7.3.547-4ubuntu1を置き換えます(... / vim-common_2%3a7.3.547-4ubuntu1.1_aを使用) md64.deb)...
置換vim-commonを解凍しています...
ubuntu-release-upgrader-core 1:0.190.1を置換する準備をしています(... / ubuntu-release-upgrader-を使用) core_1%3a0.190.4_all.deb)...
置換ubuntu-release-upgrader-coreを解凍しています...
python3-distupgrade 1:0.190.1を置換する準備をしています(... / python3を使用) -distupgrade_1%3a0.190.4_all.deb)...
置換python3-distupgradeを解凍しています...
python3-problem-report 2.6.1-0ubuntu3を置換する準備をしています(... / python3-を使用) problem-report_2.6.1-0ubuntu6_all.deb)...
置換python3-problem-reportを解凍しています...
python3-apport 2.6.1-0ubuntu3を置換する準備をしています(... / python3-を使用) apport_2.6.1-0ubuntu6_all.deb)...
交換用python3-apportを解凍しています...
apport 2.6.1-0ubuntu3を交換する準備をしています(... / appport_2.6.1-0ubuntu6_all.debを使用) ...
apport stop / waiting
交換用apportを解凍しています...
linux-generic 3.5.0.17.19を交換する準備をしています(... / linux-generic_3.5.0.18.21_amd64を使用) .deb )...
置換linux-genericを解凍しています...
man-dbのトリガーを処理しています...
mime-supportのトリガーを処理しています...
ureadaheadのトリガーを処理しています...
libwhoopsie0(0.2.7)の設定...
whoopsie(0.2.7)の設定...
whoopsieの開始/実行、プロセス7859
設定isc-dhcp-common(4.2.4-1ubuntu10.1)...
isc-dhcp-client(4.2.4-1ubuntu10.1)の設定...
lsb-releaseの設定( 4.0-0ubuntu26.1)...
python3.2の設定-最小(3.2.3-6ubuntu3.1)...
python3.2の設定(3.2.3-6ubuntu3.1) ...
vim-commonの設定(2:7.3.547-4ubuntu1.1)...
vim-runtimeの設定(2:7.3.547-4ubuntu1.1)...
処理中/usr/ share / vim / addons / doc
vimの設定(2:7.3.547-4ubuntu1.1)...
vim-tinyの設定(2:7.3.547) -4ubuntu1.1)...
python3-distupgrade(1:0.190.4)を設定しています...
ubuntu-release-upgrader-core(1:0.190.4)を設定しています...
python3-problem-report(2.6.1-0ubuntu6)を設定しています...
設定ting up python3-apport(2.6.1-0ubuntu6)...
setup up appport(2.6.1-0ubuntu6)...
appport start / running
Setup linux-generic( 3.5.0.18.21)...
libc-binのトリガーを処理しています...
ldconfigの遅延処理が現在行われています
[メール保護]:〜#

ご覧のとおり、アップグレード前にapt-btrfs-snapshotがシステムのスナップショットとして自動的に作成されています(この例では@ apt-snapshot-2012-11-22_11:50:38と呼ばれます)。あなたはそれをチェックすることができます...

btrfs subvolume list /
[email protected]:~# btrfs subvolume list /
ID 256 top level 5 path @
ID 258 top level 5 path @home
ID 260 top level 5 path @apt-snapshot-2012-11-22_11:50:38
[email protected]:~#

...そして:

apt-btrfs-snapshot list
[email protected]:~# apt-btrfs-snapshot list
Available snapshots:
@apt-snapshot-2012-11-22_11:50:38
[email protected]:~#

4ロールバック

ここで、最後のapt操作によって、動作中のシステムが期待どおりに動作しなくなったと仮定します。そのため、以前のシステム状態を復元する必要があります。つまり、ロールバックを実行する必要があります。

したがって、btrfsファイルシステムを別の場所にマウントします。 / mnt:

mount /dev/sda1 /mnt

これで、次の出力にサブボリュームが表示されます。

ls -l /mnt/
[email protected]:~# ls -l /mnt/
total 0
drwxr-xr-x 1 root root 230 Nov 22 10:46 @
drwxr-xr-x 1 root root 230 Nov 22 10:46 @apt-snapshot-2012-11-22_11:50:38
drwxr-xr-x 1 root root  26 Nov 22 10:57 @home
[email protected]:~#

@ apt-snapshot-2012-11-22_11:50:38は、apt操作前の作業ルートファイルシステム(@)のスナップショットです。現在のサブボリュームからではなく、動作中のスナップショットからシステムを起動するために、@の名前を別の名前に変更してから、@ apt-snapshot-2012-11-22_11:50:38の名前を@:

に変更します。
mv /mnt/@ /mnt/@_badroot
mv /mnt/@apt-snapshot-2012-11-22_11:50:38 /mnt/@

今すぐ再起動します:

reboot

5ロールバックが成功したかどうかを確認する

再起動後、ロールバックが成功したかどうかを確認する必要があります。これを行うには、システムを使用できなくしたapt操作を繰り返します。例:

apt-get update
apt-get upgrade

ロールバックが成功した場合、apt-get upgradeは、以前と同じ更新可能なパッケージを表示する必要があります(これは、ロールバックが成功したかどうかの単なるチェックであるため、更新を再度インストールしないでください):

[メールで保護]:〜#apt-getupgrade
パッケージリストの読み取り...完了
依存関係ツリーの構築
状態情報の読み取り...完了
次のパッケージは保持されています戻る:
linux-headers-generic linux-image-generic
次のパッケージがアップグレードされます:
appport base-files isc-dhcp-client isc-dhcp-common libwhoopsie0 linux-generic lsb -base lsb-release python3-apport python3-distupgrade python3-problem-report python3.2 python3.2-minimal
ubuntu-release-upgrader-core vim vim-common vim-runtime vim-tiny whoopsie
19がアップグレードされ、0が新しくインストールされ、0が削除され、2がアップグレードされていません。
0 B / 14.4 MBのアーカイブを取得する必要があります。
この操作の後、3,072Bの追加のディスクスペースが使用されます。
続行しますか[Y/n]? <-n

6 @サブボリュームの削除(オプション)

ロールバックが成功したことが確実で、古い@サブボリューム(現在は@_badrootという名前)が不要な場合は、それを削除してスペースを解放できます。

mount /dev/sda1 /mnt
ls -l /mnt/
[email protected]:~# ls -l /mnt/
total 0
drwxr-xr-x 1 root root 230 Nov 22 10:46 @
drwxr-xr-x 1 root root 230 Nov 22 10:46 @_badroot
drwxr-xr-x 1 root root  26 Nov 22 10:57 @home
[email protected]:~#
btrfs subvolume delete /mnt/@_badroot
umount /mnt

  • btrfs:https://btrfs.wiki.kernel.org/index.php/Main_Page
  • Ubuntu:http://www.ubuntu.com/

Ubuntu
  1. [0cf3:3004] AtherosAdapterを使用したUbuntu16.04でBluetoothが機能しない?

  2. Ubuntu 18.04はNvidiaドライバーでの動作を停止しましたか?

  3. ElanタッチパッドがUbuntu16.04のLenovoIdeapadで機能しませんか?

  1. Usb3.0ハブがUbuntu18.04の一部のデバイスで動作しない?

  2. R 3.5.0 Ubuntu 18.04で動作しませんか?

  3. debootstrapを使用してUbuntuでchroot環境をセットアップします

  1. Conkyウィジェットを使用したUbuntu20.04システムモニタリング

  2. Ubuntu /Ubuntu11.10のシングルユーザーモードでシステムを回復する

  3. 5.1サラウンドシステムサブウーファーが機能しない?