Распечатать эту страницу

В этом разделе:

FHS - стандарт, описывающий, что и где должно располагаться в ФС.

Разбивка дисков, подготовка ФС

mount / umount - монтирование дисков, сетевых ресурсов, примеры конфигов.


  

Часто используемые команды при работе с дисками: 

lsblk информация о всех блочных устройствах, которые видит ОС
lsblk -f или blkid просмотр соответсвие UUID диску
df -h информация по размеру ФС
df -i информация по inode
du --max-depth 1 --exclude='/proc' / подсчет занимаемого места от корня с исключениями
findmnt что смонтировано в древовидном виде
mount -t tmpfs dir_tmpfs /dir/ -o size=100m примонитровать каталог /dir с именем dir_tmpfs в оперативную память (размер 100МБ)
mount -t cifs //192.168.0.1/share /mnt/share примонтировать сетевую папку по протоколу smb
mount -o loop /home/backup.img /mnt/backup примонтировать образ backup.img (например: снятый с использованием dd)
lsof /mount_point  какими процессами занята точка монтирования
fuser -mv /moint_point какими процессами занята точка монтирования
pvdisplay, vgdisplay, lvdisplay инфо по LVM разделам
fdisk -l /dev/sda информация о разделах на устройстве sda
udevadm info --name=/dev/sda информация по диску sda
hdparm -I /dev/sda информация по диску sda
hdparm -tT /dev/sda протестировать скорость hdd
smartctl -a /dev/sda smart диска sda
badblocks -v /dev/sda1 проверить раздел sda1 на бэд блоки
fsck /dev/sda1 проверить/восстановить ФС раздела sda1
e2fsck -j /dev/sda1 проверить/восстановить ФС раздела sda1

 

 

FHS (File Hiearchy Standart) - стандарт, унифицирующий местонахождение файлов и каталогов в файловой системе UNIX

 

/ - корневой каталог, содержащий всю файловую иерархию.

 

/bin - основные системные утилиты, необходимые всем пользователям (например: cat, ls, cp). Дополнительные утилиты (например: при установке доп. пакетов), как правило располагаются в /usr/bin

 

/boot - загрузочные файлы (в том числе файлы загрузчика, ядро, initrd, System.map). Содержит все файлы, необходимые для начальной загрузки ОС. Часто выносится на отдельный раздел. 

/boot/vmlinuz-5.10...-std-def-alt1- ядро ОС

/boot/config-5.10...-std-def-alt1- конфигурация ядра (c какими параметрами собрано ядро)

/boot/initrd-5.10...-std-def-alt1 - образ системы, разворачивающийся в ОЗУ при старте системы

/boot/grub/grub.cfg - конфиг файл загрузчика grub

/boot/grub/x86_64-efi/ - модули загрузчика grub

 

 

/dev - основные файлы устройств (например, /dev/null, /dev/zero).

 

/etc - общесистемные конфигурационные файлы

/etc/passwd - файл, содержащий список всех учётных записей в системе. 

Пример из файла ico txt  ico pdf


/etc/shadow - файл, содержащий в зашифрованном виде пароли УЗ и атрибуты (срок действия УЗ и т.п.)

Пример из файла ico txt  ico pdf


/etc/group - группы в ОС

Пример записи в файле: drobbins:x:1000:postfix

где drobbins - имя пользователя, х - зарезервировано, 1000 - основная группа, postfix - доп группа.


/etc/fstab - содержит информацию о примонтированных дисках и устройствах

Разбор файла  ico txt  ico pdf


 

 

/home - (аналог Users в Windows) Содержит домашние каталоги пользователей, которые в свою очередь содержат персональные настройки и данные пользователя. Часто размещается на отдельном разделе.

 

