LINUX.ORG.RU
ФорумTalks

Вопрос о перезаписи данных и целостности данных на файловой системе. Оцените идею и нужность подобной файловой системы.

 , , ,


0

1

Предположим есть файловая система, она размещена на твердотельном накопителе не поддерживающим TRIM и прочие шутки.

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

  1. Какая то программа перезаписывает часть файла новыми данными.
  2. Файловая система пишет обновлённые данные в одну из ячеек с наименьшим циклом количеством циклов записи. То есть в свободную ячейку.
  3. Записывает в циклический журнал резервную копию информации о изменяемом файле
     номер_записи время_записи ID_файла количество_блоков список_блоков флаг_открытия_дескриптора
  4. Перезаписывает в файловом дескрипторе список блоков использованных для файла и увеличивает счётчик его изменений.
  5. Записывает в циклический журнал
     номер_записи время_записи ID_файла количество_блоков список_блоков флаг_успешного_завершения 
  6. Если дескриптор был перезаписан более порогового количества раз, то переносит его. Проводит аудит каждой ячейки и записывает в наиболее изношенные комбинацию блокировки и помещает её в карту ненадёжных блоков.
  7. При создании нового дескриптора или расширения его на свободные ячейки, счётчик изменений дескриптора повышает до максимального значения износа блоков на которых расположен дескриптор.
  8. Все битовые карты блоков отмечающих занятость, исправность и приблизительную изношенность хранятся в упакованном виде как разреженный массив, а при монтировании файловой системы распаковываются в оперативную память. В случае сбоя, формируются заново сканированием всех дескрипторов файлов.

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

Какие могут быть слабые места данной файловой системы кроме крайне медленной работы (будет сбрасывать данные малыми порциями) при заполненности близкой к максимальной?

Перемещено Shaman007 из development

☆☆☆

Последнее исправление: beastie (всего исправлений: 1)

она размещена на твердотельном накопителе не поддерживающим TRIM и прочие шутки.

опять изобретаешь для таких как ты, особенных?

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

но если аналитики одобрят и донки-конг проплатит, ты исследуешь и создашь прототип?

SevikL ★★★★★
()

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

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

Если советуют прям вот так «не включайте TRIM на SSD», то очевидно потому, что статью писали ламоботы.

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

не поддерживающим TRIM

Такие есть?

ну, мужики сетуют в drivers/ata/libata-core.c:

    /* devices that don't properly handle queued TRIM commands */
    { "Micron_M500_*",      NULL,   ATA_HORKAGE_NO_NCQ_TRIM |
                        ATA_HORKAGE_ZERO_AFTER_TRIM, },
    { "Crucial_CT*M500*",       NULL,   ATA_HORKAGE_NO_NCQ_TRIM |
                        ATA_HORKAGE_ZERO_AFTER_TRIM, },
    { "Micron_M5[15]0_*",       "MU01", ATA_HORKAGE_NO_NCQ_TRIM |
                        ATA_HORKAGE_ZERO_AFTER_TRIM, },
    { "Crucial_CT*M550*",       "MU01", ATA_HORKAGE_NO_NCQ_TRIM |
                        ATA_HORKAGE_ZERO_AFTER_TRIM, },
    { "Crucial_CT*MX100*",      "MU01", ATA_HORKAGE_NO_NCQ_TRIM |
                        ATA_HORKAGE_ZERO_AFTER_TRIM, },
    { "Samsung SSD 8*",     NULL,   ATA_HORKAGE_NO_NCQ_TRIM |
                        ATA_HORKAGE_ZERO_AFTER_TRIM, },
    { "FCCT*M500*",         NULL,   ATA_HORKAGE_NO_NCQ_TRIM |
                        ATA_HORKAGE_ZERO_AFTER_TRIM, },

    /* devices that don't properly handle TRIM commands */
    { "SuperSSpeed S238*",      NULL,   ATA_HORKAGE_NOTRIM, },

// «счастливый» обладатель samsung 800 pro

metawishmaster ★★★★★
()
Последнее исправление: metawishmaster (всего исправлений: 1)

Какие могут быть слабые места данной файловой системы кроме крайне медленной работы

Похожие ФС уже есть. Астрономическое время монтирования, но это было в дизайн заложено.

Не то что бы я собирался разрабатывать такую файловую систему

Для прототипирования можно FUSE заюзать.

i-rinat ★★★★★
()

Как то так и работает фирмварь SSD. Ты решил вынести это на уровень ФС?

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

Как то так и работает фирмварь SSD. Ты решил вынести это на уровень ФС?

Да, файловая система для флешек, которые обычно дешёвы из за отсутствия контролера выравнивающего изнашивание.

rezedent12 ☆☆☆
() автор топика
Ответ на: комментарий от Deleted

кстати, в вики дебиана советуют не включать трим, это почему ?

Старый совет, раньше TRIM в debian глючно работал.

rezedent12 ☆☆☆
() автор топика
Ответ на: комментарий от Deleted

