OSDev
http://osdev.su/

Разработка собственной ФС
http://osdev.su/viewtopic.php?f=5&t=2274
Страница 1 из 2

Автор:  grenders22 [ 17 апр 2018, 22:51 ]
Заголовок сообщения:  Разработка собственной ФС

На osdev.org крайне мало информации об этом, есть лишь реализация готовых файловых систем.
Есть ли книги/статьи/мануалы собственно о построении фс?

Правильно ли понимаю что для начала надо получить доступ к хранилищу, а после задача укладывается в распределении места под "файлы" + фрагментация и прочее? И почему не все существующие фс поддерживают файлы более 4 гб? Связано ли это с типом хранилища?

Автор:  SII [ 18 апр 2018, 03:21 ]
Заголовок сообщения:  Re: Разработка собственной ФС

Большая часть современных ФС появилась эдак 100500 лет назад, когда никто особо не заморачивался с максимальными размерами файлов -- ибо диски всё равно были мелкие. Так что ограничения имеют исторический характер, и отбросить их не всегда можно из-за необходимости сохранения совместимости.

Автор:  Yoda [ 18 апр 2018, 13:31 ]
Заголовок сообщения:  Re: Разработка собственной ФС

Бо́льшую часть информации, необходимой для создания ФС, можно почерпнуть из сравнительной статьи википедии: https://en.wikipedia.org/wiki/Comparison_of_file_systems. Там имеются количественные ограничения, список поддерживаемых фич со ссылками на описание этих фич и ссылки на статьи по каждой конкретной ФС.

Автор:  pavia [ 18 апр 2018, 22:48 ]
Заголовок сообщения:  Re: Разработка собственной ФС

Для начало не плохо понять, что такое файловая система.
С одной стороны это структура на диске.
С другой стороны это набор прикладных программ для создания и перемещения файлов (ls, cp, mkdir, chekfs, format ...)
С третий это набор API для осуществления работы над файлами к примеру часть стандарта POSIX или как класс TFileSysDriver в ОС ultibo.

Во первых предлагаю ознакомится с устройством UNIX это минимально возможная ФС.
http://bitsavers.trailing-edge.com/pdf/ ... _Jun72.pdf
Про более современный подход можно почитать в
Бах Морис-Архитектура операционной системы UNIX-Prentice-Hall (1996)

Но он не является современным. Есть теория СУБД современные файловые системы построены на их принципах. Начиная к примеру с Б+ деревьев которые как известно оптимизированы по числу обращений к связке диск+кэш с её не равномерной скоростью доступа.

Заканчивая теорией транзакций и снепшотов, time machine и версионных СУБД.

Правда как говорит голос разума теория СУБД не может быть применена к теории ФС напрямую. В СУБД за её работу отвечает 1 человек один архитектор и он знает что у него творится в подчинение. Когда как ФС такого нет тут неизвестно какую программу кто поставил и как она будет работать. Приходится делать защиту.

Плюс куча других вопросов. К примеру как учесть в ФС экспоненциальный рост объемов жёстких дисков и данных. Как подменить корень (fackroot), как сделать безопасную запись для дисков с горячим отключением, как сделать кооректное закрытие хэнделов.

Автор:  D-S [ 19 апр 2018, 10:22 ]
Заголовок сообщения:  Re: Разработка собственной ФС

Вхождение в тему можно начать отсюда:
http://www.nobius.org/dbg/practical-fil ... design.pdf
Книга старая, но хорошо объясняет базовые детели с точки зрения разработчика ФС. Находил куски из этой книги на русском но не самые интересные (из начала, где объясняют совсем базовую базу).

Когда коговорят, что надо "делать ФС на СУБД" имеют в виду не то, что надо брать СУБД, все механизмы СУБД а файлы хранить в BLOB-ах. Речь о том, что отттуда нужны базовые механизмы для управление метаданными - журналы, снапшоты, оптимизированный поиск, оптимизированное чтение\запись. ФС в отличии от СУБД не требуется оперировать большим количеством разношёрстных данных - для ФС идеально это хорошее key-value хранилище от годной nosql СУБД. Это моё мнение, которое подтверждается дизайном относительно новых ФС: ReFS, ZFS.

Самое лучшее - взять готовое, разобратся и адаптировать себе. Совместимость штука очень важная. Лучший кандидат - ext4.

Автор:  scuter [ 13 май 2018, 10:31 ]
Заголовок сообщения:  Re: Разработка собственной ФС

grenders22 писал(а):
На osdev.org крайне мало информации об этом, есть лишь реализация готовых файловых систем.
Есть ли книги/статьи/мануалы собственно о построении фс?

вот и я не пойму информация элементарная всё достаточно адекватно и просто, но пишут гигантские тома листать замучаешься эту документацию.
лучше всего конечно стандарт читать там хоть поменьше написано.
grenders22 писал(а):
Правильно ли понимаю что для начала надо получить доступ к хранилищу, а после задача укладывается в распределении места под "файлы" + фрагментация и прочее?

главные места ФС это первый сегмент(заголовок), место где указано свободное/занятое место на диске(его ещё банком называют), формирование списка элементов в папке(и конкретно как этот элемент будет сформирован), хранение содержимого файлов(фрагментация, архивация и т.п.) и самое последнее наверно журналирование.
grenders22 писал(а):
И почему не все существующие фс поддерживают файлы более 4 гб? Связано ли это с типом хранилища?

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

скорее всего то что пытаются разработать уже есть, просто об это ни кто не знает. :lol:

Автор:  grenders22 [ 02 июн 2018, 16:30 ]
Заголовок сообщения:  Re: Разработка собственной ФС

Подключил я ext2 и виртуальную, но проблемы возникли с тестирование.

По совету Himik'a обновил до 18.04 свою убунту. Но дела не пошли на лад. Я решил опустит тестирование при помощи qemu, т.к. все попытки создания виртуального тома были тщетны. В итоге встает другой вопрос. Я записал загрузчик на флешку кидаю ядро и cfg. Тут все хорошо. По умолчанию фдешка форматируется только в fat. При попытке форматировать в ext2 получаю зарутованную флешку, при всем этом она становится ext3/ext4. К сути вопроса. Как создать на флешке том который для моей ос? Нужно ли вообще создавать том или достаточно правильно форматнуть? И как именно форматнуть? ЕСли форматнуть то можно задать "домашнюю папку"

Сейчас флеш выглядит таким образом
Код:
boot
--kernel
--grub (папка с самим загрузчиком)
----fonts
.............
----grubenv

Автор:  Himik [ 04 июн 2018, 23:18 ]
Заголовок сообщения:  Re: Разработка собственной ФС

У меня компьютер сломался и сейчас не стоит ни какая Ubunta, поэтому не могу оценить масштаб бедствия. Иногда система жёстко глючит, если оперативной памяти мало. А так - хз.

Автор:  grenders22 [ 06 июн 2018, 13:09 ]
Заголовок сообщения:  Re: Разработка собственной ФС

Himik писал(а):
поэтому не могу оценить масштаб бедствия. Иногда система жёстко глючит, если оперативной памяти мало.

Так и не понял в чем дело, но помогла полная переустановка и возврат к 16.04. Создал imgзагрузил туда картинку и "дал" их qemu. Результатот решил поделится ниже. Уж больно красиво вышло, спасибо!
Изображение
И все же, а как быть в случае не с эмулятором? На жестком сначала содержит информацию о самой фс, граб как и ядро содержится в одном разделе, картинку грузит и добавляет на экран пока само ядро. Куда бы я не пихал свою картинку не видит и все тут :( В добавок ко всему он не только не видит картинок, он не может подключить ext2. Т.е. флешку вроде форматнул в ext2
Код:
sudo mkfs.ext2 -n FLASH /dev/sdb1 #потом ставлю сюда граб

А в итоге получаю ошибку о переходе из виртуальной в физическую

Автор:  Himik [ 06 июн 2018, 23:51 ]
Заголовок сообщения:  Re: Разработка собственной ФС

У меня нормально работала версия 17.10.1.
Обычно в главном меню открывал "Диски", а в нём можно настраивать разделы и форматировать.
Учти, что архитектура компьютера в виртуалке не имеет ничего общего с архитектурой базового компьютера. Там может быть другой контроллер IDE, другой BIOS, другое всё. Наверно поэтому и не запускается из-за несовместимости.
В принципе, если у тебя на компе установлена Ubuntа и Grub, то его можно использовать для запуска своей ОС. Просто добавить на жёсткий диск второй раздел для своей ОС, и добавить в Grub своё меню.

Страница 1 из 2 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/