Т. к. я смотрю, что pacman не имеет отката, подобного yum undo, надо что-то придумать, используя btrfs и др.
Какие есть варианты?
1) НА ДРУГОЙ РАЗДЕЛ
Если делать backup на другой раздел, то в любом случае придется копировать данные, например с помодью rsync.
rsync -aix --delete /home /home-backup
btrfs subvolume snapshot /home-backup /home-backup/ss/`date +%y-%m-%d_%H-%M`
2) НА ЭТОТ ЖЕ РАЗДЕЛ
Если делать backup в этот же раздел, то испоользовать snapshots.
2.1) BY SUBVOLUMES WITHOUT ROOT Если делать snapshot не /, то просто создавать subvolume, затем с него snapshot, при откате subvolume удалить, snapshot подставить вместо subvolume.
Недостаток в том, что subvolume может же использоваться, для / такой вариант не подойдёт.
btrfs sub snap -r fs snapshot
... do things on fs
btrfs sub del fs
btrfs sub snap snapshot fs
btrfs sub del snapshot
2.2) ROOT
Если делать snapshot /, то из-за того что / имеет sublolid=0, надо как-то выкручиваться.
The root volume has a subvolume ID of zero, so mounting with subvolid=0 will mount the root.
Хотя, когда я сделал snapshot'у / set-default, и когда после перезагрузки система грузилась с него как с /, то в инфо по subvolume выдавало, что родительский subvolid=5 (а не 0), и когда я сделал set-default 5, то благополучно вернул на /.
Вот что попалось:
In Ubuntu 11.04 and later, the installer sets up btrfs with a specific layout:
The default subvolume to mount is always the top of the btrfs tree (subvolid=5).
2.2.1) ROOT AS SUBVOLUME (начиналось всё как надо, и схема, и snapshot, а закончилось восстановлением не root)
Изначально создавать / как subvolume, и далее делать как в п. 2.1).
Но это не решает проблему п. 2.1) - когда subvolume используется.
Т. е. для home, www и др. можно остановить службы, заставить выйти пользователей, и восстановить.
Но в случае с / такой вариант не пройдет: если система грузится с subvolume, то удалить его и подставить snapshot без перезагрузки, наверное, неправильно или, возможно, вообще не получится.
Filesystem layout:
/
`--- root * default subvolume
| `--- bin
| `--- etc
| `--- usr
| ...
`--- root_snapshot_2011_01_09
| `--- bin
| `--- etc
| `--- usr
| `--- ...
`--- root_snapshot_2011_01_10
| ...
`--- home
| ...
`--- home_snapshot_A
...
/etc/fstab:
+ Что это за параметр LABEL=btr_pool?
Run lsblk -f to list the partitions, and prefix the values in the LABEL column with LABEL=:
# Это на схеме root, не /? Неясно. И почему не указан параметр subvol=root тогда?
LABEL=btr_pool / btrfs defaults 0 0
# Subvolume home
LABEL=btr_pool /home btrfs defaults,subvol=home 0 0
# Указываем, что это верхний уровень и не монтируем его, а будем монитовать когда надо будет работать с subvolumes и snapshots
# У себя назову /subvolumes, а не /media/btrfs
LABEL=btr_pool /media/btrfs btrfs defaults,noauto,subvolid=0 0 0
Creating a snapshot:
# Монтируем верхний уровень
# mount /media/btrfs
# cd /media/btrfs
# Делается snapshot subvolume root
# btrfs subvolume snapshot root root_snapshot_2011_01_11
# cd ~
# umount /media/btrfs
Rolling back a snapshot:
# mount /media/btrfs
# umount /home
# Монтируем на размонтированный /home snapshot home_snapshot_A
# mount -o defaults,subvol=home_snapshot_A /dev/sda /home
# Удаляем размонтированный subvolume home
# btrfs subvolume delete /media/btrfs/home
# optional; this is so the /etc/fstab need not change - опционально, например, так не надо менять fstab
# Можно делать не mv, а создать snapshot со snapshot'а как указано в п. 2.1)
# mv /media/btrfs/home_snapshot_A /media/btrfs/home
# umount /media/btrfs
2.2.2) ROOT WITH SUBVOLID=0
Восстанавливать / со snapshot'а, используя rsync.
2.2.2.1) Редактировать grub.conf. Use the kernel command line parameters in the bootloader configuration files.
В этом варианте / имеет subvolumeid=0 (т. е. / не subvolume).
Редактируем grub.conf:
linux /kernel-x86_64-2.6.39-gentoo root=/dev/sda2 rootflags=subvol=before-updating-2011-05-24
or
linux /kernel-x86_64-2.6.39-gentoo root=/dev/sda2 rootflags=subvolid=256
Перегружаемся.
Далее, монтируем / на /mnt:
mount -o subvolid=0 /mnt
Делаем откат (синхронизируем со shapshot, с которого сейчас загрузились):
rsync --progress -aHAX --exclude=/proc --exclude=/dev --exclude=/sys --exclude=/mnt / /mnt
Возвращаем boot.conf, перегружаемся, если надо, удаляем snapshot.
2.2.2.2) Командами btrfs. Fiddle with the default subvolume numbers.
Аналогично п. 2.2.2.1), только вместо редактирования grub.conf выполнять:
btrfs subvolume set-default 256 /
и после синхронизации:
btrfs subvolume set-default 0 /mnt
3) ИТОГ. ЧТО Я ВЫБРАЛ И НА ЧЁМ ОСТАНОВИЛСЯ
3.1) Во время установки системы создаю раздел с btrfs, монтирую на /mnt, создаю /mnt/subvolumes
3.2) В /mnt/subvolumes создаю subvolume root, который монтирую на /mnt2 и уже на него выполняю pacstrap /mnt2 base.
3.3) Установка Grub, формируя конфиг, определяет и указывает в grub.cfg, что грузиться надо с subvol=root.
3.4) Если надо сделать snapshot всей системы.
Монтирую: mount -o defaults,subvolid=0 /dev/sda6 /subvolumes (позже я добавил это монтирование в fstab с параметром noauto).
Создаю инфо-файл,описывающий snapshot: touch /_root_after_install_xorg_mate.txt.
Создаю в /subvolumes snapshot системы: btrfs sub snap root root_after_install_xorg_mate.
Удаляю инфо-файл: rm /_root_after_install_xorg_mate.txt.
Учитывая btrfs технологию COW, можно делать столько snapshot'ов, сколько надо - на дисковом пространстве это не сказывается.
Переназначить default subvolume на любой snapshot, чтобы можно было удалять subvolume root.
3.5) Если надо сделать roll back.
Меняю в grub.cfg subvol=root на subvolid=ID, где ID - номер необходимого snapshota'а, например subvolid=262.
Перегружаюсь, загружается указанный snapshot. В grub.cfg опять subvol=root, но это и хорошо, так и надо.
Монтирую /subvolume.
Переношу (если не сделал в п. 3.4) btrfs sub set-default на любой snapshot, в моем случае это ни на что не влияет.
Удаляю subvolume root (процесс удаления выполняется в background'е).
Создаю snapshot root со snapshot'а, с которого загружался.
Перегружаюсь. Откат выполнен.
Все довольно просто и быстро: редактирование grub.cfg, перезагрузка, удаление и создание root, перезагрузка.
ИСТОЧНИКИ:проработанные
https://btrfs.wiki.kernel.org/index.php/Main_Page
https://btrfs.wiki.kernel.org/index.php/Incremental_Backup
https://lwn.net/Articles/579009/
https://btrfs.wiki.kernel.org/index.php/SysadminGuide
http://www.funtoo.org/BTRFS_Fun#Using_snapshots_for_system_recovery_.28aka_Back_to_the_Future.29
еще нет
https://btrfs.wiki.kernel.org/index.php/UseCases#How_can_I_use_btrfs_for_backups.2Ftime-machine.3F
https://wiki.archlinux.org/index.php/Btrfs_-_Tips_and_tricks
- Почитать на Arch Wiki что рекомендуют в разделе "После инсталляции", список программ и т. д.
+ Просмотреть WM и DE
Понравился gala-wm, откомпилировал его с AUR, но так и не запустил - wiki по нему нет.
Зато по MATE замечательное wiki, его и поставил: mate, mate-extra, mate-netbook, xf86-intel-semantics.
+ Сравнить web-browsers.
Midori легче всех, но он еще сыроват, не нашел синхронизацию и как убрать строку статуса.
Firefox и Chromium, показалось, что второй прожорливее.
+ Посмотреть btrfs-image.
All data will be zeroed, but metadata and the like is preserved. Как это понимать? Что это за образ без данных.
+ Посмотреть btrfs send/receive.
Это находит/применяет изменения для everyday inc backup, когда есть full backup.
+ Поискать, почему пишет, что родительский subvolid равен 5, а должен быть 0.
Использовал и 0 и 5, вроде бы работает.
- Разобраться как увеличивать/уменьшать разделы с btrfs. Сравнить с LVM, где аналог группы, тома?
Btrfs изменяет раздел ФС, а манипуляция разделами производится с помощью, скажем, Gparted?
- Какими командами контролировать место раздела с btrfs и subvolumes?
- Создать еще один раздел с btrfs, добавить к root, сбалансировать, т. е. сделать своего рода программный рейд.
- Попробовать сжатие и шифрование btrfs.
1) After pacman -Syu
ОтветитьУдалитьstarting version 217
hwdb.bin does not exist, please run udevadm hwdb --update
Scanning for Btrfs filesystems
failed to open /dev/btrfs-control skipping device registration: No such file or directory
ERROR: error -2 while registering
/sbin/fsck.btrfs: BTRFS file system.
[ 3.497013] BTRFS: open_ctree failed
mount: wrong fs type, bad option, bad superblock on /dev/sda6,
missing codepage or helper program, or other error
In some cases useful info is found in syslog - try
dmesg | tail or so.
You are now being dropped into an emergancy shell.
sh: can't access tty; job control turned off
[rootfs /]#
# ls /root (empty)
2) Need to mount the top level filesystem (sda6 and sda7 are united in one raid0 btrfs volume)
# mount -o subvolid=0 /dev/sda6 /root (or sda7)
If successfull goto 4).
3) If the mount of filesystem return error
# mount -o subvolid=0 /dev/sda6 /root
[ 939.823478] BTRFS: open_ctree failed
mount: wrong fs type, bad option, bad superblock on /dev/sda6,
missing codepage or helper program, or other error
In some cases useful info is found in syslog - try
dmesg | tail or so.
# btrfsck /dev/sda6 (and sda7)
And repeat 2).
4) Roll back
# cd /root
# ls
root root_14-10-25_11-42 root_after_installation
# btrfs sub del root
Transaction commit: none (default)
Delete subvolume '/root/root'
# ls
root_14-10-25_11-42 root_after_installation
# btrfs sub snap root_14-10-25_11-42/ root
Create a snapshot of 'root_14-10-25_11-42/' in './root'
# ls
root root_14-10-25_11-42 root_after_installation
5) Umount and reboot
# cd /
# umount /root
Ctrl+Alt+Del
# mount /subvolumes
ОтветитьУдалить# cd /subvolumes
# ls
root root_15-01-31_20-22 root_after_installation
# btrfs sub del root
Deleted /subvolumes/root
# btrfs sub snap root_15-01-31_20-22 root
-bash: /usr/bin/btrfs not found
shut down
GRUB loading...
Welcome to GRUB!
error: file '/root/boot/grub/i386-pc/normal.mod' not found.
Entering rescue mode...
grub rescue>
> ls
(hd0) (hd0, msdos7) (hd0, msdos6) (hd0, msdos5) (hd0, msdos2) (hd0, msdos1)
> set
cmdpath=(hd0)
prefix=(hd0,msdos6)/root/boot/grub
root=hd0,msdos6
> ls /
root_15-01-31_20-22 root_after_installation
> set prefix=(hd0,msdos6)/root_15-01-31_20-22/boot/grub
> insmod normal
> normal
Press ... `e' to edit the commands before booting and change:
rootflags=subvol=root_15-01-31_20-22
linux /root_15-01-31_20-22/boot/vmlinuz-linux
initrd /root_15-01-31_20-22/boot/initramfs-linux-fallback.img
boot
# mount /subvolumes
# cd /subvolumes
# ls
root_15-01-31_20-22 root_after_installation
# btrfs sub snap root_15-01-31_20-22/ root
Create a snapshot of 'root_15-01-31_20-22/' in './root'
# ls
root root_15-01-31_20-22 root_after_installation
# reboot