/lib - основные системные библиотеки, необходимые для работы программ из /bin и /sbin. Дополнительные библиотеки обычно размещаются в /usr/lib и обычно предназначены для дополнительно установленных пакетов (утилит, программ), которые устанавливаются в /usr/bin и /usr/sbin

  • /lib/modules/{вериия_ядра} - библиотеки и модули ядра (примерный аналог драйверов в Windows). Пример: /lib/modules/{вериия_ядра}/kernel/drivers/net - драйвера для сетевых устройств.

 

/media - точки монтирования для сменных носителей, таких как CD-ROM

 

/mnt - временно монтируемые файловые системы

 

/opt - (optional - аналог Programm Files в Windows) Дополнительное программное обеспечение.

 

/proc - виртуальная файловая система procfs, представляющая состояние ядра операционной системы и запущенных процессов. Необходима для выполнения таких команд как ps, w, top. procfs создаёт двухуровневое представление пространств процессов. На верхнем уровне процессы представляют собой каталоги, именованные в соответствии с их pid.

 

/root - домашний каталог пользователя root

 

/run - информация о системе с момента её загрузки, в том числе данные, необходимые для работы демонов (pid-файлы, UNIX-сокеты и т.д.)

 

/sbin - основные системные утилиты для администрирования и настройки системы, например, init, iptables, ifconfig. (аналог системных утилит System32 Windows). Дополнительные утилиты (например: при установке доп. пакетов), как правило располагаются в /usr/sbin

 

/srv - данные для сервисов, предоставляемых системой (например, www или ftp).

 

/sys - сюда монтируется виртуальная файловая система sysfs, содержит информацию об устройствах, драйверах, а так же некоторых свойствах ядра.

  • /sys/block - содержит директории всех блочных устройств, присутствующих в данный момент в системе
  • /sys/bus - список шин, определенных в ядре Linux (eisa, pci и т.д.)
  • /sys/class - список группированных устройств по классам (printer, scsi-devices и т.д.).

 

/tmp - временные файлы, которые не сохраняются после перезагрузки.

 

/usr - (use share resurce - аналог Programm Files в Windows) В этом каталоге храняться все установленные пакеты программ, документация и т.п. Содержит большинство пользовательских приложений и утилит, используемых в многопользовательском режиме. Все пользователи кроме root имеют доступ только на чтение. Может быть смонтирована по сети только для чтения и быть общей для нескольких машин.

  • /usr/bin и /usr/sbin — дополнительные утилиты и программы для пользователя и рута
  • /usr/lib — дополнительные библиотеки для этих программ
  • /usr/local - чаще всего директория используется для установки программ, которые не предназначены для конкретного дистрибутива
  • /usr/share- общие данные установленных программ
  • /usr/share/doc - директория, в которой обычно находится справочная документация по установленным программам.

 

/var - Изменяемые файлы, такие как журналы ОС, файлы регистрации, временные почтовые файлы и т.п.

  • /var/tmp - временные файлы, не удаляемые после перезагрузки
  • /var/mail - письма пользователям
  • /var/cache - все кэши различных программ
  • /var/lib - постоянные данные, изменяемые программами в процессе работы (базы данных, метаданные и др.)
  • /var/lock - lock-файлы, указывающие на занятость некоторого ресурса
  • /var/log - все log-файлы
  • /var/spool- задачи, ожидающие обработки (череди печати, непрочитанные или не отправленные письма, задачи cron и т. д.).

 

 

Разбивка дисков, подготовка ФС

Опции утилиты parted

select раздел - выбрать диск или раздел, с которым будем работать
print - отобразить таблицу разделов
mktable тип - создать таблицу разделов
mkpart тип_раздела файловая_система начало конец - создание раздела linux с файловой системой начиная с позиции начало заканчивая конец, два последних параметра задаются в мегабайтах по умолчанию;
resizepart раздел конец - изменить размер раздела;
rm раздел - удалить раздел;


Работа с утилитой

Запускаем parted и выбираем нужный диск или раздел

# parted
(parted) select /dev/sda

 

Выводим информацию по разделам на этом диске

(parted) print

 

Создать таблицу разделов (мы создали таблицу разделов типа gpt, но можно выбрать одну из этих: msdos, aix, mac и д.р.)

(parted) mktable gpt

 

Создать первичный раздел ext4 500 МБ.

Команде необходимо передать 4 параметра:

  • тип (primary, logical или extended)
  • тип ФС (ext2, ext4, fat16, fat32, linux-swap, NTFS, reiserfs, hfs, hfs+, hfsx, ufs, btrfs)
  • начало раздела
  • конец раздела
(parted) mkpart primary ext4 0 500M

 

Создать еще один раздел: начало - 500M, конец - последний блок диска (за это отвечает параметр -0M) 

(parted) mkpart primary ext4 500M -0M

 

Изменить размер раздела №2 с 500M до 250M

(parted) resizepart 2 250M
или 
(parted) resizepart 2 50%

 

Удалить раздел 1 

(parted) rm 1 

 

Задать имя boot разделу 1 

(parted) name 1 boot 

 

Перед использованием раздела не забываем его отформатировать. Выходим из parted 'q' и форматируем в нужную fs утилитой mkfs

# mkfs.ext4 /dev/sda1

 

Опции утилиты:

  • a - включение или выключения флага boot для раздела;
  • d - удалить раздел;
  • F - показать свободное место;
  • l - вывести список известных типов разделов;
  • n - создать новый раздел;
  • p - вывести таблицу разделов;
  • t - изменение типа раздела;
  • i - вывести информацию о разделе;
  • I и O - записать или загрузить разметку в файл сценария sfdisk;
  • w - записать новую таблицу разделов на диск;
  • q - выйти без сохранения;
  • g - создать пустую таблицу разделов GPT;
  • o - создать пустую таблицу разделов MBR

Показать все блочные диски и разделы

#fdisk -l

 

Большинство операций fdisk по разметке дисков выполняются в интерактивном режиме. Чтобы запустить fdisk в интерактивном режиме передайте утилите блочное устройство которое надо разметить.

#fdisk /dev/sda

 

Расширение раздела (не LVm) ВМ на лету при помощи утилиты fdisk

1. Заходим на нашу ВМ, смотрим что и сколько занимает, что необходимо увеличить (lsblk, df -h)

2. Увеличиваем размер виртуального диска (например sda) в среде виртуализации до нужного размера.

3. Возвращаемся на хост, пересканируем диск 
echo 1>/sys/class/block/sda/device/rescan

4. lsblk - должны увидеть, что размер диска изменился

