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

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


disks_and_fs

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

disks_and_fs [2016/01/12 04:44]
sander создано
disks_and_fs [2016/01/20 03:46] (текущий)
sander
Строка 1: Строка 1:
 +====== Диски и файловые системы ======
 +**Инструменты для работы с дисками**
 +  * parted — инструмент командной строки,​ который поддерживает как таблицу MBR, так и таблицу GPT;
 +  * gparted — версия инструмента parted с графическим интерфейсом;​
 +  * fdisk — традиционный инструмент командной строки Linux для работы с разделами. Не поддерживает таблицу GPT;
 +  * gdisk — версия инструмента fdisk, которая поддерживает таблицу GPT, но не работает с MBR.
  
 +**Просмотр таблицы разделов**
 +<code bash>
 +parted -l
 +</​code>​
 +
 +<WRAP center round info 60%>
 +MBR команда parted назвает msdos
 +</​WRAP>​
 +
 +**Есть несколько способов увидеть изменения разделов.**
 +  * Используйте команду **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.\\
 +
 +**Создание файловой системы**
 +<code bash>
 +mkfs -t ext4 /dev/sdf2
 +mkfs.ext4 /dev/sdf2
 +</​code>​
 +
 +При создании файловой системы в несколько мест копируется суперблок для возможности его восстановления.\\
 +
 +<code bash>
 +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
 +
 +</​code>​
 +
 +**Суперблок**
 +
 +Первый элемент этой структуры (суперблок) - одинаков для всех групп, а все остальные - индивидуальны для каждой группы. Суперблок хранится в первом блоке каждой группы блоков (за исключением группы 1, в которой в первом блоке расположена загрузочная запись). Суперблок является начальной точкой файловой системы. Он имеет размер 1024 байта и всегда располагается по смещению 1024 байта от начала файловой системы. Наличие нескольких копий суперблока объясняется чрезвычайной важностью этого элемента файловой системы. Дубликаты суперблока используются при восстановлении файловой системы после сбоев.
 +
 +Информация,​ хранимая в суперблоке,​ используется для организации доступа к остальным данным на диске. В суперблоке определяется размер файловой системы,​ максимальное число файлов в разделе,​ объем свободного пространства и содержится информация о том, где искать незанятые участки. При запуске ОС суперблок считывается в память и все изменения файловой системы вначале находят отображение в копии суперблока,​ находящейся в ОП, и записываются на диск только периодически. Это позволяет повысить производительность системы,​ так как многие пользователи и процессы постоянно обновляют файлы. С другой стороны,​ при выключении системы суперблок обязательно должен быть записан на диск, что не позволяет выключать компьютер простым выключением питания. В противном случае,​ при следующей загрузке информация,​ записанная в суперблоке,​ окажется не соответствующей реальному состоянию файловой системы.
 +
 +Суперблок имеет следующую структуру.
 +
 +|Название поля |Тип|Комментарий|  ​
 +|1.2ems_inodes_count|ULONG|Число индексных дескрипторов в файловой системе| ​
 +|s_blocks_count|ULONG|Число блоков в файловой системе|  ​
 +|s_r_blocks_count|ULONG|Число блоков,​ зарезервированных для суперпользователя|  ​
 +|s_free_blocks_count|ULONG|Счетчик числа свободных блоков|  ​
 +|s_free_inodes_count|ULONG|Счетчик числа свободных индексных дескрипторов|  ​
 +|s_first_data_block|ULONG|Первый блок, который содержит данные. В зависимости от размера блока, это поле может быть равно 0 или 1|  
 +|s_log_block_size|ULONG|Индикатор размера логического блока: 0 = 1 Кб; 1 = 2 Кб; 2 = 4 Кб|  ​
 +|s_log_frag_size|LONG|Индикатор размера фрагментов (кажется,​ понятие фрагмента в настоящее время не используется)|  ​
 +|s_blocks_per_group|ULONG|Число блоков в каждой группе блоков|  ​
 +|s_frags_per_group|ULONG|Число фрагментов в каждой группе блоков|  ​
 +|s_inodes_per_group|ULONG|Число индексных дескрипторов (inodes) в каждой группе блоков|  ​
 +|s_mtime|ULONG|Время,​ когда в последний раз была смонтирована файловая система|  ​
 +|s_wtime|ULONG|Время,​ когда в последний раз производилась запись в файловую систему s_mnt_count USHORT Счетчик числа монтирований файловой системы. Если этот счетчик достигает значения,​ указанного в следующем поле (s_max_mnt_count),​ файловая система должна быть проверена (это делается при перезапуске),​ а счетчик обнуляется|  ​
 +|s_max_mnt_count|SHORT|Число,​ определяющее,​ сколько раз может быть смонтирована файловая система|  ​
 +|s_magic|USHORT|``Магическое число''​ (0xEF53), указывающее,​ что файловая система принадлежит к типу ex2fs|  ​
 +|s_state|USHORT|Флаги,​ указывающее текущее состояние файловой системы (является ли она чистой (clean) и т.п.)|  ​
 +|s_errors|USHORT|Флаги,​ задающие процедуры обработки сообщений об ошибках (что делать,​ если найдены ошибки)|  ​
 +|s_pad|USHORT|Заполнение s_lastcheck ULONG Время последней проверки файловой системы|  ​
 +|s_checkinterval|ULONG|Максимальный период времени между проверками файловой системы|  ​
 +|s_creator_os|ULONG|Указание на тип ОС, в которой создана файловая система|  ​
 +|s_rev_level|ULONG|Версия (revision level) файловой системы|  ​
 +|s_reserved|ULONG[235]|Заполнение до 1024 байт|
 +\\
 +**Восстановление суперблока.** \\
 +Посмотреть расположение резервных суперблоков.
 +<code bash>
 +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
 +</​code> ​       ​
 +**Восстанавливаем из резервного суперблока**
 +<code bash>
 +# fsck –b 32768 /dev/sdb1
 +</​code> ​       ​
 +**Файловая система UUID**\\
 +Чтобы просмотреть список устройств,​ соответствующих им файловых систем,​ а также идентификаторы UUID, используйте команду blkid (block ID):
 +<code bash>
 +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"​
 +</​code>​
 +
 +**Параметры монтирования**
 +<​code>​
 +mount -t vfat /dev/hda1 /dos -o ro,​conv=auto
 +</​code>​
 +Короткие параметры:​
 +  * -r — монтирует файловую систему в режиме «только для чтения». ​
 +  * -n — гарантирует то, что команда mount не будет пытаться обновить исполняемую системную базу данных монтирования /etc/mtab. Операция монтирования прерывается,​ если она не может производить запись в данный файл, а это важно во время загрузки системы,​ поскольку корневой раздел (и, следовательно,​ системная база данных монтирования) поначалу доступен только для чтения. Этот параметр может быть полезен,​ когда вы будете пытаться исправить системную ошибку в режиме одиночного пользователя,​ поскольку в этот момент системная база данных монтирования не будет доступна.
 +  * -t — задает тип файловой системы.
 +Длинные параметры (включаются опцией -o):
 +  * exec, noexec — включает или отключает исполнение команд над файловой системой;​
 +  * suid, nosuid — включает или отключает команды setuid (установка идентификатора пользователя);​
 +  * ro — монтирует файловую систему в режиме «только чтение» (подобно короткому параметру -r);
 +  * rw — монтирует файловую систему в режиме «чтение-запись»;​
 +
 +**Таблица файловой системы /​etc/​fstab**
 +\\
 +Каждая строка,​ содержащая шесть полей, соответствует одной файловой системе. Ниже перечислены эти поля (слева направо).
 +<code bash>
 +UUID=cca35d02-688c-41d1-bde2-0098fd0ff8ff /​mnt/​hard2 ext4 defaults 0 2
 +</​code>​ ​
 +  * Устройство или идентификатор UUID. Большинство современных систем Linux больше не использует устройство в файле /etc/fstab, предпочитая идентификатор UUID. Обратите внимание на то, что запись /proc содержит устройство-заместитель с именем proc.
 +  * Точка монтирования. Указывает,​ где присоединяется файловая система.
 +  * Тип файловой системы. Скорее всего, вам незнаком параметр swap в данном перечне;​ это раздел подкачки
 +  * Параметры. Использованы длинные параметры,​ разделенные запятыми.
 +  * Информация о резервной копии для использования командой сброса. В этом поле всегда следует указывать значение 0.
 +  * Порядок проверки целостности системы. Чтобы команда fsck всегда начинала работу с корневого каталога,​ устанавливайте в этом поле значение 1 для корневой файловой системы и значение 2 для остальных файловых систем на жестком диске. Используйте значение 0, чтобы отключить при запуске проверку чего-либо еще, включая приводы CD-ROM, область подкачки и файловую систему /proc
 +
 +Монтирование всех дисков из fstab
 +<code bash>
 +mount -a
 +</​code>​
 +
 +**Проверка и восстановление файловых систем**\\
 +<code bash>
 +root@uba64:​~#​ fsck.ext4 /dev/sdc1
 +e2fsck 1.42.9 (4-Feb-2014)
 +/dev/sdc1: clean, 11/131072 files, 17196/​524279 blocks
 +</​code>​
 +
 +Опции fsck
 +-p выполняет автоматическое исправление типичных проблем,​ не задавая вопросов,​ и прерывает работу только в случае серьезной ошибки.
 +–n проверить файловую систему,​ ничего не изменяя.
 +–b num, заменить поврежденный суперблок альтернативным блоком num.
disks_and_fs.txt · Последние изменения: 2016/01/20 03:46 — sander