Инструменты пользователя

Инструменты сайта


disks_and_fs

Диски и файловые системы

Инструменты для работы с дисками

  • parted — инструмент командной строки, который поддерживает как таблицу MBR, так и таблицу GPT;
  • gparted — версия инструмента parted с графическим интерфейсом;
  • fdisk — традиционный инструмент командной строки Linux для работы с разделами. Не поддерживает таблицу GPT;
  • gdisk — версия инструмента fdisk, которая поддерживает таблицу GPT, но не работает с MBR.

Просмотр таблицы разделов

parted -l

MBR команда parted назвает msdos

Есть несколько способов увидеть изменения разделов.

  • Используйте команду udevadm, чтобы отследить изменения событий ядра. Например, команда udevadm monitor –kernel покажет удаленные устройства-разделы и добавленные новые.
  • Посмотрите полную информацию о разделах в файле /proc/partitions.
  • Поищите в каталоге /sys/block/device/ измененные системные интерфейсы разделов или в каталоге /dev — измененные устройства-разделы.

О производительности SSD

Одним из наиболее значимых факторов, влияющих на производительность дисков SSD, является выравнивание разделов. Когда вы считываете данные с диска SSD, чтение происходит фрагментарно — как правило, порциями по 4096 байт за один прием, — причем такое чтение должно начинаться с числа, кратного этому размеру. Поэтому, если раздел и данные в нем не располагаются в пределах 4096-байтной зоны, вам может понадобиться выполнить две небольшие операции чтения вместо одной, например чтения содержимого каталога.
Многие утилиты для работы с разделами (например, parted и gparted) содержат средства для размещения вновь созданных разделов с правильными отступами от начала диска, и вам никогда не придется беспокоиться о неверном выравнивании разделов. Однако, если вам любопытно узнать, где начинаются ваши разделы, чтобы убедиться в том, что они начинаются от границ, можно легко это выяснить, заглянув в каталог /sys/block. Вот пример раздела для устройства /dev/sdf2:
$ cat /sys/block/sdf/sdf2/start
1953126
Этот раздел начинается на расстоянии 1 953 126 байт от начала диска. Поскольку это число не делится нацело на 4096, работа с таким разделом не достигала бы оптимальной производительности, если бы он был расположен на диске SSD.

Создание файловой системы

mkfs -t ext4 /dev/sdf2
mkfs.ext4 /dev/sdf2

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

root@uba64:~# mkfs.ext4 /dev/sdc1
mke2fs 1.42.9 (4-Feb-2014)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
131072 inodes, 524279 blocks
26213 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=536870912
16 block groups
32768 blocks per group, 32768 fragments per group
8192 inod'ов в группе
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912
 
Allocating group tables: done
Сохранение таблицы inod'ов: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done

Суперблок

Первый элемент этой структуры (суперблок) - одинаков для всех групп, а все остальные - индивидуальны для каждой группы. Суперблок хранится в первом блоке каждой группы блоков (за исключением группы 1, в которой в первом блоке расположена загрузочная запись). Суперблок является начальной точкой файловой системы. Он имеет размер 1024 байта и всегда располагается по смещению 1024 байта от начала файловой системы. Наличие нескольких копий суперблока объясняется чрезвычайной важностью этого элемента файловой системы. Дубликаты суперблока используются при восстановлении файловой системы после сбоев.

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

Суперблок имеет следующую структуру.

Название поля ТипКомментарий
1.2ems_inodes_countULONGЧисло индексных дескрипторов в файловой системе
s_blocks_countULONGЧисло блоков в файловой системе
s_r_blocks_countULONGЧисло блоков, зарезервированных для суперпользователя
s_free_blocks_countULONGСчетчик числа свободных блоков
s_free_inodes_countULONGСчетчик числа свободных индексных дескрипторов
s_first_data_blockULONGПервый блок, который содержит данные. В зависимости от размера блока, это поле может быть равно 0 или 1
s_log_block_sizeULONGИндикатор размера логического блока: 0 = 1 Кб; 1 = 2 Кб; 2 = 4 Кб
s_log_frag_sizeLONGИндикатор размера фрагментов (кажется, понятие фрагмента в настоящее время не используется)
s_blocks_per_groupULONGЧисло блоков в каждой группе блоков
s_frags_per_groupULONGЧисло фрагментов в каждой группе блоков
s_inodes_per_groupULONGЧисло индексных дескрипторов (inodes) в каждой группе блоков
s_mtimeULONGВремя, когда в последний раз была смонтирована файловая система
s_wtimeULONGВремя, когда в последний раз производилась запись в файловую систему s_mnt_count USHORT Счетчик числа монтирований файловой системы. Если этот счетчик достигает значения, указанного в следующем поле (s_max_mnt_count), файловая система должна быть проверена (это делается при перезапуске), а счетчик обнуляется
s_max_mnt_countSHORTЧисло, определяющее, сколько раз может быть смонтирована файловая система
s_magicUSHORT``Магическое число'' (0xEF53), указывающее, что файловая система принадлежит к типу ex2fs
s_stateUSHORTФлаги, указывающее текущее состояние файловой системы (является ли она чистой (clean) и т.п.)
s_errorsUSHORTФлаги, задающие процедуры обработки сообщений об ошибках (что делать, если найдены ошибки)
s_padUSHORTЗаполнение s_lastcheck ULONG Время последней проверки файловой системы
s_checkintervalULONGМаксимальный период времени между проверками файловой системы
s_creator_osULONGУказание на тип ОС, в которой создана файловая система
s_rev_levelULONGВерсия (revision level) файловой системы
s_reservedULONG[235]Заполнение до 1024 байт


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

