OSDev

для всех
Текущее время: 29 мар 2024, 02:10

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 19 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Разработка собственной ФС
СообщениеДобавлено: 17 апр 2018, 22:51 

Зарегистрирован: 04 мар 2018, 21:34
Сообщения: 55
На osdev.org крайне мало информации об этом, есть лишь реализация готовых файловых систем.
Есть ли книги/статьи/мануалы собственно о построении фс?

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разработка собственной ФС
СообщениеДобавлено: 18 апр 2018, 03:21 

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разработка собственной ФС
СообщениеДобавлено: 18 апр 2018, 13:31 
Аватара пользователя

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

_________________
Yet Other Developer of Architecture.
The mistery of Yoda’s speech uncovered is:
Just an old Forth programmer Yoda was.

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разработка собственной ФС
СообщениеДобавлено: 18 апр 2018, 22:48 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1126
Для начало не плохо понять, что такое файловая система.
С одной стороны это структура на диске.
С другой стороны это набор прикладных программ для создания и перемещения файлов (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), как сделать безопасную запись для дисков с горячим отключением, как сделать кооректное закрытие хэнделов.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разработка собственной ФС
СообщениеДобавлено: 19 апр 2018, 10:22 
Аватара пользователя

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

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разработка собственной ФС
СообщениеДобавлено: 13 май 2018, 10:31 

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

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

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

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разработка собственной ФС
СообщениеДобавлено: 02 июн 2018, 16:30 

Зарегистрирован: 04 мар 2018, 21:34
Сообщения: 55
Подключил я ext2 и виртуальную, но проблемы возникли с тестирование.

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разработка собственной ФС
СообщениеДобавлено: 04 июн 2018, 23:18 

Зарегистрирован: 21 сен 2007, 17:24
Сообщения: 1088
Откуда: Балаково
У меня компьютер сломался и сейчас не стоит ни какая Ubunta, поэтому не могу оценить масштаб бедствия. Иногда система жёстко глючит, если оперативной памяти мало. А так - хз.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разработка собственной ФС
СообщениеДобавлено: 06 июн 2018, 13:09 

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

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разработка собственной ФС
СообщениеДобавлено: 06 июн 2018, 23:51 

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


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 19 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB