Предположим есть файловая система, она размещена на твердотельном накопителе не поддерживающим TRIM и прочие шутки.
Есть обновляемый массив содержащий данные по количеству циклов записи в каждый блок. Так же эта информация размещена в первых байтах каждого блока.
- Какая то программа перезаписывает часть файла новыми данными.
- Файловая система пишет обновлённые данные в одну из ячеек с наименьшим циклом количеством циклов записи. То есть в свободную ячейку.
- Записывает в циклический журнал резервную копию информации о изменяемом файле
номер_записи время_записи ID_файла количество_блоков список_блоков флаг_открытия_дескриптора
- Перезаписывает в файловом дескрипторе список блоков использованных для файла и увеличивает счётчик его изменений.
- Записывает в циклический журнал
номер_записи время_записи ID_файла количество_блоков список_блоков флаг_успешного_завершения
- Если дескриптор был перезаписан более порогового количества раз, то переносит его. Проводит аудит каждой ячейки и записывает в наиболее изношенные комбинацию блокировки и помещает её в карту ненадёжных блоков.
- При создании нового дескриптора или расширения его на свободные ячейки, счётчик изменений дескриптора повышает до максимального значения износа блоков на которых расположен дескриптор.
- Все битовые карты блоков отмечающих занятость, исправность и приблизительную изношенность хранятся в упакованном виде как разреженный массив, а при монтировании файловой системы распаковываются в оперативную память. В случае сбоя, формируются заново сканированием всех дескрипторов файлов.
Не то что бы я собирался разрабатывать такую файловую систему, но вопрос задать интересно.
Какие могут быть слабые места данной файловой системы кроме крайне медленной работы (будет сбрасывать данные малыми порциями) при заполненности близкой к максимальной?
Перемещено Shaman007 из development