системное администрирование,

Операции с файловой системой в Linux

Apr 07, 2022 · 8 мин. на прочтение
Операции с файловой системой в Linux
Поделиться

Статья из серии How To.... В этой я собрал способы выполнить самые частые операции с файловой системой в Linux, в частности в CentOS. Статья может использоваться как справочник и будет дополняться. Добавляйте в закладки.

Заходя в Windows, системный администратор может наглядно наблюдать подключенные дисковые устройства, видеть их тип, размер, свободное пространство, выполнять операции форматирования, расширения диска и т.п.. В Linux не всё так очевидно, приходится запоминать множество команд. Эта статья даёт ответы на следующие вопросы:

Так же вы узначете:

Сколько дисков в системе, как их увидеть?

Как известно, в Linux всё есть файл. И память, и диски - всё. Поэтому самый простой способ посмотреть устройства - это вывести содержимое каталога, где содержатся устройства. Устройства “живут” в /dev, а блочные, дисковые устройства называются sda, sdb и т.д., если они подключены через SCSI и hda, hdb и т.д., если через IDE. Сейчас, в век виртуализации, конечно, чаще всего можно встретить только SCSI устройства. Следующая команда выведет список всех дисков в системе:

ls -l /dev/sd*
`ls` - вывести содержимое каталога
`-l` - вывести списком
`/dev/sd*` - вывести содержимое каталога /dev, начинающееся на `sd`

assets/images/linux-filesystem-operations/1.png

Как “разбиты” диски, сколько партиций, их тип и размер?

Есть несколько способов увидеть эту информацию. Не прибегая ни к каким утилитам, что может быть полезно в системах с минимальным набором установленных пакетов, можно воспользоваться способом посмотреть содержимое файла /proc/partitions. Этот файл содержит информацию о распределённых блоках партиций. Посмотреть содержимое можно командой cat:

cat /proc/partitions

Пример этого вывода выглядит следующим образом:

assets/images/linux-filesystem-operations/2.png

Больше информации о Proc File System (содержимом каталога /proc) можно узнать в документации по RedHat.

Есть ещё одна утилита fdisk. Следующей командой, можно увидеть информацию о всех дисках и их размерах:

sudo fdisk -l

Более компактные сведения можно получить утилитой parted выполнив следующую команду:

sudo parted -l

assets/images/linux-filesystem-operations/4.png

Ещё одним способом, является утилита lsblk. Она показывает информацию очень наглядно, в виде дерева.

assets/images/linux-filesystem-operations/5.png

Сколько свободного места на дисках?

Проще всего посмотреть свободное место на диске, воспользоваться утилитой df. Она выведет на экран все смонтированные файловые системы и дополнительную информацию, в частности размер. Удобнее всего воспользоваться следующей командой:

df -hT
`df` - вывести информацию о смонтированных разделах
`-h` - вывести размер в удобочитаемом формате
`-T` - вывести информацию о типе файловой системы

assets/images/linux-filesystem-operations/3.png

Важно отметить, что df показывает только смонтированные файловые системы и тольк размер самой файловой системы. А она может отличаться от размера диска или партиции. Для определния размера диска или партиции используйте fdisk, parted или lsblk, о которых упоминалось выше.

Как новый жесткий диск сделать доступным в системе?

Cоздать новый раздел

Для этого можно воспользоваться утилитами fdisk или parted. Покажу на примере первой.

# Запустить fdisk выбрав нужный диск
sudo fdisk /dev/sdb

n # создать новый раздел
p # выбрать тип, например primary
1 # ввести номер партиции или нажать enter, чтобы использовать предложенное значение
2048 # выбрать первый сектор или нажать enter, чтобы использовать предложенное значение
266338303 # выбрать последний сектор или нажать enter, чтобы использовать предложенное значение
w # записать изменения и выйти

Отформатировать раздел (создать файловую систему)

Cоздать файловую систему xfs на созданном разделе

sudo mkfs -t xfs /dev/sdb1

Смонтировать раздел

Добавить строку монтирования в файл /etc/fstab. Это можно сделать руками, воспользовавшись привычным редактором vi, vim, nano, e.t.c. Открываем фай с использованием команды sudo и добавляем новую строку в конце файла:

sudo vi /etc/fstab

Пример файла /etc/fstab

