добрый вечер! после того как btrfs стало официально промыщленным. оно стало модным, потому наконец-то задам этот вопрос.
[вопрос не связан со стабильность.. так-что парни, кто хотел потролить — в этой теме не получится :) ..облом:)]
вопрос вкратце: если я в btrfs форматирую 1 жёсткий диск (не мультидисковый btrfs), все настройки поумолчанию, то как (в каком режиме?) btrfs хранит данные\метаданные?
далее — всё на примере:
начальная фаза: создаю тестовый образ с btrfs:
[root@localhost ~]# truncate -s 1200M test-btrfs.img
[root@localhost ~]# mkfs.btrfs test-btrfs.img
Btrfs v3.17
See http://btrfs.wiki.kernel.org for more information.
Turning ON incompat feature 'extref': increased hardlink limit per file to 65536
ERROR: device scan failed 'test-btrfs.img' - Block device required
fs created label (null) on test-btrfs.img
nodesize 16384 leafsize 16384 sectorsize 4096 size 1.17GiB
[root@localhost ~]# mount test-btrfs.img /mnt
[root@localhost ~]# lsblk | grep -Fi '/mnt'
loop0 7:0 0 1.2G 0 loop /mnt
[root@localhost ~]#
размер образа специально чуть-больше чем 1-гигобайта, чтобы btrfs не включал бы оптимизацию для маленьких образов (так что если вы создадите совсем маленький образ — у вас может быть что-то не так как у меня)
далее мы видим что:
[root@localhost ~]# btrfs filesystem df /mnt
Data, single: total=8.00MiB, used=0.00B
System, DUP: total=8.00MiB, used=16.00KiB
System, single: total=4.00MiB, used=0.00B
Metadata, DUP: total=60.00MiB, used=112.00KiB
Metadata, single: total=8.00MiB, used=0.00B
GlobalReserve, single: total=16.00MiB, used=0.00B
[root@localhost ~]#
и вот как раз вопрос — что это за режим?
очевидно что дата хранится как single.. но как хранятся метаданные? dup ? single ?
продолжаем эксперимент.. конвертируем метаданные в single:
[root@localhost ~]# btrfs filesystem balance start -v -mconvert=single /mnt
Dumping filters: flags 0x6, state 0x0, force is off
METADATA (flags 0x100): converting, target=281474976710656, soft is off
SYSTEM (flags 0x100): converting, target=281474976710656, soft is off
ERROR: error during balancing '/mnt' - Invalid argument
There may be more info in syslog - try dmesg | tail
[root@localhost ~]# btrfs filesystem balance start -v -mconvert=single /mnt -f
Dumping filters: flags 0xe, state 0x0, force is on
METADATA (flags 0x100): converting, target=281474976710656, soft is off
SYSTEM (flags 0x100): converting, target=281474976710656, soft is off
Done, had to relocate 4 out of 5 chunks
[root@localhost ~]#
результат:
[root@localhost ~]# btrfs filesystem df /mnt
Data, single: total=8.00MiB, used=64.00KiB
System, single: total=32.00MiB, used=16.00KiB
Metadata, single: total=128.00MiB, used=112.00KiB
GlobalReserve, single: total=16.00MiB, used=0.00B
всё логично, да.. комментировать тут особо нечего.. корверт метаданных в single прозошёл успешно..
теперь пробуем конвертировать метаданные в dup:
[root@localhost ~]# btrfs filesystem balance start -v -mconvert=dup /mnt
Dumping filters: flags 0x6, state 0x0, force is off
METADATA (flags 0x100): converting, target=32, soft is off
SYSTEM (flags 0x100): converting, target=32, soft is off
Done, had to relocate 2 out of 3 chunks
результат:
[root@localhost ~]# btrfs filesystem df /mnt
Data, single: total=8.00MiB, used=64.00KiB
System, DUP: total=32.00MiB, used=16.00KiB
Metadata, DUP: total=64.00MiB, used=112.00KiB
GlobalReserve, single: total=16.00MiB, used=0.00B
почему так мало строчек?
как вернуть состояние которое было изначально? и что вобще это было за состояние-такое (до момента наших конвертаций) ?
спасибо всем заранее :-)
#################### UPDATED ####################
решение вопроса: как btrfs располагает данные\метаданные — по умолчанию. и как вернуть это состояние? (комментарий)
суть:
по умолчанию используется dup для метаданных. (кой-какой мусор в single — это фигня)
но для SSD дисков поумолчанию dup — НЕ используется.