Чтобы читать и писать свое дерево, вы будете вызывать файловую систему несколько раз для каждого узла. Это намного дороже, чем любой здравомыслящий код, который вы можете придумать для обхода образа памяти.
Является ли это разумным подходом, зависит от того, каким будет ваш шаблон использования. Если при типичном вызове вашего кода вы ожидаете прочитать всю древовидную структуру, поработайте над этим, а затем запишите его полностью - вам лучше собрать его в один файл. Однако, если вы ожидаете читать / работать / изменять только несколько узлов, без чтения в большей части дерева, разница в производительности между обходом структуры каталогов и выполнением нескольких операций поиска / чтения для обхода Дерево, хранящееся в одном файле, будет намного меньше, и вполне возможно, стоит сделать первое для простоты / ясности / избежания переизобретения колес. Более того, если несколько процессов делают это одновременно, блокировка узлов и поддеревьев становится намного проще с подходом на основе каталогов.
Имейте в виду, что для некоторых обычно используемых файловых систем время открытия записи в каталоге зависит от общего количества записей в каталоге.
РЕДАКТИРОВАТЬ: я делал подобные вещи с ext3 для CGI-интерфейса сайта; не изобретая колесо, мы сделали прототип более быстрым и простым в обслуживании, масштабирование операций чтения / записи / блокировки очень хорошо масштабировалось, , но очень частые изменения - порядка сотен в секунду - самой структуры каталогов плохо работали на реальном хранилище; в конце я реструктурировал вещи так, чтобы разделы дерева каталогов, к которым очень часто добавлялись / удалялись записи каталогов, оказались на томе tmpfs - для меня этот набор состояний можно (дорого) восстановить из того, что хранится в менее энергозависимой памяти после перезагрузки. У меня мало опыта работы с ZFS, и я не знаю предполагаемый шаблон использования, поэтому не знаю, будет ли это проблемой для вас. Если бы я делал это для очень интенсивно используемого сайта, я бы, вероятно, вместо этого свернул свою собственную библиотеку именованных блокировок.