mkfs -n /dev/sda1
mke2fs 1.42.9 (4-Feb-2014)
/dev/sda1 is mounted; will not make a filesystem here!
root@uba64:~# mkfs -n /dev/sdb
sdb   sdb1
root@uba64:~# mkfs -n /dev/sdb1
mke2fs 1.42.9 (4-Feb-2014)
/dev/sdb1 is mounted; will not make a filesystem here!
root@uba64:~# umount /dev/sdb1
root@uba64:~# mkfs -n /dev/sdb1
mke2fs 1.42.9 (4-Feb-2014)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
131072 inodes, 524279 blocks
26213 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=536870912
16 block groups
32768 blocks per group, 32768 fragments per group
8192 inod'ов в группе
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912

Восстанавливаем из резервного суперблока

# fsck –b 32768 /dev/sdb1

Файловая система UUID
Чтобы просмотреть список устройств, соответствующих им файловых систем, а также идентификаторы UUID, используйте команду blkid (block ID):

root@uba64:~# blkid
/dev/sda1: UUID="e80ff622-9c30-4a17-ac23-780a6e37bdd8" TYPE="ext4"
/dev/sda5: UUID="82528fa5-1fc7-4c82-93f4-2578bbe70867" TYPE="swap"
/dev/sdb1: UUID="d72dbd9c-b865-11e5-8c84-08002762b615" TYPE="ext4"
/dev/sdc1: UUID="cca35d02-688c-41d1-bde2-0098fd0ff8ff" TYPE="ext4"

Параметры монтирования

mount -t vfat /dev/hda1 /dos -o ro,conv=auto

Короткие параметры:

  • -r — монтирует файловую систему в режиме «только для чтения».
  • -n — гарантирует то, что команда mount не будет пытаться обновить исполняемую системную базу данных монтирования /etc/mtab. Операция монтирования прерывается, если она не может производить запись в данный файл, а это важно во время загрузки системы, поскольку корневой раздел (и, следовательно, системная база данных монтирования) поначалу доступен только для чтения. Этот параметр может быть полезен, когда вы будете пытаться исправить системную ошибку в режиме одиночного пользователя, поскольку в этот момент системная база данных монтирования не будет доступна.
  • -t — задает тип файловой системы.

Длинные параметры (включаются опцией -o):

  • exec, noexec — включает или отключает исполнение команд над файловой системой;
  • suid, nosuid — включает или отключает команды setuid (установка идентификатора пользователя);
  • ro — монтирует файловую систему в режиме «только чтение» (подобно короткому параметру -r);
  • rw — монтирует файловую систему в режиме «чтение-запись»;

Таблица файловой системы /etc/fstab
Каждая строка, содержащая шесть полей, соответствует одной файловой системе. Ниже перечислены эти поля (слева направо).

UUID=cca35d02-688c-41d1-bde2-0098fd0ff8ff	/mnt/hard2	ext4	defaults	0	2



  • Устройство или идентификатор UUID. Большинство современных систем Linux больше не использует устройство в файле /etc/fstab, предпочитая идентификатор UUID. Обратите внимание на то, что запись /proc содержит устройство-заместитель с именем proc.
  • Точка монтирования. Указывает, где присоединяется файловая система.
  • Тип файловой системы. Скорее всего, вам незнаком параметр swap в данном перечне; это раздел подкачки
  • Параметры. Использованы длинные параметры, разделенные запятыми.
  • Информация о резервной копии для использования командой сброса. В этом поле всегда следует указывать значение 0.
  • Порядок проверки целостности системы. Чтобы команда fsck всегда начинала работу с корневого каталога, устанавливайте в этом поле значение 1 для корневой файловой системы и значение 2 для остальных файловых систем на жестком диске. Используйте значение 0, чтобы отключить при запуске проверку чего-либо еще, включая приводы CD-ROM, область подкачки и файловую систему /proc

Монтирование всех дисков из fstab

mount -a

Проверка и восстановление файловых систем

root@uba64:~# fsck.ext4 /dev/sdc1
e2fsck 1.42.9 (4-Feb-2014)
/dev/sdc1: clean, 11/131072 files, 17196/524279 blocks

Опции fsck -p выполняет автоматическое исправление типичных проблем, не задавая вопросов, и прерывает работу только в случае серьезной ошибки. –n проверить файловую систему, ничего не изменяя. –b num, заменить поврежденный суперблок альтернативным блоком num.

disks_and_fs.txt · Последние изменения: 2016/01/20 03:46 — sander