А первых байтов хватит для записи количества обращений к ячейке?

К блоку, в блоке 4 килобайта обычно.

rezedent12 ☆☆☆
() автор топика
Ответ на: комментарий от i-rinat

К блоку, в блоке 4 килобайта обычно.

Ты бы про устройство флеш-памяти почитал, что ли...

Читал, нигде информации про обязательный размер блока не видел. Но в какой то статье прочитал про то что следует разделы на флешке выравнивать по границам 4 килобайтных блоков дабы не увеличивать износ.

rezedent12 ☆☆☆
() автор топика
Последнее исправление: rezedent12 (всего исправлений: 1)
Ответ на: комментарий от rezedent12

Ок. К блоку. И все 4 килобайта под счетчик, что ли? Или сколько. Больше конкретики бы. И чем плох подход, когда ищутся «бедблоки», какие преимущества у твоего метода. Блок все равно испортиться, отработав свой ресурс.

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

А, понятно.

То что ты описал похоже на COW — ZFS, btrfs.

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

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

Про существующие ФС для флеш-памяти ты не читал, ведь так?

i-rinat ★★★★★
()
Ответ на: комментарий от Deleted

Ок. К блоку. И все 4 килобайта под счетчик, что ли?

Первые несколько байт блока под счётчике его перезаписи.

Блок все равно испортиться, отработав свой ресурс.

Смысл в том что бы сделать износ равномерным.

rezedent12 ☆☆☆
() автор топика
Ответ на: комментарий от outsider

В этом вся соль. Нужно разработать прототип YOBA-контейнера для флешки.

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

YOBA-FS. Во всех кинотеатрах страны.

На бейсике.

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

Как равномерным, если первые несколько байт будут дергать на каждый чих. Всегда. Хотя что там. Я далек от всего этого. Просто интерес обычный.

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

Про существующие ФС для флеш-памяти ты не читал, ведь так?

Про FAT32 и exFAT читал.

facepalm.

F2FS.

Stil ★★★★★
()

Уже реализовано на уровне контроллера

Midael ★★★★★
()

Да когда же вы, черти, в LORCODE научитесь??! Я понимаю ещё новенькие, но звездатые? Крик души, чесслово!

После того, как я уже не первую сотню топиков поправил (и часто у одних и тех же), могли бы и сами уже смекнуть.

beastie ★★★★★
()
Последнее исправление: beastie (всего исправлений: 1)
Ответ на: комментарий от outsider

отформатировал флешку и куда делись данные об износе ячеек?

Пропали. Впрочем наверно можно будет получить их в ходе сканирования ячеек на определённые заголовки блоков.

rezedent12 ☆☆☆
() автор топика
Ответ на: комментарий от Deleted

Как равномерным, если первые несколько байт будут дергать на каждый чих. Всегда.

На каждую перезапись блока. А не «на каждый чих».

rezedent12 ☆☆☆
() автор топика
Ответ на: комментарий от i-rinat

FAT32 и exFAT

А-а-а, ты чисто поржать. Я ж не знал, что ты не серьёзно.

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

rezedent12 ☆☆☆
() автор топика
Ответ на: комментарий от Nervous

Питуха не забудьте заранее утвердить. А то опять соскочит %)

Он и так соскочит. Цирк то все равно будет. Нужно ещё найти главного спонсора.

ya-betmen ★★★★★
()
Ответ на: комментарий от rezedent12

Пока не серьёзно, только идею обдумываю

Зачем тогда приволок в техраздел? Фантазируй в толксах.

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

Пропали.

Ну ты ведь понял, что такое нафик никому не сдалось.

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

Ну так. Блок при обычной эксплуатации может не перезаписываться полностью. А «первые несколько байт» будут в работе всегда и износятся быстрее. Не просто так такие задачи выполняет контроллер.

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

Ну так. Блок при обычной эксплуатации может не перезаписываться полностью. А «первые несколько байт» будут в работе всегда и износятся быстрее. Не просто так такие задачи выполняет контроллер.

Нет. Контроллер оперирует именно с блоками, а не с отдельными ячейками.

rezedent12 ☆☆☆
() автор топика
Ответ на: комментарий от beastie

«Фуууууу! Верстальщики!» - кричали ОНИ.
Вот и докричались.

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

После того, как я уже не первую сотню топиков поправил (и часто у одних и тех же), могли бы и сами уже смекнуть.

Но ты же поправляешь и ругаешься, а как правильно сделать не говоришь.

rezedent12 ☆☆☆
() автор топика

Лучше забуха́й.

pacify ★★★★★
()

Есть обновляемый массив содержащий данные по количеству циклов записи в каждый блок

Бессмысленно, современные ssd тасуют блоки в рамках микропрошивки. Да даже жесткие винты так делают.

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

Бессмысленно, современные ssd тасуют блоки в рамках микропрошивки. Да даже жесткие винты так делают.

Это не для SSD, а для флешки.

rezedent12 ☆☆☆
() автор топика

Открой для себя /dev/random

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