Btrfs: различия между версиями
м (→BTRFS на ALT: typo) |
(Ext3/4 в Btrfs) |
||
Строка 1: | Строка 1: | ||
{{stub}} | {{stub}} | ||
=BTRFS на ALT= | == BTRFS на ALT == | ||
Подтом (subvolume) не является блочным устройством, но в каждом томе btrfs создаётся один подтом верхнего уровня (subvolid=5), в этом подтоме могут создаваться другие подтома и снапшоты. | Подтом (subvolume) не является блочным устройством, но в каждом томе btrfs создаётся один подтом верхнего уровня (subvolid=5), в этом подтоме могут создаваться другие подтома и снапшоты. | ||
Строка 11: | Строка 11: | ||
В данной статье использовался iso-образ ALT 10.0 Workstation K beta 20211222. Т.к. для [[Timeshift#Режим_BTRFS|Timeshift]] система должна быть установлена на раздел BTRFS с разбивкой на подразделы @ и @home, то в данной статье рассмотрен именно этот вариант. | В данной статье использовался iso-образ ALT 10.0 Workstation K beta 20211222. Т.к. для [[Timeshift#Режим_BTRFS|Timeshift]] система должна быть установлена на раздел BTRFS с разбивкой на подразделы @ и @home, то в данной статье рассмотрен именно этот вариант. | ||
==Установка ALT на btrfs== | === Установка ALT на btrfs === | ||
В некоторых дистрибутивах ALT (Рабочая станция, Рабочая станция K, Сервер виртуализации) btrfs доступен в инсталляторе. | |||
В этом случае при установке системы, на этапе «Подготовка диска» можно воспользоваться профилем разбиения вручную, создать swap и корень системы (файловая система BtrFS): | |||
[[File:Install-system-btrfs.png|Разметка диска]] | [[File:Install-system-btrfs.png|Разметка диска]] | ||
Строка 19: | Строка 21: | ||
Далее установить систему как обычно. | Далее установить систему как обычно. | ||
=== Преобразование Ext3/4 в Btrfs === | |||
{{Attention|Убедитесь, что у вас есть рабочие резервные копии данных. }} | |||
{{Attention|Используйте btrfs-convert из btrfs-progs 5.15.1-alt1 и выше. }} | |||
Если дистрибутив не позволяет выбрать файловую систему BtrFS на этапе установки, можно при установке системы выбрать файловую систему Ext2/3/4, а после завершения установки системы преобразовать файловую систему в BtrFS. | |||
Загрузиться в LiveCD. Убедиться что корень системы установлен в {{path|/dev/sda2}}: | |||
<source lang="text" highlight="1"># lsblk | |||
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT | |||
loop0 7:0 0 1,7G 1 loop /.ro | |||
sda 8:0 0 48G 0 disk | |||
├─sda1 8:1 0 1023M 0 part | |||
└─sda2 8:2 0 47G 0 part | |||
sr0 11:0 1 4,9G 0 rom /image</source> | |||
Проверить файловую систему на ошибки и выполнить конвертацию: | |||
<source lang="text" highlight="1,5"># fsck.ext4 /dev/sda2 | |||
e2fsck 1.46.2 (28-Feb-2021) | |||
/dev/sda2: clean, 228869/3080192 files, 2106725/12320512 blocks | |||
==Создание подтомов== | # btrfs-convert /dev/sda2 | ||
btrfs-convert from btrfs-progs v5.15.1 | |||
Source filesystem: | |||
Type: ext2 | |||
Label: | |||
Blocksize: 4096 | |||
UUID: 94ce97d2-86c4-4f68-8130-98c360d094f2 | |||
Target filesystem: | |||
Label: | |||
Blocksize: 4096 | |||
Nodesize: 16384 | |||
UUID: 94bbd745-0f41-4be1-becb-287f67df3f8e | |||
Checksum: crc32c | |||
Features: extref, skinny-metadata, no-holes (default) | |||
Data csum: yes | |||
Inline data: yes | |||
Copy xattr: yes | |||
Reported stats: | |||
Total space: 50464817152 | |||
Free space: 40641953792 (80.54%) | |||
Inode count: 3080192 | |||
Free inodes: 2851323 | |||
Block count: 12320512 | |||
Create initial btrfs filesystem | |||
Create ext2 image file | |||
Create btrfs metadata | |||
Copy inodes [O] [ 223962/ 228869] | |||
Conversion complete</source> | |||
Смонтировать файловую систему и подготовить chroot: | |||
<source lang="text" highlight="1-3"># mount /dev/sda2 /mnt | |||
# for i in dev sys proc run; do mount -o bind /$i /mnt/$i; done | |||
# chroot /mnt/ /bin/bash</source> | |||
Просмотреть UUID файловой системы и скопировать его: | |||
<source lang="text" highlight="1"># blkid | grep sda2 | |||
/dev/sda2: UUID="94bbd745-0f41-4be1-becb-287f67df3f8e" UUID_SUB="b6c759f5-1a11-4f51-b482-f366cc111d58" TYPE="btrfs"</source> | |||
{{Note|UUID файловой системы также отображается в выводе команды btrfs-convert.}} | |||
Внести изменения в файл {{path|/etc/fstab}}: для корня системы изменить UUID, изменить тип файловой системы ext4→btrfs (исходная строка закомментирована): | |||
<source lang="text">#UUID=94ce97d2-86c4-4f68-8130-98c360d094f2 / ext4 relatime 1 1 | |||
UUID=94bbd745-0f41-4be1-becb-287f67df3f8e / btrfs relatime 1 1</source> | |||
Обновить GRUB: | |||
<source lang="text" highlight="1,5"># grub-install /dev/sda | |||
Выполняется установка для платформы i386-pc. | |||
Установка завершена. Ошибок нет. | |||
# update-grub | |||
Generating grub configuration file ... | |||
Found theme: /boot/grub/themes/spworkstation/theme.txt | |||
Found background image: /usr/share/plymouth/themes/spworkstation/grub.jpg | |||
Found linux image: /boot/vmlinuz | |||
Found initrd image: /boot/initrd.img | |||
Found linux image: /boot/vmlinuz-std-def | |||
skipping symlink: /boot/vmlinuz-std-def | |||
Found linux image: /boot/vmlinuz-5.10.83-std-def-alt0.c9f.2 | |||
Found initrd image: /boot/initrd-5.10.83-std-def-alt0.c9f.2.img | |||
done</source> | |||
Перегенерировать initrd, иначе система не загрузится. Для этого выполнить команду make-initrd с указанием версии ядра установленного по умолчанию: | |||
<source lang="text" highlight="1"># make-initrd --kernel=5.10.83-std-def-alt0.c9f.2</source> | |||
{{Note|Версию ядра можно увидеть в выводе команды {{cmd|update-grub}} или, выполнив команду: | |||
<source lang="text" highlight="1"># ls -1d /lib/modules/* | |||
/lib/modules/5.10.83-std-def-alt0.c9f.2</source>}} | |||
Выйти из chroot, перезагрузиться. | |||
{{Note| Если что-то пошло не так, всегда есть возможность отката, если резервный подтом ext2_saved не удалён. Для отмены изменений следует использовать команду {{cmd|btrfs-convert -r /dev/partition}} }}. | |||
Убедившись в отсутствии проблем, можно удалить подтом ext2_saved резервной копии: | |||
<source lang="text" highlight="1,4"># btrfs subvolume list ./ | |||
ID 256 gen 3 top level 5 path ext2_saved | |||
# btrfs subvolume delete /ext2_saved | |||
Delete subvolume (no-commit): '//ext2_saved</source> | |||
== Создание подтомов == | |||
Загрузиться в LiveCD. | |||
Примонтировать систему в каталог {{path|/mnt/alt}}: | Примонтировать систему в каталог {{path|/mnt/alt}}: | ||
Строка 59: | Строка 165: | ||
Далее необходимо внести изменения в файл {{path|/etc/fstab}} и обновить загрузчик Grub. Для этого: | Далее необходимо внести изменения в файл {{path|/etc/fstab}} и обновить загрузчик Grub. Для этого: | ||
# | #Создать каталог {{path|/mnt/alt2}} | ||
#:<source lang="text" highlight="1 | #:<source lang="text" highlight="1"># mkdir /mnt/alt2</source> | ||
# mkdir /mnt/alt2</source> | |||
#Проверить расположение системы и параметры монтирования: | #Проверить расположение системы и параметры монтирования: | ||
#:<source lang="text" highlight="1"># mount |grep alt | #:<source lang="text" highlight="1"># mount |grep alt | ||
/dev/sda2 on /mnt/alt type btrfs (rw,relatime,space_cache=v2,subvolid=5,subvol=/)</source> | /dev/sda2 on /mnt/alt type btrfs (rw,relatime,space_cache=v2,subvolid=5,subvol=/)</source> | ||
#Примонтировать btrfs раздел с опцией subvol=@: | #Примонтировать btrfs раздел с опцией subvol=@: | ||
#:<source lang="text" highlight="1"># mount /dev/sda2 alt2 -o subvol=@</source> | #:<source lang="text" highlight="1"># mount /dev/sda2 /mnt/alt2 -o subvol=@</source> | ||
#Примонтировать временные интерфейсные файловые системы в {{path|/mnt/alt2}} (из хостовой системы в гостевую): | #Примонтировать временные интерфейсные файловые системы в {{path|/mnt/alt2}} (из хостовой системы в гостевую): | ||
#:<source lang="text" highlight="1"># for i in dev sys proc run; do mount --bind -v /$i alt2/$i; done | #:<source lang="text" highlight="1"># for i in dev sys proc run; do mount --bind -v /$i /mnt/alt2/$i; done | ||
mount: /dev bound on /mnt/alt2/dev. | mount: /dev bound on /mnt/alt2/dev. | ||
mount: /sys bound on /mnt/alt2/sys. | mount: /sys bound on /mnt/alt2/sys. | ||
Строка 74: | Строка 179: | ||
mount: /run bound on /mnt/alt2/run.</source> | mount: /run bound on /mnt/alt2/run.</source> | ||
#Сделать chroot в {{path|/mnt/alt2}}: | #Сделать chroot в {{path|/mnt/alt2}}: | ||
#:<source lang="text" highlight="1"># chroot alt2</source> | #:<source lang="text" highlight="1"># chroot /mnt/alt2</source> | ||
#Внести изменения в {{path|/etc/fstab}}: | #Внести изменения в {{path|/etc/fstab}}: | ||
#:<source lang="text">UUID=9306bd96-eaee-41d9-a65d-6385c68357d2 / btrfs relatime,nofail,subvol=@ 1 1 | #:<source lang="text">UUID=9306bd96-eaee-41d9-a65d-6385c68357d2 / btrfs relatime,nofail,subvol=@ 1 1 | ||
Строка 92: | Строка 197: | ||
Found memtest image: /boot/memtest-5.31b.bin | Found memtest image: /boot/memtest-5.31b.bin | ||
done</source> | done</source> | ||
#Установить загрузчик в /dev/sda ( | #Установить загрузчик в /dev/sda (только обновления загрузчика недостаточно): | ||
#:<source lang="text" highlight="1"># grub-install /dev/sda</source> | #:<source lang="text" highlight="1"># grub-install /dev/sda</source> | ||
#Выйти из chroot: | #Выйти из chroot: | ||
Строка 101: | Строка 206: | ||
Снимки/snapshots удобно делать и использовать в программе с графическим интерфейсом [[Timeshift#Режим_BTRFS|Timeshift]]. | Снимки/snapshots удобно делать и использовать в программе с графическим интерфейсом [[Timeshift#Режим_BTRFS|Timeshift]]. | ||
== Ссылки == | |||
См. также [https://.altlinux.org/%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_AltLinux_%D0%BD%D0%B0_Btrfs Первая версия] | См. также [https://.altlinux.org/%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_AltLinux_%D0%BD%D0%B0_Btrfs Первая версия] | ||
https://btrfs.wiki.kernel.org/index.php/Conversion_from_Ext3 | |||
[[Category:FileSystems]] | [[Category:FileSystems]] |
Версия от 11:46, 14 января 2022
BTRFS на ALT
Подтом (subvolume) не является блочным устройством, но в каждом томе btrfs создаётся один подтом верхнего уровня (subvolid=5), в этом подтоме могут создаваться другие подтома и снапшоты. Подтома (подразделы, subvolumes) создаются ниже вершины дерева btrfs по мере необходимости, например, для / и /home создаются подтома с именами @ и @home. Это означает, что для монтирования подтомов необходимы определенные параметры вместо корня системы btrfs по умолчанию:
- подтом @ монтируется в / с помощью опции subvol=@
- подтом @home (если он используется) монтируется с помощью параметра монтирования subvol=@home
В данной статье использовался iso-образ ALT 10.0 Workstation K beta 20211222. Т.к. для Timeshift система должна быть установлена на раздел BTRFS с разбивкой на подразделы @ и @home, то в данной статье рассмотрен именно этот вариант.
Установка ALT на btrfs
В некоторых дистрибутивах ALT (Рабочая станция, Рабочая станция K, Сервер виртуализации) btrfs доступен в инсталляторе.
В этом случае при установке системы, на этапе «Подготовка диска» можно воспользоваться профилем разбиения вручную, создать swap и корень системы (файловая система BtrFS):
Далее установить систему как обычно.
Преобразование Ext3/4 в Btrfs
Если дистрибутив не позволяет выбрать файловую систему BtrFS на этапе установки, можно при установке системы выбрать файловую систему Ext2/3/4, а после завершения установки системы преобразовать файловую систему в BtrFS.
Загрузиться в LiveCD. Убедиться что корень системы установлен в /dev/sda2:
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 1,7G 1 loop /.ro
sda 8:0 0 48G 0 disk
├─sda1 8:1 0 1023M 0 part
└─sda2 8:2 0 47G 0 part
sr0 11:0 1 4,9G 0 rom /image
Проверить файловую систему на ошибки и выполнить конвертацию:
# fsck.ext4 /dev/sda2
e2fsck 1.46.2 (28-Feb-2021)
/dev/sda2: clean, 228869/3080192 files, 2106725/12320512 blocks
# btrfs-convert /dev/sda2
btrfs-convert from btrfs-progs v5.15.1
Source filesystem:
Type: ext2
Label:
Blocksize: 4096
UUID: 94ce97d2-86c4-4f68-8130-98c360d094f2
Target filesystem:
Label:
Blocksize: 4096
Nodesize: 16384
UUID: 94bbd745-0f41-4be1-becb-287f67df3f8e
Checksum: crc32c
Features: extref, skinny-metadata, no-holes (default)
Data csum: yes
Inline data: yes
Copy xattr: yes
Reported stats:
Total space: 50464817152
Free space: 40641953792 (80.54%)
Inode count: 3080192
Free inodes: 2851323
Block count: 12320512
Create initial btrfs filesystem
Create ext2 image file
Create btrfs metadata
Copy inodes [O] [ 223962/ 228869]
Conversion complete
Смонтировать файловую систему и подготовить chroot:
# mount /dev/sda2 /mnt
# for i in dev sys proc run; do mount -o bind /$i /mnt/$i; done
# chroot /mnt/ /bin/bash
Просмотреть UUID файловой системы и скопировать его:
# blkid | grep sda2
/dev/sda2: UUID="94bbd745-0f41-4be1-becb-287f67df3f8e" UUID_SUB="b6c759f5-1a11-4f51-b482-f366cc111d58" TYPE="btrfs"
Внести изменения в файл /etc/fstab: для корня системы изменить UUID, изменить тип файловой системы ext4→btrfs (исходная строка закомментирована):
#UUID=94ce97d2-86c4-4f68-8130-98c360d094f2 / ext4 relatime 1 1
UUID=94bbd745-0f41-4be1-becb-287f67df3f8e / btrfs relatime 1 1
Обновить GRUB:
# grub-install /dev/sda
Выполняется установка для платформы i386-pc.
Установка завершена. Ошибок нет.
# update-grub
Generating grub configuration file ...
Found theme: /boot/grub/themes/spworkstation/theme.txt
Found background image: /usr/share/plymouth/themes/spworkstation/grub.jpg
Found linux image: /boot/vmlinuz
Found initrd image: /boot/initrd.img
Found linux image: /boot/vmlinuz-std-def
skipping symlink: /boot/vmlinuz-std-def
Found linux image: /boot/vmlinuz-5.10.83-std-def-alt0.c9f.2
Found initrd image: /boot/initrd-5.10.83-std-def-alt0.c9f.2.img
done
Перегенерировать initrd, иначе система не загрузится. Для этого выполнить команду make-initrd с указанием версии ядра установленного по умолчанию:
# make-initrd --kernel=5.10.83-std-def-alt0.c9f.2
# ls -1d /lib/modules/*
/lib/modules/5.10.83-std-def-alt0.c9f.2
Выйти из chroot, перезагрузиться.
.
Убедившись в отсутствии проблем, можно удалить подтом ext2_saved резервной копии:
# btrfs subvolume list ./
ID 256 gen 3 top level 5 path ext2_saved
# btrfs subvolume delete /ext2_saved
Delete subvolume (no-commit): '//ext2_saved
Создание подтомов
Загрузиться в LiveCD.
Примонтировать систему в каталог /mnt/alt:
# mkdir /mnt/alt
# mount /dev/sda2 /mnt/alt/
Перейти в каталог /mnt/alt:
# cd /mnt/alt/
Создать подтома (@ и @home) в системе btrfs на разделе /dev/sda2, который смонтирован в /mnt/alt:
# btrfs subvolume create ./@
Create subvolume './@'
# btrfs subvolume create ./@home
Create subvolume './@home'
Убедиться, что подтома созданы верно (вывести список подтомов):
# btrfs subvolume list ./
ID 256 gen 46 top level 5 path @
ID 257 gen 47 top level 5 path @home
Перенести каталоги с пользователями из каталога /home в /@home:
# mv ./home/* ./@home/
Перенести остальные каталоги (кроме /@home и /home) в подтом @:
# mv ./boot ./@/
# mv ./etc ./@/
и т.д. Каталог /home нужно не переносить, а скопировать в подтом @ (т.к. он будет точкой монтирования для подтома @home):
# cp -r ./home ./@/
В каталоге /mnt/alt должно остаться три каталога:
# ls ./
@ home @home
Далее необходимо внести изменения в файл /etc/fstab и обновить загрузчик Grub. Для этого:
- Создать каталог /mnt/alt2
# mkdir /mnt/alt2
- Проверить расположение системы и параметры монтирования:
# mount |grep alt /dev/sda2 on /mnt/alt type btrfs (rw,relatime,space_cache=v2,subvolid=5,subvol=/)
- Примонтировать btrfs раздел с опцией subvol=@:
# mount /dev/sda2 /mnt/alt2 -o subvol=@
- Примонтировать временные интерфейсные файловые системы в /mnt/alt2 (из хостовой системы в гостевую):
# for i in dev sys proc run; do mount --bind -v /$i /mnt/alt2/$i; done mount: /dev bound on /mnt/alt2/dev. mount: /sys bound on /mnt/alt2/sys. mount: /proc bound on /mnt/alt2/proc. mount: /run bound on /mnt/alt2/run.
- Сделать chroot в /mnt/alt2:
# chroot /mnt/alt2
- Внести изменения в /etc/fstab:
UUID=9306bd96-eaee-41d9-a65d-6385c68357d2 / btrfs relatime,nofail,subvol=@ 1 1 UUID=9306bd96-eaee-41d9-a65d-6385c68357d2 /home btrfs relatime,nofail,subvol=@home 1 1 UUID=14e23578-5cec-48cb-98e4-220e78138123 swap swap defaults
- Обновить загрузчик:
# update-grub Generating grub configuration file ... Found theme: /boot/grub/themes/branding-xalt-kworkstation/theme.txt Found background image: /boot/grub/themes/branding-xalt-kworkstation/grub.png Found linux image: /boot/vmlinuz-un-def skipping symlink: /boot/vmlinuz-un-def Found linux image: /boot/vmlinuz Found initrd image: /boot/initrd.img Found linux image: /boot/vmlinuz-5.14.21-un-def-alt1 Found initrd image: /boot/initrd-5.14.21-un-def-alt1.img Found memtest image: /boot/memtest-5.31b.bin done
- Установить загрузчик в /dev/sda (только обновления загрузчика недостаточно):
# grub-install /dev/sda
- Выйти из chroot:
# exit
- Перезагрузить систему.
Создание снимков
Снимки/snapshots удобно делать и использовать в программе с графическим интерфейсом Timeshift.
Ссылки
См. также Первая версия
https://btrfs.wiki.kernel.org/index.php/Conversion_from_Ext3