ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
18 июля
628775
Николай Коровин (04.11.2015 02:19, просмотров: 540) MBedder
Вот интересно, одну цепочку кластеров можно сразу двум файлам отдать только в FAT или в других FS тоже реально? Ситуация: пишется какой-то бесконечный закольцованный лог. Резать его на 100500 файлов и удалять старые по мере появления новых по какой-то причине некомильфо. Допустим, формат потоковый и допускает резню почти в любом месте. Когда диск почти забит, мы создаём файлу новую "голову" в один кластер, содержащую заголовок, немножко нулей и чуть-чуть данных для соблюдения целостности структур, которые резать нельзя. Затем записываем в директорию имя этого файла и даём ему цепочку кластеров, начинающихся с этого нового головного, после которого идёт весь наш большой старый файл, ну не сначала ессно, а сколько-то отступив. В этот момент у нас существуют два файла, немного нарушающие спецификацию FAT, но диск безраздельно наш (хард в эмбеде) и нам плевать. Допустим, это видео в камере наблюдения (ну так нагляднее всего). Первый файл -- это видео с нулевой секунды, а второй, который со своей головой и телом откуда-то не с самого начала первого -- допустим, с десятой секунды. Дальше мы помечаем те кластеры первого файла, которые не входят во второй (ну то есть один головной и начало тела) как свободные и после этого удаляем запись о файле. Соответственно, можно продолжать дописывать второй файл. Ни в один момент времени на диске нет файлов, лишённых, скажем, заголовка. Т. е. внезапный останов системы не грозит слётом данных. Ессно, у флэшки свои тонкости с порядком "записал-высвободил-стёр", но речь пока не о них. Речь о файловой системе. FAT -- тварь простая, но, пардон, максимальный размер файла... так что может ли эта метода работать на более современных FS? Я чисто теоретически, если что.