/dev/mapper/cl-root     /                       xfs     defaults        0 0
UUID=15a55219-a817-4a27-b3ac-14d96296e457 /boot                   xfs     defaults        0 0
/dev/mapper/cl-home     /home                   xfs     defaults        0 0
/dev/mapper/cl-swap     none                    swap    defaults        0 0
/dev/sdb1               /mnt/dms                xfs     defaults        0 0

Либо можно выполнить следующую команду:

sudo bash -c 'echo "/dev/sdb1 /mnt/dms xfs defaults 0 0" >> /etc/fstab '

Монтировать раздел можно не только по имени. Но и по UUID, LABEL и т.д.. Чтобы увидеть UUID раздела можно воспользоваться одним из следующих способов.

sudo blkid
sudo blkid /dev/sd*

sudo lsblk -f
lsblk -o +uuid,name

ls -la /dev/disk/by-uuid/

У монтирования по UUID есть несколько преимуществ и недостатков.

Преимещества:

  1. При изменении порядка подключения дисков, название раздела может поменятся. Например, вместо sda стать sdb. Но UUID раздела останется прежнем, т.к. он хранится в суперблоке.

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

  1. Так же UUID раздела сохраняется при отключении и переносе в другую систему.

Недостатки:

  1. UUID раздела может поменятся, например при пересоздании файловой системы.

  2. В одной системе нельзя смонтировать два раздела с одинаковым UUID. Поэтому такой способ монтирования нельзя использовать с LVM снапшотами и клонированными дисками.

UUID можно изменить командой tune2fs -U new_uuid /dev/sdaX

После изменения файла /etc/fstab, настоятельно рекомендую проверить то, что описанные в нём разделы успешно монтируются. Для этого нужно выполнить команду sudo mount -a. Если вы не видите никакой ошибки, то смело можно перезагружаться.

Увидеть все смонтированные разделы и параметры монтирования

Для просмотра списка точек монтирования выполните команду:

df  -aTh

Чтобы найти больше информации о точках монтирования в вашей системе, выполните команду:

findmnt

assets/images/linux-filesystem-operations/6.png

Кроме того, вы можете использовать команду cat:

cat /proc/self/mounts

Также вы можете использовать команду mount, как показано далее:

mount -l

Расширить пространство после увеличения размера жёсткого диска

Есть несколько сценариев, когда нужно увеличить размер файловой системы.

  • Вы увеличили размер виратуального диска.
  • Восстановили образ системы на диск большего размера.
  • Добавили ещё один диск в систему.

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

В первых двух случаях, вам нужно:

В последнем случае, вам нужно:

Увеличить размер партиции

Для увеличения размера партиции программой fdisk, нужно удалить партицию и создать новую, большего размера. НЕ ПЕРЕЖИВАЙТЕ, ДАННЫЕ НЕ ПОСТРАДАЮТ.

Запускаете fdisk, нажимаете d, чтобы удалить раздел. Вводите номер раздела, например 2. Затем нажимаете n и создаёте новый раздел, с тем же номером и стартовым сектором, но уже большего размера. Затем выходите командой w.

Для увеличения размера партиции программой parted, можно воспользоваться встроенным методом resizepart, либо недокументированной функцией pretend-input-tty, выполнив следующую команду:

sudo parted /dev/sda ---pretend-input-tty resizepart 2 100%

Увеличить размер Physical Volume

sudo pvresize /dev/sda2

Увеличить размер Logical Volume

sudo pvresize /dev/sda2

Увеличить размер Virtual Group

sudo vgextend centos /dev/sdb1

*где /dev/sdb1 - это название нового раздела, который мы включаем в группу.

Увеличить размер файловой системы

sudo xfs_growfs /dev/centos/root

Создать LVM Physical Volume

sudo pvcreate /dev/sdb1

Отдельного внимания заслуживает увеличение SWAP партиции.

Посмотреть размер SWAP можно следующей командой:

cat /proc/swaps || free || swapon -s

Для её увеличения нужно отключить SWAP, создать новый и подключить его.

sudo swapoff -v /dev/centos/swap || sudo swapoff -a
sudo mkswap /dev/centos/swap
sudo swapon -va

Дополнительно:

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

asciicast

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

asciicast

LVM - коротко о главном

https://danshin.ms/LVM-quick-start/

Как разбить файловую систему во время установки ОС

Заходите в группу Telegram
Если есть вопросы или хотите пообщаться, то заходите в мою группу Telegram.