1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/wizardforcel-llthw-zh

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
ex20.md 15 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 25.11.2024 03:02 8398775

Упражнения 20: Файловая система: модификация и создание файловых систем, tune2fs, mkfs

Исходный текст:

Exercise 20. Filesystems: modifying and creating filesystems, tune2fs, mkfs (https://archive.fo/CzHiN)

Автор: 飞龙

Лицензия: CC BY-NC-SA 4.0

С гордостью использую Google Translate.

Позвольте мне представить вам некоторые термины, связанные с файловой системой:

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

  • Индексный узел (Inode) — это структура, которая хранит всю информацию об объектах файловой системы (файлы, каталоги и т. д.), за исключением содержимого данных и имени файла.

  • Блок — это наименьшая единица дискового пространства, которую можно выделить. Обычно по умолчанию используется 4096 байт или 4 килобайта.

  • Журнал — это структура, позволяющая файловой системе отслеживать, что было записано. Это позволяет быстро определить, что не было правильно записано в случае сбоя питания или подобных проблем.

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

  1. Находит имя файла в каталоге, содержащем файл.
  2. Получает номер индексного узла файла.
  3. Использует номер для поиска индексного узла в области индексных узлов.
  4. Считывает расположение блока данных этого индексного узла.
  5. Читает файл из блока данных в этой позиции в области данных.

Теперь каждая файловая система имеет множество связанных с ней опций. Эти параметры можно просмотреть и изменить с помощью программы tune2fs. Вот вывод программы tune2fs -l /dev/sda8 с комментариями:

user1@vm1:~$ sudo tune2fs -l /dev/sda8
tune2fs 1.41.12 (17-May-2010)
# Это просто ярлык, может быть что угодно или ничего
Имя файловой системы тома: <нет>
# Здесь должно быть последнее место монтирования
Последний смонтированный: <недоступно>
# Уникальный идентификатор файловой системы
UUID файловой системы: 869db6b4-aea0-4a25-8bd2-f0b53dd7a88e
# Известное местоположение специального числа, которое определяет тип FS, попробуйте это:
# sudo dd if=/dev/sda8 of=/dev/stdout bs=1 skip=1080 count=2 | hexdump -C
Магическое число файловой системы: 0xEF53
# Версия ФС
Номер ревизии ФС: 1 (динамический)
# Включенные функции ФС
Функции файловой системы:
    # Это файловая система журнала. Файловая система журнала — это файловая система,
    # которая отслеживает изменения, происходящие в журнале (обычно это циклический журнал,
    # в определённом месте файловой системы), перед отправкой в основную файловую систему.
    # В случае сбоя системы или сбоя питания эта файловая система может быстрее
    # восстановиться и не может повредить.
    # http://en.wikipedia.org/wiki/Journaling_file_system
    has_journal
    # Имеет расширенные атрибуты, такие как расширенный ACL.
    ext_attr
    # Сохраняет пространство для системных данных, что позволяет ФС изменять размер.
    resize_inode
    # Использует индексы для ускорения поиска больших каталогов.
    dir_index
    # Хранит информацию о типе файла в записях каталога.
    filetype
    # Означает, что требуется запустить fsck.
    needs_recovery
    # Меньше резервных суперблоков, экономит место на больших ФС.
    sparse_super
    # Может ли содержать файлы размером более 2 ГБ. При создании файлов размером более 2 ГБ ядро автоматически устанавливает его.
    large_file
# dir_index использует какой хэш
Флаги файловой системы: signed_directory_hash
# Какие опции использовать при монтировании
Параметры монтирования по умолчанию: (нет)
# Требуется ли выполнение fsck
Состояние файловой системы: чистое
# Что делать в случае ошибки: продолжить, смонтировать только для чтения или выдать ошибку?
Поведение ошибок: Продолжить
# Какая ОС использует эту ФС
Тип файловой системы ОС: Linux
# Общее количество индексных узлов. Индексные узлы — это «inode». Его структура такова:
# хранит информацию обо всех объектах файловой системы (файлах, каталогах и других),
# кроме содержимого файла и имени файла. То есть количество ваших файлов не может превышать количество индексных узлов.
# Вот структура индексных узлов, описывающая, что хранится в структуре Inode:
#/* Структура Inode, появляющаяся в таблице Inode */
#struct dinode
#{ ushort  di_mode;     /* режим и тип файла   */
#  short   di_nlink;    /* количество ссылок на файл */
#  ushort  di_uid;      /* идентификатор пользователя владельца */
#  ushort  di_gid;      /* идентификатор группы владельца */
#  off_t   di_size;     /* количество байтов в файле */
#  char    di_addr[39]; /* адреса блоков диска    */
#  char    di_gen;      /* номер поколения файла  */
#  time_t  di_atime;    /* время последнего доступа */
#  time_t  di_mtime;    /* время последней модификации */
#  time_t  di_ctime;    /* время создания         */
#};
# Здесь также есть хорошее объяснение:
# http://support.tux4u.nl/dokuwiki/lib/exe/fetch.php?media=linux:disk_bestandssysteem:inode.pdf
Количество индексных узлов: 62464
# Сколько свободных индексных узлов в настоящее время
Свободные индексные узлы: 62452
# Первый блок на устройстве. Поскольку каждый раздел представлен как отдельное устройство,
# он установлен на 0.
Первый блок: 0
# Это номер узла первого индексного узла.
Первый индексный узел: 11
# Размер индексного узла, в байтах. В новых выпусках Linux это иногда увеличивается по умолчанию,
# чтобы разрешить хранение расширенных атрибутов в файлах, таких как временные метки в микросекундах.
Размер индексного узла: 256
# Пространство, необходимое для добавления полей индексного узла
Требуемый дополнительный размер: 28
# Требуемое пространство для дополнительных полей индексного узла. Неважно, потому что этот размер
# всегда является необходимым пространством
Желаемый дополнительный размер: 28
# Невидимый узел, который хранит журнал файловой системы.
Журнальный индексный узел: 8
# Количество блоков. Блок — это минимально выделяемое дисковое пространство.
# Вы можете использовать следующую формулу для расчёта размера раздела в ГБ:
# количество блоков * размер блока
# ------------------------
#         1024^3
Количество блоков: 249856
# Сколько блоков зарезервировано для суперпользователя. Обычные пользователи не могут использовать это
# зарезервированное пространство. Это сделано для того, чтобы система продолжала работать, чтобы предотвратить некоторые вредоносные программы
# решение заполнить все доступное дисковое пространство.
Зарезервированное количество блоков: 12492
# Сколько блоков в настоящее время свободно.
Свободное количество блоков: 241518
# Алгоритм, используемый для индексации каталогов (dir_index).
Алгоритм хеширования по умолчанию для каталогов: half_md4
# Пока что я могу сказать, что это начальное значение для алгоритма хеширования dir_index.
Семя хеш-функции каталога: d02c6099-bd06-4d29-a3d7-779df2aa2410
# Опции резервного копирования журнала.
Резервное копирование журнала: блоки индексных узлов                          #
# Размер блока, в байтах. 4096 байтов — это 4 КБ.
Размер блока: 4096
# Не реализовано в ex3 FS. Это функция, которая может записывать несколько небольших файлов в один блок,
# для экономии места.
Размер фрагмента: 4096
# Зарезервированный контроль, поэтому таблица дескрипторов групп, возможно, будет расти в будущем.
Зарезервировано **root (суперпользователь) shell**

1. Отключить монтирование `/tmp`, прочитав его местоположение из `/etc/fstab`.

2. Вывести UUID `/dev/sda8`, где `/dev/sda8` — это файловая система, смонтированная на `/tmp`.
3. Создать новую файловую систему на `/dev/sda8`.
4. Ещё раз вывести UUID `/dev/sda8`, чтобы увидеть изменения после создания новой файловой системы.
5. Добавить этот UUID в `/etc/fstab`.
6. Открыть `/etc/fstab` для редактирования.
7. Смонтировать новую созданную файловую систему. Это фактически проверка того, правильно ли вы заменили UUID, иначе появится сообщение об ошибке.
8. Установить проверку `/dev/sda8` каждые два раза при монтировании.
9. Размонтировать `/dev/sda8`.
10. Проверить `/dev/sda8`.
11. Смонтировать и последовательно четыре раза показать последние 4 строки файла `/var/log/messages`. Обратите внимание, что начиная с третьего раза система уведомит вас о необходимости запустить `e2fsck`. Если вы перезагрузите систему, она автоматически запустит `e2fsck` за вас.
12. Проверить `/dev/sda8`. `fsck` определит тип файловой системы и автоматически вызовет `e2fsck`.
13. Смонтировать все файловые системы. Если ошибок нет, упражнение выполнено.

## Дополнительное задание
+ Прочитать `man mkfs`, `man mkfs.ext3`, `man tune2fs`.
+ Изучить список `tune2fs -l` в верхней части страницы и прочитать счётчик для всех ваших файловых систем.
+ Вручную рассчитать размер файловой системы, используя формулу, предоставленную в описании блоков списка `tune2fs -l`.
+ Прочесть эту презентацию и выполнить всё, что в ней показано: <http://mcgrewsecurity.com/training/extx.pdf>.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/wizardforcel-llthw-zh.git
git@api.gitlife.ru:oschina-mirror/wizardforcel-llthw-zh.git
oschina-mirror
wizardforcel-llthw-zh
wizardforcel-llthw-zh
master