Статья из серии How To...
. В этой я собрал способы выполнить самые частые операции с файловой системой в Linux, в частности в CentOS
. Статья может использоваться как справочник и будет дополняться. Добавляйте в закладки.
Заходя в Windows, системный администратор может наглядно наблюдать подключенные дисковые устройства, видеть их тип, размер, свободное пространство, выполнять операции форматирования, расширения диска и т.п.. В Linux не всё так очевидно, приходится запоминать множество команд. Эта статья даёт ответы на следующие вопросы:
- Сколько дисков в системе, как их увидеть?
- Как “разбиты” диски, сколько партиций, их тип и размер?
- Сколько свободного места на дисках?
- Как новый жесткий диск сделать доступным в системе?
- Как создать новый раздел?
- Как отформатировать раздел?
- Как смонтировать раздел?
- Как увидеть все смонтированные разделы и параметры монтирования?
-
Как расширить пространство после увеличения размера жёсткого диска?
- Как разбить файловую систему во время установки ОС?
Так же вы узначете:
- Как увеличить размер партиции
- Как создать LVM Physical Volume
- Как увеличить размер Physical Volume
- Как увеличить размер Virtual Group
- Как увеличить размер Logical Volume
- Как увеличить размер файловой системы
Сколько дисков в системе, как их увидеть?
Как известно, в Linux всё есть файл. И память, и диски - всё. Поэтому самый простой способ посмотреть устройства - это вывести содержимое каталога, где содержатся устройства. Устройства “живут” в /dev
, а блочные, дисковые устройства называются sda, sdb и т.д., если они подключены через SCSI и hda, hdb и т.д., если через IDE. Сейчас, в век виртуализации, конечно, чаще всего можно встретить только SCSI устройства. Следующая команда выведет список всех дисков в системе:
ls -l /dev/sd*
`ls` - вывести содержимое каталога
`-l` - вывести списком
`/dev/sd*` - вывести содержимое каталога /dev, начинающееся на `sd`
Как “разбиты” диски, сколько партиций, их тип и размер?
Есть несколько способов увидеть эту информацию. Не прибегая ни к каким утилитам, что может быть полезно в системах с минимальным набором установленных пакетов, можно воспользоваться способом посмотреть содержимое файла /proc/partitions
. Этот файл содержит информацию о распределённых блоках партиций. Посмотреть содержимое можно командой cat
:
cat /proc/partitions
Пример этого вывода выглядит следующим образом:
Больше информации о Proc File System
(содержимом каталога /proc) можно узнать в документации по RedHat.
Есть ещё одна утилита fdisk
. Следующей командой, можно увидеть информацию о всех дисках и их размерах:
sudo fdisk -l
Более компактные сведения можно получить утилитой parted
выполнив следующую команду:
sudo parted -l
Ещё одним способом, является утилита lsblk
. Она показывает информацию очень наглядно, в виде дерева.
Сколько свободного места на дисках?
Проще всего посмотреть свободное место на диске, воспользоваться утилитой df
. Она выведет на экран все смонтированные файловые системы и дополнительную информацию, в частности размер. Удобнее всего воспользоваться следующей командой:
df -hT
`df` - вывести информацию о смонтированных разделах
`-h` - вывести размер в удобочитаемом формате
`-T` - вывести информацию о типе файловой системы
Важно отметить, что 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 есть несколько преимуществ и недостатков.
Преимещества:
- При изменении порядка подключения дисков, название раздела может поменятся. Например, вместо sda стать sdb. Но UUID раздела останется прежнем, т.к. он хранится в суперблоке.
Суперблок содержит информацию, необходимую для монтирования и управления работой файловой системы. Суперблок является начальной точкой файловой системы. Он имеет размер 1024 байта и всегда располагается по смещению 1024 байта от начала файловой системы.
- Так же UUID раздела сохраняется при отключении и переносе в другую систему.
Недостатки:
-
UUID раздела может поменятся, например при пересоздании файловой системы.
-
В одной системе нельзя смонтировать два раздела с одинаковым UUID. Поэтому такой способ монтирования нельзя использовать с LVM снапшотами и клонированными дисками.
UUID можно изменить командой
tune2fs -U new_uuid /dev/sdaX
После изменения файла /etc/fstab, настоятельно рекомендую проверить то, что описанные в нём разделы успешно монтируются. Для этого нужно выполнить команду
sudo mount -a
. Если вы не видите никакой ошибки, то смело можно перезагружаться.
Увидеть все смонтированные разделы и параметры монтирования
Для просмотра списка точек монтирования выполните команду:
df -aTh
Чтобы найти больше информации о точках монтирования в вашей системе, выполните команду:
findmnt
Кроме того, вы можете использовать команду cat:
cat /proc/self/mounts
Также вы можете использовать команду mount, как показано далее:
mount -l
Расширить пространство после увеличения размера жёсткого диска
Есть несколько сценариев, когда нужно увеличить размер файловой системы.
- Вы увеличили размер виратуального диска.
- Восстановили образ системы на диск большего размера.
- Добавили ещё один диск в систему.
Перед тем как выполнять какие либо манипуляции с дисками, разделами и файловой системой, настоятельно рекомендую сделать резервную копию данных.
В первых двух случаях, вам нужно:
- Увеличить размер партиции
- Увеличить размер Physical Volume и Logical Volume, в случае с LVM
- Увеличить размер файловой системы
В последнем случае, вам нужно:
- Создать новую партицию
- Создать LVM Physical Volume, Увеличить размер Virtual Group и Logical Volume, в случае с LVM
- Увеличить размер файловой системы
Увеличить размер партиции
Для увеличения размера партиции программой 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, файловой системы и монтирование
Создание раздела утилитой parted, файловой системы и монтирование
LVM - коротко о главном
https://danshin.ms/LVM-quick-start/