Tutorial ini menjelaskan bagaimana Anda dapat mengembalikan operasi apt yang gagal (seperti apt-get upgrade) dan memutar kembali ke status sistem sebelumnya dengan apt-btrfs-snapshot pada sistem Ubuntu 12.10 yang menggunakan sistem file btrfs. apt-btrfs-snapshot membuat snapshot sistem sebelum operasi apt. Mampu dengan mudah mengembalikan status sistem sebelumnya setelah operasi apt yang gagal menghilangkan banyak rasa sakit yang harus dihadapi administrator sistem secara normal dan merupakan salah satu fitur terbesar dari sistem file btrfs.
Saya tidak memberikan jaminan apa pun bahwa ini akan berhasil untuk Anda!
1 Catatan Awal
Dalam tutorial ini saya telah menginstal seluruh sistem pada sistem file btrfs, yaitu, tidak ada partisi /boot terpisah pada sistem file ext. Jika Anda menggunakan partisi /boot terpisah dan apt menginstal apa pun di partisi itu (seperti kernel baru), Anda tidak dapat membatalkan perubahan pada partisi /boot dengan apt-btrfs-snapshot- hanya perubahan pada partisi btrfs yang dapat dikembalikan.
Hard drive saya bernama /dev/sda dalam tutorial ini, partisi sistem saya adalah /dev/sda1.
Catatan untuk pengguna Ubuntu:
Karena kita harus menjalankan semua langkah dari tutorial ini dengan hak akses root, kita bisa menambahkan semua perintah dalam tutorial ini dengan string sudo, atau kita menjadi root sekarang dengan mengetik
sudo su
2 Instal apt-btrfs-snapshot
apt-btrfs-snapshot dapat diinstal sebagai berikut:
apt-get install apt-btrfs-snapshot
Untuk memeriksa apakah apt-btrfs-snapshot dapat membuat snapshot pada operasi apt, jalankan
apt-btrfs-snapshot didukung
Seharusnya menampilkan:
[dilindungi email]:~# apt-btrfs-snapshot didukung
Didukung
[dilindungi email]:~#
Jika tidak, tata letak subvolume btrfs Anda mungkin berbeda dari tata letak default Ubuntu yaitu sebagai berikut:
- @ subvolume:dipasang ke /.
- @home subvolume:dipasang ke /home.
Ini adalah tata letak subvolume default Ubuntu:
daftar subvolume btrfs /
[email protected]:~# btrfs subvolume list /
ID 256 top level 5 path @
ID 258 top level 5 path @home
[email protected]:~#Jika apt-btrfs-snapshot mendukung sistem Anda, Anda dapat melanjutkan ke bab 3.
3 Lakukan Operasi yang tepat
Sekarang mari kita lakukan beberapa operasi apt seperti apt-get upgrade untuk menguji apakah kita dapat mengembalikan ke keadaan sebelumnya.
Perbarui basis data paket Anda...
apt-get update... dan tingkatkan sistem Anda:
apt-get upgrade[email protected]:~# apt-get upgrade
Membaca daftar paket... Selesai
Membuat pohon dependensi
Membaca informasi status... Selesai
Paket berikut telah disimpan kembali:
linux-headers-generic linux-image-generic
Paket-paket berikut akan ditingkatkan:
apport 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 ditingkatkan, 0 baru diinstal, 0 untuk dihapus dan 2 tidak ditingkatkan.
Perlu untuk mendapatkan 14.4 MB arsip.
Setelah operasi ini, 3.072 B ruang disk tambahan akan digunakan.
Lakukan Anda ingin melanjutkan [Y/n]? <-- ENTER
Dapatkan:1 http://de.archive.ubuntu.com/ubuntu/ quantal-updates/main base-files amd64 6.5ubuntu12 [69.6 kB]
Dapatkan:2 http:/ /de.archive.ubuntu.com/ubuntu/ quantal-updates/main whoopsie amd64 0.2.7 [25.1 kB]
Dapatkan:3 http://de.archive.ubuntu.com/ubuntu/ quantal-updates/ main libwhoopsie0 amd64 0.2.7 [7.054 B]
Dapatkan:4 http://de.archive.ubuntu.com/ubuntu/ quantal-updates/main lsb-base all 4.0-0ubuntu26.1 [10.3 kB]
Dapatkan:5 http://de.archive.ubuntu.com/ubuntu/ quantal-updates/main isc-dhcp-client amd64 4.2.4-1ubuntu10.1 [775 kB]
Dapatkan:6 http ://de.archive.ubuntu.com/ubuntu/ quantal-updates/main isc-dhcp-common amd64 4.2.4-1ubuntu10.1 [836 kB]
Dapatkan:7 http://de.archive. ubuntu.com/ubuntu/ quantal-updates/main lsb-release all 4.0-0ubuntu26.1 [10.7 kB]
Dapatkan:8 http://de.archive.ubuntu.com/ubuntu/ quantal-updates/main python3.2 amd64 3.2.3-6ubuntu3.1 [2,585 kB]
Dapatkan:9 http://de.archive.ubuntu.com/ubuntu/ quantal-updates/main python3.2-minimal amd64 3.2.3 -6ubuntu3.1 [1,798 kB]
Dapatkan:10 http://de.archive.ubuntu.com/ubuntu/ quantal-updates/main vim amd64 2:7.3.547-4ubuntu1.1 [1.051 kB]
Dapatkan :11 http://de.archive.ubuntu.com/ubuntu/ quantal-updates/main vim-tiny amd64 2:7.3.547-4ubuntu1.1 [413 kB]
Dapatkan:12 http://de .archive.ubuntu.com/ubuntu/ quantal-updates/main vim-runtime all 2:7.3.547-4ubuntu1.1 [6.317 kB]
Dapatkan:13 http://de.archive.ubuntu.com/ ubuntu/ quantal-updates/main vim-common amd64 2:7.3.547-4ubuntu1.1 [85.7 kB]
Dapatkan:14 http://de.archive.ubuntu.com/ubuntu/ quantal-updates/main ubuntu-release-upgrader-core all 1:0.190.4 [27.7 kB]
Dapatkan:15 http://de.archive.ubuntu.com/ubuntu/ quantal-updates/main python3-distupgrade all 1:0.190 .4 [141 kB]
Dapatkan:16 http://de.archive.ubuntu.com/ubuntu/ quantal-updates/main python3-problem-report all 2.6.1-0ubuntu6 [9.578 B]
Dapatkan:17 http://de.archive.ubuntu.com/ubuntu/ quantal-updates/main python3-apport semua 2.6.1-0ubuntu6 [85.7 kB]
Dapatkan:18 http://de.archive .ubuntu.com/ubuntu/ quan tal-updates/main apport all 2.6.1-0ubuntu6 [164 kB]
Dapatkan:19 http://de.archive.ubuntu.com/ubuntu/ quantal-updates/main linux-generic amd64 3.5.0.18. 21 [1.714 B]
Diambil 14.4 MB dalam 2 dtk (5.465 kB/dtk)
Didukung
Buat snapshot '/tmp/apt-btrfs-snapshot-mp-jnW7I_/@' di '/tmp/apt-btrfs-snapshot-mp-jnW7I_/@apt-snapshot-2012-11-22_11:50:38'
(Membaca database ... 52666 file dan direktori yang saat ini dipasang.)
Mempersiapkan untuk mengganti file dasar 6.5ubuntu11 (menggunakan .../base-files_6.5ubuntu12_amd64.deb) ...
Membongkar file dasar pengganti ...
Memproses pemicu untuk man-db .. .
Memproses pemicu untuk info pemasangan...
Memproses pemicu untuk plymouth-theme-ubuntu-text...
update-initramfs:menunda pembaruan (pemicu diaktifkan)
Memproses pemicu untuk initramfs-tools ...
update-initramfs: Generating /boot/initrd.img-3.5.0-17-generic
Menyiapkan file dasar (6.5ubuntu12) ...
(Membaca database ... 52666 file dan direktori cu baru dipasang.)
Bersiap untuk menggantikan whoopsie 0.2.5 (menggunakan .../whoopsie_0.2.7_amd64.deb) ...
whoopsie stop/waiting
Membongkar penggantian whoopsie ...
Bersiap untuk mengganti libwhoopsie0 0.2.5 (menggunakan .../libwhoopsie0_0.2.7_amd64.deb) ...
Membongkar penggantian libwhoopsie0 ...
Bersiap untuk mengganti lsb-base 4.0-0ubuntu26 ( menggunakan .../lsb-base_4.0-0ubuntu26.1_all.deb) ...
Membongkar penggantian lsb-base ...
Memproses pemicu untuk ureadahead ...
ureadahead akan dilakukan reprofiled pada reboot berikutnya
Menyiapkan lsb-base (4.0-0ubuntu26.1) ...
(Membaca database ... 52666 file dan direktori yang saat ini diinstal.)
Bersiap untuk mengganti isc- dhcp-client 4.2.4-1ubuntu10 (menggunakan .../isc-dhcp-client_4.2.4-1ubuntu10.1_amd64.deb) ...
Membongkar penggantian isc-dhcp-client ...
Mempersiapkan untuk mengganti isc-dhcp-common 4.2.4-1ubuntu10 (menggunakan .../isc-dhcp-common_4.2.4-1ubuntu10.1_amd64.deb) ...
Membongkar penggantian isc-dhcp-common ...
Persiapan ing untuk mengganti lsb-release 4.0-0ubuntu26 (menggunakan .../lsb-release_4.0-0ubuntu26.1_all.deb) ...
Membongkar penggantian lsb-release ...
Bersiap untuk menggantikan python3 .2 3.2.3-6ubuntu3 (menggunakan .../python3.2_3.2.3-6ubuntu3.1_amd64.deb) ...
Membongkar penggantian python3.2 ...
Bersiap untuk mengganti python3.2 -minimal 3.2.3-6ubuntu3 (menggunakan .../python3.2-minimal_3.2.3-6ubuntu3.1_amd64.deb) ...
Membongkar penggantian python3.2-minimal ...
Bersiap untuk replace vim 2:7.3.547-4ubuntu1 (menggunakan .../vim_2%3a7.3.547-4ubuntu1.1_amd64.deb) ...
Membongkar replacement vim ...
Mempersiapkan untuk menggantikan vim-tiny 2:7.3.547-4ubuntu1 (menggunakan .../vim-tiny_2%3a7.3.547-4ubuntu1.1_amd64.deb) ...
Membongkar penggantian vim-tiny ...
Bersiap untuk menggantikan vim -runtime 2:7.3.547-4ubuntu1 (menggunakan .../vim-runtime_2%3a7.3.547-4ubuntu1.1_all.deb) ...
Membongkar penggantian vim-runtime ...
Mempersiapkan untuk ganti vim-common 2:7.3.547-4ubuntu1 (menggunakan .../vim-common_2%3a7.3.547-4ubuntu1.1_a md64.deb) ...
Membongkar penggantian vim-common ...
Mempersiapkan untuk menggantikan ubuntu-release-upgrader-core 1:0.190.1 (menggunakan .../ubuntu-release-upgrader- core_1%3a0.190.4_all.deb) ...
Membongkar penggantian ubuntu-release-upgrader-core ...
Mempersiapkan untuk menggantikan python3-distupgrade 1:0.190.1 (menggunakan .../python3 -distupgrade_1%3a0.190.4_all.deb) ...
Membongkar penggantian python3-distupgrade ...
Bersiap untuk mengganti python3-problem-report 2.6.1-0ubuntu3 (menggunakan .../python3- problem-report_2.6.1-0ubuntu6_all.deb) ...
Membongkar replacement python3-problem-report ...
Bersiap untuk mengganti python3-apport 2.6.1-0ubuntu3 (menggunakan .../python3- apport_2.6.1-0ubuntu6_all.deb) ...
Membongkar penggantian python3-apport ...
Mempersiapkan untuk menggantikan apport 2.6.1-0ubuntu3 (menggunakan .../apport_2.6.1-0ubuntu6_all.deb) ...
apport stop/waiting
Membongkar apport penggantian ...
Bersiap untuk menggantikan linux-generic 3.5.0.17.19 (menggunakan .../linux-generic_3.5.0.18.21_amd64 .deb ) ...
Membongkar pengganti linux-generic ...
Memproses pemicu untuk man-db ...
Memproses pemicu untuk mime-support ...
Memproses pemicu untuk ureadahead ...
Menyiapkan libwhoopsie0 (0.2.7) ...
Menyiapkan whoopsie (0.2.7) ...
whoopsie start/running, proses 7859
Menyiapkan isc-dhcp-common (4.2.4-1ubuntu10.1) ...
Menyiapkan isc-dhcp-client (4.2.4-1ubuntu10.1) ...
Menyiapkan lsb-release ( 4.0-0ubuntu26.1) ...
Menyiapkan python3.2-minimal (3.2.3-6ubuntu3.1) ...
Menyiapkan python3.2 (3.2.3-6ubuntu3.1) ...
Menyiapkan vim-common (2:7.3.547-4ubuntu1.1) ...
Menyiapkan vim-runtime (2:7.3.547-4ubuntu1.1) ...
Memproses /usr/share/vim/addons/doc
Menyiapkan vim (2:7.3.547-4ubuntu1.1) ...
Menyiapkan vim-tiny (2:7.3.547 -4ubuntu1.1) ...
Menyiapkan python3-distupgrade (1:0.190.4) ...
Menyiapkan ubuntu-release-upgrader-core (1:0.190.4) ...
Menyiapkan python3-problem-report (2.6.1-0ubuntu6) ...
Menyetel menyiapkan python3-apport (2.6.1-0ubuntu6) ...
Menyiapkan apport (2.6.1-0ubuntu6) ...
apport mulai/berjalan
Menyiapkan linux-generic ( 3.5.0.18.21) ...
Memproses pemicu untuk libc-bin ...
ldconfig pemrosesan ditangguhkan sekarang sedang berlangsung
[email protected]:~#Seperti yang Anda lihat, apt-btrfs-snapshot secara otomatis dibuat sebagai snapshot dari sistem kami (disebut @apt-snapshot-2012-11-22_11:50:38 dalam contoh ini) sebelum peningkatan. Anda dapat memeriksanya dengan...
daftar subvolume btrfs /[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
[dilindungi email]:~#... dan:
daftar apt-btrfs-snapshot[email protected]:~# apt-btrfs-snapshot list
Snapshot yang tersedia:
@apt-snapshot-2012-11-22_11:50:38
[email protected]:~#
4 Kembalikan
Sekarang mari kita asumsikan operasi apt terakhir mengubah sistem kerja kita menjadi sistem yang tidak berfungsi seperti yang diharapkan lagi. Itu sebabnya kami ingin memulihkan status sistem sebelumnya, yaitu, kami ingin melakukan rollback.
Oleh karena itu kami memasang sistem file btrfs ke lokasi terpisah, mis. /mnt:
mount /dev/sda1 /mntKami sekarang dapat melihat subvolume kami di output dari:
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 22 Nov 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 adalah snapshot dari sistem file root kerja kami (@) sebelum operasi apt. Untuk membuat sistem boot dari snapshot yang berfungsi itu alih-alih dari subvolume saat ini, kami mengganti nama @ menjadi sesuatu yang lain dan kemudian @apt-snapshot-2012-11-22_11:50:38 menjadi @:
mv /mnt/@ /mnt/@_badroot
mv /mnt/@apt-snapshot-2012-11-22_11:50:38 /mnt/@Sekarang reboot:
boot ulang
5 Periksa Apakah Rollback Berhasil
Setelah reboot kita harus memeriksa apakah rollback berhasil. Untuk melakukan ini, kami mengulangi operasi apt yang membuat sistem kami tidak dapat digunakan, mis.:
apt-get updateapt-get upgradeJika rollback berhasil, apt-get upgrade akan menampilkan paket yang sama yang tersedia untuk update seperti sebelumnya (karena ini hanya untuk memeriksa apakah rollback berhasil, jangan menginstal update lagi):
[email protected]:~# apt-get upgrade
Membaca daftar paket... Selesai
Membuat pohon dependensi
Membaca informasi status... Selesai
Paket berikut telah disimpan kembali:
linux-headers-generic linux-image-generic
Paket-paket berikut akan ditingkatkan:
apport 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 ditingkatkan, 0 baru dipasang, 0 untuk dihapus dan 2 tidak ditingkatkan.
Perlu mendapatkan 0 B/14.4 MB arsip.
Setelah operasi ini, 3,072 B ruang disk tambahan akan digunakan.
Apakah Anda ingin melanjutkan [Y/n]? <-- n
6 Hapus @ Subvolume (Opsional)
Jika Anda yakin rollback berhasil dan Anda tidak memerlukan subvolume @ lama (sekarang bernama @_badroot) lagi, Anda dapat menghapusnya untuk mengosongkan beberapa ruang.
mount /dev/sda1 /mntls -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]:~#penghapusan subvolume btrfs /mnt/@_badrootumount /mnt
7 Tautan
- btrfs:https://btrfs.wiki.kernel.org/index.php/Main_Page
- Ubuntu:http://www.ubuntu.com/