LINUX.ORG.RU

Пара вопросов про B-деревья и Reiser4


0

2

Как согласуются данное утверждение Шишкина

Понял только, что они хотят фичу «tail packing» файловой системы reiserfs, совершенно не понимая, как работают алгоритмы и структуры данных последней. Скажу только, что в B-деревьях понятие «tail packing» начисто лишено какого-либо смысла. И, более того, попытка размещать в таких деревьях айтемы переменного размера ведёт к неограниченной внутренней фрагментации.

И, например, этот фрагмент вывода debugfs.reiser4 -t

NODE (3884) LEVEL=1 ITEMS=4 SPACE=0 MKFS ID=0x449d7b78 FLUSH=0x0
#0  TAIL (plain40): [2b0c7:4(FB):53444c5f6e6574:2b0de:2f3a] OFF=28, LEN=1222, flags=0x0
------------------------------------------------------------------------------
#1  TAIL (plain40): [2b0c7:4(FB):5448414e4b532e:2b0d5:0] OFF=1250, LEN=874, flags=0x0
------------------------------------------------------------------------------
#2  TAIL (plain40): [2b0c7:4(FB):646f6f6d322e63:2b0cf:0] OFF=2124, LEN=1135, flags=0x0
------------------------------------------------------------------------------
#3  TAIL (plain40): [2b0c7:4(FB):646f6f6d326d2e:2b0d0:0] OFF=3259, LEN=685, flags=0x8942
==============================================================================
?

Почему внутренние узлы заполнены не так:
Указатель0Ключ1Указатель1...КлючNУказательN
а так:
Ключ1Указатель1...КлючNУказательN
?
Или я неправильно понимаю вывод debugfs.reiser4?

NODE (5087) LEVEL=3 ITEMS=2 SPACE=3976 MKFS ID=0x449d7b78 FLUSH=0x0
#0  NPTR (nodeptr40): [29:1(SD):0:2a:0] OFF=28, LEN=8, flags=0x0 [5088]
------------------------------------------------------------------------------
#1  NPTR (nodeptr40): [2b0df:4(FB):66696c655f3139:2b1a0:650] OFF=36, LEN=8, flags=0x0 [5007]
На сайте Namesys структура branch node тоже подобным образом изображена, с количеством указателей, равным количеству ключей (ведь Item_Body там обозначает именно ключ?):
http://web.archive.org/web/20071024001500/http://www.namesys.com/v4/v4.html#node_formats

Кстати, структуру этого самого Node Pointer Item'а я так и не нашел.

★★

> Как согласуются данное утверждение Шишкина [...] И, например, этот фрагмент вывода debugfs.reiser4 -t NODE (3884) LEVEL=1 ITEMS=4 SPACE=0 MKFS ID=0x449d7b78 FLUSH=0x0 #0 TAIL (plain40): [2b0c7:4(FB):53444c5f6e6574:2b0de:2f3a] OFF=28, LEN=1222, flags=0x0

Согласуются замечательно. В том же интервью есть подсказка: в файловых системах семейства reiser B-деревья НЕ ИСПОЛЬЗУЮТСЯ. Там совсем другие структуры данных.

anonymous
()
Ответ на: комментарий от anonymous

>в файловых системах семейства reiser B-деревья НЕ ИСПОЛЬЗУЮТСЯ

В Reiser4 ИСПОЛЬЗУЕТСЯ модифицированное B+дерево. Один из листов которого приведен в примере.
Насколько я вижу, Reiser4 хитро режет маленькие файлы и хвосты на куски так, чтобы заполнять ими листья без внутренней фрагментации, а Btrfs просто засовывает их туда «как есть».

shatsky ★★
() автор топика
Ответ на: комментарий от shatsky

> В Reiser4 ИСПОЛЬЗУЕТСЯ модифицированное B+дерево

Это популярное заблуждение

хитро режет маленькие файлы и хвосты на куски

Всё, где хитро «режется» и «засовывается» - это уже не B-деревья, и даже не их модификации. В B-деревьях и их модификациях (В+, В* и прочая лабудень) элементы НЕДЕЛИМЫЕ. А значит там работают совсем другие алгоритмы.

anonymous
()
Ответ на: комментарий от shatsky

> Ты бы хоть ознакомился с общедоступной информацией, прежде чем что-то утверждать, что ли.

Шацкий, ты бы лучше в код рейзеров заглянул. Где тебе там В-деревья приснились? :)

anonymous
()
Ответ на: комментарий от anonymous

>ты бы лучше в код рейзеров заглянул
Читай fs/reiser4/tree.[ch] до просветления.

Где тебе там В-деревья приснились?

B+дерево, одно.

shatsky ★★
() автор топика

Зачем ты ворошишь этот труп? Пили лучше BtrFS

anonymous
()
Ответ на: комментарий от shatsky

> Читай fs/reiser4/tree.[ch] до просветления.

А зачем их читать? Имхо там только высокоуровневые операции на дереве. А балансировка в совсем другом месте.

B+дерево, одно.

Найди уже определение В+дерева где-нибудь в энциклопедии..

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.