5. Увеличиваем раздел (порядок действий):

  • fdisk /dev/sda
  • p -просмотр существующих разделов
  • d - удалить раздел. Если разделов несколько, указываем какой. При этом данные на диске удалены не будут!!!
  • n - создаем новый раздел на всё свободное пространство (значения по-умолчанию, просто нажимаем на все вопросы "enter"
  • w - сохраняем наши изменения

6. Обновляем таблицу разделов partx -u /dev/sda или просто перезагружаем 

7. Расширяем файловую систему ext4 в разделе sda1 до конца раздела: resize2fs /dev/sda1

 

 

Для данных утилит нет необходимости расписывать действия, все интуитивно понятно.

cfdisk

disk01

 

gparted

disk02

 

 

 Прежде всего нужно разобраться с уровнями дисковых абстракций LVM.

  • Physical Volume (PV) – физический уровень. Физические диски инициализируются для использования в LVM.
  • Volume Group (VG) – уровень группы томов. Инициализированные диски объединяются в логические группы с именем.
  • Logical Volume (LV) — создается логический том на группе томов, на котором размещается файловая система и данные.

disk08

 

Создание LVM раздела

1. Чтобы диски были доступны для LVM, их нужно пометить (инициализировать) утилитой pvcreate:

Предположим используем 2 диска:
# pvcreate /dev/sdс /dev/sdd

disk03

Как видим, оба диска отображаются.

Разберем информацию из вывода команды:

  • PV Name – имя диска или раздела
  • VG Name – группа томов, в которую данный диск входит (мы пока группу не создали)
  • PV Size – размер диска или размера
  • Allocatable – распределение по группам. В нашем случае распределения не было, поэтому указано NO
  • PE Size – размер физического фрагмента. Если диск не добавлен ни в одну группу, значение всегда будет 0
  • Total PE – количество физических фрагментов
  • Free PE — количество свободных физических фрагментов
  • Allocated PE – распределенные фрагменты
  • PV UUID – идентификатор раздела 

 

2. Следующий этап создание групп томов vgcreate. Чтобы добавить сразу два диска в  VG группу, выполняем команду:

# vgcreate vg_name /dev/sdc /dev/sdd

disk04

Как видим, диски объединились в группу vg_name и имеют общий размер 2,99 ГБ.

Разберем информацию из листинга команды vgdisplay:

  • VG Name – группа томов, в которую данный диск входит.
  • Format – версия подсистемы lvm, которая используется для создание группы (в нашем случае версия 2)
  • Metadata Areas – область метаданных
  • VG Access – уровень доступа к группе логических томов
  • VG Size – общий объем дисков, которые входят в группу
  • PE Size — размер физического фрагмента
  • Alloc PE / Size – распределенное пространство
  • VG UUID – идентификатор группы

 

3. Далее, в созданной ранее группе томов, создаем один или несколько логических разделов, используется lvcreate.

Следует учесть, что при созданни логических разделов, есть 2 варианта отображения: линейное и чередующееся. При линейном отображении данные пишутся линейно сначало на один диск, заполняя его до конца на 100%, а потом  начинают писаться на второй диск. При чередующимся отображением данные по одному блоку записываются то на один диск, то на другой диск, тем самым равномерно заполняя пространство на дисках и увеличивая производительность (некое подобие RAID 0 striping). При использовании SSD дисков наиболее предпочтительно использовать чередующийся вариант отображения, т.к. такие диски резко теряют в производительности, когда дисковое пространство занято на 100%. За количество полос чередования отвечает опция -i, но помните, что количество полос не должно превышать количество дисков в группе томов.

 

Линейное отображение при записи выглядит так:

disk06

 

А так происходит заполнение чередующегося отображения

disk07 

Три примера: с размером LV 1 ГБ, занимаем 50% / 100% доступного пространства.

# Создание логических разделов линейного отображения
1 # lvcreate -L 1G -n lv_name vg_name
2 # lvcreate -l 50%FREE -n lv_name vg_name
3 # lvcreate -l 100%FREE -n lv_name vg_name

# Создание логических разделов с чередующимся отображением
1 # lvcreate -L 1G -i 2 -n lv_name vg_name
2 # lvcreate -l 50%FREE -i 2 -n lv_name vg_name
3 # lvcreate -l 100%FREE -i 2 -n lv_name vg_name

lvdisplay с ключом -m отобразит информацию и о отображении

disk10

Разберем информацию из листинга команды lvdisplay:

  • LV Path – путь к устройству логического тома (к диску или разделу)
  • LV Name – имя логического тома
  • VG Name – имя группы томов
  • LV UUID – идентификатор логического тома
  • LV Write Access – уровень доступа к логическому тому
  • LV Creation host, time — информация о хосте, дата когда был создан логический том
  • LV Size – размер диска, доступный для использования логическому тому
  • Current LE – количество логических фрагментов 
  • Type - тип отображения (в нашем случае линейное)
  • Physical volume - задействованные диски
  • Physical extents - сколько физических экстендов (линий отображения)

 

4. LVM раздел создан. Осталось отформатировать раздел (например, в ext4), создать папку для монтирования раздела и добавить запись в fstab для автомонтирования раздела.

# mkfs.ext4 /dev/vg_name/lv_name
# mkdir /mnt/my_lvm
# echo "/dev/mapper/vg_name-lv_name /mnt/my_lvm ext4 defaults 0 0" >> /etc/fstab
# mount -a

 

Создание зеркального LVM раздела

LVM позволяет создать зеркальные тома для повышения отказоустойчивости хранения данных. В LVM зеркале данные одновременно хранятся на двух (или более) физических дисках (подобие RAID-1).

 

Процедура создания зеркального тома в LVM.

  • Инициализация дисков
  • Создаем VG группу
  • Создадим зеркальный LVM том (опция -m - создать зеркальный том, 1- просто порядковый номер массива (может быть любой).
# pvcreate /dev/sd{b,c}
# vgcreate vg_mirror /dev/sd{b,c}
# lvcreate -l +100%FREE -m1 -n lv_mirror vg_mirror

 

Увеличение LVM раздела

1. Предположим на нашей группе томов  vg_name занято не все свободное место разделом lv_name.

  • Расширяем раздел на 1ГБ /  до 100% 
  • увеличиваем размер файловой системы
# lvextend -L +1G /dev/vg_name/lv_name
# lvextend -l +100%FREE /dev/vg_name_lv_name
# resize2fs /dev/vg_name/lv_name – для ext2; ext3; ext4 
# xfs_growfs /dev/vg_name/lv_name - для xfs

 

2. Увеличение LVM раздела за счет добавления нового физического диска sde:

  • инициализируем диск sde
  • добавляем диск в группу томов vg_name
  • расширяем логический том lv_name
  • изменяем размер ФС
# pvcreate /dev/sde
# vgextend vg_name /dev/sde
# lvextend -l +100%FREE /dev/vg_name_lv_name
# resize2fs /dev/vg_name/lv_name

 

Уменьшение LVM раздела

Внимание! Уменьшение размера LVM раздела может привести к потери данных на разделе!

Лучшей практикой по уменьшению раздела считается копирование данных с уменьшаемого раздела на другой диск, уменьшение раздела и возврат данных на LVM раздел.

 

Порядок уменьшения раздела LVM:

  • отмонтирование раздела
  • проверка диска на ошибки
  • уменьшение раздела ФС (в нашем примере уменьшение на 2 ГБ)
  • уменьшение непосредственно тома LVM
  • примонтирование раздела обратно
# umount /mnt/my_lvm
# e2fsck -fy /dev/vg_name/lv_name
# resize2fs /dev/vg_name/lv_name 2G
# lvreduce -L-2G /dev/vg_name/lv_name
# mount /dev/mapper/vg_name-lv_name /mnt/my_lvm

 

Удаление разделов, томов, устройств

Перед удалением необходимо отмонтировать раздел!

 

Порядок удаления:

  • удаление раздела lvm
  • удаление группы логических томов
  • убрать метки с дисков 
# lvremove /dev/vg_name/lv_name
# vgremove vg_name
# pvremove /dev/sdc /dev/sdd

 

 

 

 

Монтирование / размонтирование

# mount [опции] <раздел> <точка монтирования> 

 

Опции монтирования:

-t <файловая система> - можно указать принудительно ФС: iso9660 (CD-ROM), ext2, ext3, ext4, vfat (FAT, FAT32), ntfs (только для чтения), ntfs-3g (чтение/запись);

-r - монтирует в режиме только чтение;

-w - чтение/запись;

-a - монтировать все ФС, указанные в fstab, кроме тех, для которых указано noauto.

-o force - монтирование поврежденного раздела (если, например, раздел был неправильно размонтирован).

 

 

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

Примонитровать каталог /dir с именем dir_tmpfs в оперативную память (размер 100МБ)

# mount -t tmpfs dir_tmpfs /dir/ -o size=100m

 

 

# umount [опции] <точка монтирования> 

Если не удается размонтировать и система говорит, что ФС используется каким-либо процессом, можно воспользоваться утилитой lsof.

#lsof <точка монтирования> - покажет, какими процессами занята примонтированная ФС.

Так же можно попробовать принудительное размонтирование с помощью опций -f и -l