Кентавр/Btrfs/Вторая Попытка: различия между версиями
м (→Нужные пакеты: wikisyntax) |
Нет описания правки |
||
(не показаны 3 промежуточные версии 2 участников) | |||
Строка 157: | Строка 157: | ||
# btrfs bal start -mconvert=single --force /btrfs | # btrfs bal start -mconvert=single --force /btrfs | ||
# btrfs dev remove /dev/${partition} /btrfs | # btrfs dev remove /dev/${partition} /btrfs | ||
# btrfs bal start -mconvert=dup /btrfs | |||
типа того, летим на btrfs без массива :) | типа того, летим на btrfs без массива :) | ||
Строка 179: | Строка 180: | ||
[[Категория:install]] | [[Категория:install]] | ||
[[category:компоненты]] | [[category:компоненты]] | ||
{{Category navigation|title=BtrFS|category=BtrFS|sortkey={{SUBPAGENAME}}}} | |||
{{Category navigation|title=Centaurus|category=Centaurus|sortkey={{SUBPAGENAME}}}} |
Текущая версия от 15:56, 2 июля 2015
зачем btrfs
Жили замечательно на md-raid, снапшотов <skiped> захотелось... Да и комресии для всяких /usr и /home/src.... (выразано цензурой).
Было
/md0 - /boot /md2 - /
Нужные пакеты
Для p6: kernel-image-el-uek-2.6.39.100.5.1-alt1
Для Sisyphus можно собрать kernel-image-el-uek-2.6.39.100.5.1-alt1, а можно не заморачиваться и пробовать ветки 3.4 и даже 3.5
btrfs-progs можно взять тот что есть (он везде бородатого года) но более правильно повесить багу на его обновление до 0.19-26 из исходников oracle.
Бинарные сборки и исходники как-есть (Для p6 и Sisyphus (2012-08-23)): тут. (Ещё свежие сборки для ALT: vanilla с fsck.btrfs и другая с патчами josefbacik -- gear, RPMS[1][2].)
Выделим место для перезда
# mdadm /dev/md2 --fail /dev/sdb3 # mdadm /dev/md2 --remove /dev/sdb3 С помощью fdisk меняем тип раздела 3 на sdb с 0xFD на 0x83.
mkfs
] # mkfs -t btrfs -L pool /dev/sdb3 ] # mkdir /mnt/btrfs /mnt/btrfs-active ] # blkid
добавить строки в fstab (UUID берем из blkid):
UUID=deb3c552-be00-4102-9912-xxxxxxxxxxxx /mnt/btrfs btrfs defaults,noatime,discard 0 0 UUID=deb3c552-be00-4102-9912-xxxxxxxxxxxx /mnt/btrfs-active btrfs defaults,discard,noatime,subvol=_active 0 0 UUID=deb3c552-be00-4102-9912-xxxxxxxxxxxx /mnt/btrfs-active/usr btrfs defaults,compress=lzo,discard,noatime,subvol=_active/usr 0 0
] # mount /mnt/btrfs ] # cd /mnt/btrfs ] # mkdir _snapshot ] # btrfs subvolume create _active ] # btrfs subvolume create _active/usr ] # btrfs subvolume create _active/var ] # btrfs subvolume create _active/home ] # mount -a -t btrfs
можно переходить к переносу данных с помощью rsync, tar, cpio....
rsync
] # rsync -avhHPS --exclude={boot,dev,sys,proc,mnt,tmp,media,var/resolv,var/lib/mysql,var/spool,var/lib} / . ] # rsync -avhPS --exclude={tmp} /var/ /mnt/btrfs-active/var/ ] # mkdir var/tmp dev sys proc mnt tmp media boot ] # /etc/init.d/udevd umount ] # umount /dev/pts ] # rsync -PavH /dev/ /mnt/btrfs-active/dev/ ] # /etc/init.d/udevd start ; mount /dev/pts
chroot
] # cd /mnt/btrfs-avtive btrfs-active]# mount -o bind /boot boot btrfs-active]# mount -o bind /proc proc btrfs-active]# mount -o bind /sys sys btrfs-active]# mount -o bind /dev dev btrfs-active]# cdroot . /bin/bash Скопировать ядро и initrd для того чтобы можно было взлететь на старой системе /] # cd /boot boot]# cp vmlinuz-2.6.39.100.5.1-el-uek-alt1 vmlinuz-2.6.39.100.5.1-el-uek-alt1-old boot]# cp config-2.6.39.100.5.1-el-uek-alt1 config-2.6.39.100.5.1-el-uek-alt1-old # /etc ; rm -f mtab ; egrep '(btrfs|boot)' /proc/mounts > mtab Правим fstab:
UUID=deb3c552-be00-4102-9912-xxxxxxxxxxxx / btrfs defaults,discard,noatime,subvol=_active 0 0 UUID=deb3c552-be00-4102-9912-xxxxxxxxxxxx /usr btrfs defaults,compress=lzo,discard,noatime,subvol=_active/usr 0 0 UUID=deb3c552-be00-4102-9912-xxxxxxxxxxxx /btrfs btrfs defaults,noatime,discard 0 0
При этом не забываем комментировать лишние строки... initrd: # make-initrd /etc/sysconfig/grub2: в переменной GRUB_CMDLINE_LINUX_DEFAULT добавить "fastboot rootflags=subvol=_active" # grub-mkconfig -o /boot/grub/grub.cfg # vim /boot/grub/grub.cfg Ищем "linux /vmlinuz-2.6.39.100.5.1-el-uek-alt1-old root=" и правим root=/dev/sdb3 на старый root. Удаляем "fastboot rootflags=subvol=_active". Это нужно только для того чтобы иметь возможность загрузить старую ОС если были допущены ошибки.
Покидаем chroot
# exit # reboot
=== after reboot
пришибить остатки рейда и сказать:
# btrfs device add /dev/sda3 / # btrfs filesystem balance /
Для тех у кого btrfs-progs от oracle:
# btrfs scrub start
По завершению scrub можно:
# btrfs filesystem defragment /
О балансировке с данными в raid1 и не только
- в kernel-image-el-uek нету.
std-def 3.5 из сизфа, проверено работает:
# btrfs dev balance start -dconvert=raid1 /btrfs
проверяем:
# btrfs fi df /btrfs/ Data, RAID1: total=52.00GB, used=40.87GB System, RAID1: total=32.00MB, used=16.00KB System, DUP: total=32.00MB, used=0.00 System: total=4.00MB, used=0.00 Metadata, RAID1: total=10.00GB, used=324.06MB
http://www.mail-archive.com/linux-btrfs@vger.kernel.org/msg14365.html https://btrfs.wiki.kernel.org/index.php/Balance_Filters
Замена диска
Добавляем новый диск к файловой системе
btrfs device add /dev/sdY /btrfs
Удаляем из файловой системы старый диск
btrfs device del /dev/sdX /btrfs
Смотрим во второй консоли:
watch btrfs filesystem show
Как разобрать RAID1
Q: Зачем
A: Нада, сказал главный ёжик (с портала ёжиков)
# mount -o remount,degraded / # mount -o remount,degraded /btrfs # mount -o remount,degraded /usr # btrfs bal start -dconvert=single /btrfs # btrfs bal start -mconvert=single --force /btrfs # btrfs dev remove /dev/${partition} /btrfs # btrfs bal start -mconvert=dup /btrfs типа того, летим на btrfs без массива :)
Ограничение размера subvolume
- Судя по history http://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git будет из коробки в 3.6.
- btrfs-progs тоже нужно будут патчить.
Полезно почитать
http://www.seedsofgenius.net/uncategorized/zfs-vs-btrfs-a-reference
https://btrfs.wiki.kernel.org/index.php/Mount_options
https://wiki.archlinux.org/index.php/Installing_on_Btrfs_root
http://www.mail-archive.com/linux-btrfs@vger.kernel.org/msg14365.html