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

  • 22 августа 2023 г. 8:27
Ответы на вопрос 11
Вот несколько рекомендаций по материалам, в которых вы можете узнать больше о дисках (HDD, SSD) и файловых системах:

1. "File Systems: Structures, Algorithms, and Implementations" от Remzi H. Arpaci-Dusseau и Andrea C. Arpaci-Dusseau - Эта книга представляет собой исчерпывающий обзор различных файловых систем и их особенностей. Она рассматривает различные алгоритмы и структуры данных, используемые в файловых системах, и объясняет, как они влияют на производительность.

2. "Understanding the Linux Kernel" от Daniel P. Bovet и Marco Cesati - Эта книга предназначена для тех, кто хочет понять внутреннее устройство ядра Linux. Она объясняет, как файловые системы реализованы в ядре, включая принципы работы операций чтения и записи, использование дескрипторов и другие связанные темы.

3. "The Design of the UNIX Operating System" от Maurice J. Bach - Эта классическая книга детально рассматривает внутреннее устройство операционной системы UNIX, включая файловые системы. Она объясняет, как файлы и каталоги организованы, как работают операции чтения и записи, а также другие важные аспекты файловых систем.

4. "File System Forensic Analysis" от Brian Carrier - Эта книга фокусируется на анализе файловых систем с точки зрения цифрового следователя. В ней рассматриваются различные файловые системы и их структуры, а также методы для извлечения данных и восстановления файлов из поврежденных или удаленных разделов.

5. "Linux Filesystems" от William von Hagen - Эта книга предлагает обзор различных файловых систем, доступных в Linux. Она объясняет их особенности, производительность и использование в практических сценариях.

Кроме того, вы можете обратиться к официальной документации различных файловых систем, таких как ext4, Btrfs или XFS, чтобы изучить их особенности и возможности более подробно.

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

Эти же принципы можно применить при использовании любой сторонней библиотеки. Однако помните, что любой уровень абстракции может добавить накладные расходы, поэтому важно подобрать подходящую библиотеку для вашей задачи.
Попытайтесь изучить устройство стандартной POSIX файловой системы, например ext2 или ext3. Как только основные концепции станут вам ясны, понять новые функциональности будет гораздо проще. RecordIO и webdataset по сути очень похожи на любые другие контейнеры, где данные хранятся в сжатом виде. Понимание того, как хранится один файл в любой файловой системе, даст вам интуитивное представление о преимуществах использования контейнеров. Кроме того, вы можете изучить устройство файловой системы FAT16 и сравнить его с EXT3. 

Файловые системы представляют собой уровень абстракции ОС, который может значительно добавлять накладные расходы при работе с данными, но упрощает процесс. Они могут различаться в зависимости от того, как организуют хранение данных.
Прежде всего, важно задуматься о том, как вы будете обрабатывать данные. Например, случайный или многопоточный доступ может значительно отличаться от последовательного в зависимости от используемого устройства хранения. Использование контроллеров или драйверов может ускорить процесс внедрения данных. 

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

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

mmap - это способ работы с файлами, который может быть более производительным и удобным. Это позволяет обращаться к файлам как к области памяти, что ускоряет процесс.
 

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

- [https://ru.wikipedia.org/wiki/Журналирование_файловых_систем](https://ru.wikipedia.org/wiki/Журналирование_файловых_систем)
- [https://ru.wikipedia.org/wiki/Ext4](https://ru.wikipedia.org/wiki/Ext4)
- [https://metebalci.com/blog/a-minimum-complete-tutorial-of-linux-ext4-file-system/](https://metebalci.com/blog/a-minimum-complete-tutorial-of-linux-ext4-file-system/)
- [https://1001file.ru/article/teoriya-kompyuternoy-gramotnosti/](https://1001file.ru/article/teoriya-kompyuternoy-gramotnosti/)
- [https://xakep.ru/2016/10/28/file-system-secrets/](https://xakep.ru/2016/10/28/file-system-secrets/)

К сожалению, я не встречал конкретных книг на эту тему... Возможно, вам стоит погуглить "анатомия файловых систем" на русском и "filesystems anatomy" на английском. 
 

Не очень понятно, почему вам нужна файловая система, когда вы можете просто использовать раздел диска - это уберет любой излишний оверхед. Рекомендуется использовать NVMe. Количество чтений и записей будет зависеть от вашего выбранного паттерна - пишите и читайте максимально большими последовательными блоками, тогда вы сможете обеспечить оптимальную скорость чтения и записи, возможно, до 5 GB в секунду.
Похожие вопросы