В ходе работы, специалистам в различных областях компьютерных технологий связанных прямо или косвенно с исследованием или разработкой программного обеспечения для операционных систем, часто приходится взаимодействовать с различными файловыми системами и структурами [1]. В связи с этим возникает потребность разбираться в структуре и форме хранения информации на персональном компьютере. Так же необходимо упомянуть, что современные операционные системы и файловые системы требуют эффективных инструментов для управления данными. Файловая система EXT4, широко используемая в Linux, обладает множеством преимуществ, таких как высокая производительность и надежность. Однако, как и любая другая файловая система, она может сталкиваться с проблемами, связанными с потерей данных, повреждением файлов и другими ошибками. В таких случаях пользователям необходимы инструменты для анализа данных.
Разработка приложения на Python с использованием библиотеки PyQt представляет собой перспективный подход к созданию пользовательского интерфейса для работы с логическими дисками и их содержимым. Целью данного приложения является создание удобного и функционального инструмента для вывода информации о суперблоке файловой системы EXT4, что позволит пользователям лучше понимать состояние своих дисков.
PyQt - это версия библиотек классов Qt для языка Python, а так же набор инструментального программного обеспечения для создания кросс-платформенных приложений с графическим интерфейсом (GUI) [2]. Ключевыми аспектами Qt являются: кроссплатформенность - Qt позволяет разработчикам писать код один раз и запускать его на различных операционных системах без значительных изменений; модульность - Qt состоит из множества модулей, включая: QtCore, QtGui, QtWidgets, QtQuick , QtNetwork; встроенные инструменты разработки - в комплекте с Qt поставляется Qt Creator - интегрированная среда разработки (IDE), которая упрощает процесс создания приложений.
Плюсами использования данного фреймворка является то, что он обладает:
Файловая система EXT4 (Fourth Extended Filesystem) является одной из самых популярных и широко используемых файловых систем в операционных системах на базе Linux. Она была разработана как улучшение предыдущих версий EXT2 и EXT3, предлагая ряд новых функций и улучшений, которые делают её более эффективной и надежной.
К основным параметрам характеризующим данную ФС можно отнести:
Кратко структура EXT4 проиллюстрирована на рисунке 2.
Суперблок - это ключевая структура данных в файловой системе, которая хранит информацию о самой файловой системе, такой как её размер, количество доступных блоков, инодов и другие метаданные. Основные поля суперблока EXT4 (таблица 1) включают размер файловой системы, общее количество блоков, количество доступных блоков, общее количество инодов, количество свободных инодов, уникальный идентификатор файловой системы, версию файловой системы, информацию о журналировании, размер блока и временные метки. Также в суперблоке содержится информация о состоянии файловой системы, например, была ли она правильно размонтирована или произошел сбой.
| Offset | Size | Name | Mean |
|---|---|---|---|
| /*00*/ | le32 | s_inodes_count | Inodes count |
| le32 | s_blocks_count_lo | Blocks count | |
| le32 | s_r_blocks_count_lo | Reserved blocks count | |
| le32 | s_free_blocks_count_lo | Free blocks count | |
| /*10*/ | le32 | s_free_inodes_count | Free inodes count |
| le32 | s_first_data_block | First Data Block | |
| le32 | s_log_block_size | Block size | |
| le32 | s_log_cluster_size | Allocation cluster size | |
| /*20*/ | le32 | s_blocks_per_group | Blocks per group |
| le32 | s_clusters_per_group | Clusters per group | |
| le32 | s_inodes_per_group | Inodes per group | |
| le32 | s_mtime | Mount time | |
| /*30*/ | le32 | s_wtime | Write time |
| le16 | s_mnt_count | Mount count |
| Size | Name | Mean | |
|---|---|---|---|
| le16 | s_max_mnt_count | Maximal mount count | |
| le16 | s_magic | Magic signature | |
| le16 | s_state | File system state | |
| le16 | s_errors | Behaviour when detecting errors | |
| le16 | s_minor_rev_level | Minor revision level | |
| /*40*/ | le32 | s_lastcheck | Time of last check |
| le32 | s_checkinterval | Max. time between checks | |
| le32 | s_creator_os | OS | |
| le32 | s_rev_level | Revision level | |
| /*50*/ | le16 | s_def_resuid | Default uid for reserved blocks |
| le16 | s_def_resgid | Default gid for reserved blocks | |
| le32 | s_first_inod | First non-reserved inode | |
| le16 | s_inode_size | Size of inode structure | |
| le16 | s_block_group_nr | Block group # of this Superblock | |
| le32 | s_feature_compat | Compatible feature set |
Алгоритм разработки кроссплатформенного приложения на языке Python с использованием фреймворка PyQt для вывода информации из логического диска с ФС EXT4 включает в себя следующие шаги:
Пример:
Разработка кроссплатформенного приложения для получения информации о логических дисках представляет собой интересную и полезную задачу, которая была реализована в рамках данного проекта. Использование PyQt и Python позволило добиться возможности запускать приложение на различных операционных системах, приложение обладает интуитивно понятным интерфейсом, а так же актуальной информацией об активных логических дисках и выводит данные из суперблока диска с ФС EXT4. Дальнейшие шаги исследований и разработки приложения включают в себя более углубленное изучение файловой системы EXT4 ОС Linux, добавление более расширенного функционала, а так же оптимизация текущего.