Після ганебного ступору відносно btrfs під час установки Arch Linux стало цікаво - чи може btrfs гідно замінити LVM?..
До цього я вивчав btrfs на домашньому нетбуці, але справа не дійшла далі об"єднання розділів у рейд.
У цейтноті з наскоку інтуїтивно вирішити LVM-мовські задачі, використовуючи лише btrfs, не вдалося.
Заздалегідь я вирішив не використовувати btrfs в LV, бо окрім того, що це зручно, інших плюсів не має: буде трохи повільніше працювати, LVM snapshots недосконалі тощо.
Порівняння потрібних мені можливостей LVM та btrfs:
1) LVM дозволяє створювати VGs, які можна збільшувати і збільшувати додаванням нових і нових фізичних розділів. Btrfs створює ФС в яку теж можна додавати нові фізичні розділи. Залишилося незрозумілим одне: можна створити ФС менше ніж фізичний розділ (mkfs.btrfs -b50G /dev/sdaX), або зменшити потім (btrfs fi re -10G /), але навіщо це робити і як можна використовувати залишений простір - не ясно.
2) З VG можна нарізати LVs. В btrfs можна створювати subvolumes.
3) На LV можна створити "любу" ФС і в підсумку отримати букет з різних ФС. Btrfs - це лише ФС btrfs.
4) З LV можна створювати snapshots. Btrfs справляється с цим завданням ще краще.
5) Можна задати розмір LV. А от btrfs типово цього не робить, тобто якийсь юзер може заповнити усю ФС із subvolume home. Пишуть, що є вихід - це квоти.
6) Питання з btrfs FAQ.
7) How big my stanpshots?
du only tells you how big the entire snapshot is and not how much of the snapshot is exclusive to this snapshot only.
With quota and qgroups we can see that.
Далі тренування на нетбуці.
Що я наразі маю: два фізичні розділи об"єднані в RAID0.
# btrfs filesystem show /
Label: none uuid: 87b676ef-c950-4554-abf3-137c8f59abfe
Total devices 2 FS bytes used 17.21GiB
devid 1 size 20.00GiB used 9.78GiB path /dev/sda6
devid 2 size 20.00GiB used 9.78GiB path /dev/sda7
# btrfs fi df /
Data, RAID0: total=18.00GiB, used=16.84GiB
System, RAID1: total=32.00MiB, used=16.00KiB
Metadata, RAID1: total=768.00MiB, used=381.80MiB
GlobalReserve, single: total=128.00MiB, used=0.00B
# btrfs fi usage /
Overall:
Device size: 40.00GiB
Device allocated: 19.56GiB
Device unallocated: 20.44GiB
Device missing: 0.00B
Used: 17.59GiB
Free (estimated): 21.60GiB (min: 11.38GiB)
Data ratio: 1.00
Metadata ratio: 2.00
Global reserve: 128.00MiB (used: 0.00B)
Data,RAID0: Size:18.00GiB, Used:16.84GiB
/dev/sda6 9.00GiB
/dev/sda7 9.00GiB
Metadata,RAID1: Size:768.00MiB, Used:381.70MiB
/dev/sda6 768.00MiB
/dev/sda7 768.00MiB
System,RAID1: Size:32.00MiB, Used:16.00KiB
/dev/sda6 32.00MiB
/dev/sda7 32.00MiB
Unallocated:
/dev/sda6 10.22GiB
/dev/sda7 10.22GiB
"Щоб продати якийсь непотріб, треба спочатку купити якийсь непотріб..."
Щоб видалити один розділ, треба спочатку все вмістити на той що залишається.
Тому видаляю snapshot root_15-07-20_22-17.
# btrfs sub li /
ID 259 gen 87947 top level 5 path root_after_installation
ID 362 gen 87988 top level 5 path root
ID 375 gen 87975 top level 362 path var/lib/machines
ID 406 gen 87947 top level 5 path root_15-07-20_22-17
# mount /subvolumes/
# ls /subvolumes/
root root_15-07-20_22-17 root_after_installation
# cd /subvolumes/
# du -ch -d1 ./
732M ./root_after_installation
8.4G ./root
13G ./root_15-07-20_22-17
22G ./
22G total
# btrfs sub del ./root_15-07-20_22-17
Delete subvolume (no-commit): '/subvolumes/root_15-07-20_22-17'
Теперь намагаюся видалити фізичний розділ /dev/sda7.
btrfs device delete /dev/sda7 /
ERROR: error removing the device '/dev/sda7' - unable to go below two devices on raid1
btrfs balance start -dconvert=raid0 /
Done, had to relocate 9 out of 13 chunks
btrfs device delete /dev/sda7 /
ERROR: error removing the device '/dev/sda7' - unable to go below two devices on raid1
# btrfs balance start -mconvert=raid0 --force /
Done, had to relocate 4 out of 13 chunks
# btrfs device remove /dev/sda7 /
# btrfs filesystem show /
Label: none uuid: 87b676ef-c950-4554-abf3-137c8f59abfe
Total devices 1 FS bytes used 7.95GiB
devid 1 size 20.00GiB used 9.78GiB path /dev/sda6
# btrfs fi df /
Data, single: total=9.00GiB, used=7.68GiB
System, single: total=32.00MiB, used=16.00KiB
Metadata, single: total=768.00MiB, used=269.92MiB
GlobalReserve, single: total=96.00MiB, used=0.00
Наступне завдання таке: створити фізичний розділ, добавити в btrfs, створити subvolumes та назначити квоти.
802 cp -r /home/ /home1
803 ls /home/
804 ls /home1/
805 du -ch -d1 /home
806 du -ch -d1 /home1
807 umount /home
808 rmdir /home
809 btrfs de add
810 btrfs de add /dev/sda7 /
811 btrfs de add /dev/sda7 / -f
814 cd /
821 btrfs sub cr /home
822 ls /home
829 cp -ax --reflink=always home1/. home
830 du -ch -d1 /home
831 du -ch -d1 /home1
834 rm -r /home1
836 du -ch -d1 /home
# btrfs sub li /
ID 259 gen 88171 top level 5 path root_after_installation
ID 362 gen 88701 top level 5 path root
ID 375 gen 88463 top level 362 path var/lib/machines
ID 432 gen 88703 top level 362 path home
# btrfs qg sh -r /
ERROR: can't perform the search - No such file or directory
ERROR: can't list qgroups: No such file or directory
# btrfs qu en /
# btrfs qg sh -r /
qgroupid rfer excl max_rfer
-------- ---- ---- --------
0/5 16.00KiB 16.00KiB none
0/259 709.96MiB 676.28MiB none
0/362 3.17GiB 3.13GiB none
0/375 16.00KiB 16.00KiB none
0/432 3.40GiB 3.40GiB none
# btrfs qg li 40G /home
# btrfs qg sh -r /
qgroupid rfer excl max_rfer
-------- ---- ---- --------
0/5 16.00KiB 16.00KiB none
0/259 709.96MiB 676.28MiB none
0/362 3.17GiB 3.13GiB none
0/375 16.00KiB 16.00KiB none
0/432 3.40GiB 3.40GiB 40.00GiB
Можливо, раніше знав, але вже забув.
ОтветитьУдалить1) Є flat (плоска), nested (вкладена) та mixed (змішана) subvolumes layouts (схеми створення підтомів).
Плоска - це якщо не монтувати вищий рівень ФС, але в ньому на одному рівні створити потрібні підтома, які потім монтувати у fstab.
Вкладена - це якщо створювати підтома там, де вони потрібні бути. При цьому достатньо лише монтувати вищий рівень ФС, а підтома будуть монтуватися автоматично (не треба прописувати у fstab) і наслідувати параметри батьківського підтому.
У мене в результаті склалася змішана схема - не монтую вищий рівень, а на вищому рівні зберігаю підтома (крім home) і резервні знімки (плоска), підтом home створений в підтомі root і монтується автоматично (вкладена).
2) Вкладені підтома-нащадки виключаються при виконанні знімку батьківского підтому. Це я недавно виявив, коли не знайшов підтом home у знімку підтому root.