Linux: диски, разделы, файловые системы и монтирование
Просмотр дисков, создание разделов и файловых систем, монтирование, fstab, место на диске и swap
Просмотр устройств
| Команда | Вариант | Что делает |
| lsblk | lsblk | Дерево дисков, разделов и точек монтирования. |
| lsblk -f | lsblk -f | Добавляет файловые системы, UUID и метки. |
| lsblk -o | lsblk -o NAME,SIZE,TYPE,MOUNTPOINT | Свой набор колонок. |
| lsblk -d | lsblk -d -o NAME,ROTA,SIZE | Только диски; ROTA=1 — HDD, 0 — SSD. |
| blkid | sudo blkid | UUID, тип файловой системы и метка каждого раздела. |
| fdisk -l | sudo fdisk -l /dev/sda | Таблица разделов диска (только чтение). |
| parted -l | sudo parted -l | Разделы всех дисков, включая GPT-большие диски. |
| smartctl -a | sudo smartctl -a /dev/sda | Состояние диска по SMART (пакет smartmontools). |
| udevadm info | udevadm info -q all /dev/sdb | Все атрибуты устройства из udev. |
Разделы и файловые системы
| Команда | Вариант | Что делает |
| fdisk | sudo fdisk /dev/sdb | Интерактивно создать раздел в MBR (m — справка, n — новый, w — записать). |
| gdisk | sudo gdisk /dev/sdb | Интерактивно создать раздел в GPT. |
| parted mklabel | sudo parted /dev/sdb mklabel gpt | Создать таблицу разделов GPT (удаляет все разделы!). |
| parted mkpart | sudo parted -a optimal /dev/sdb mkpart data ext4 0% 100% | Создать раздел на весь диск. |
| mkfs.ext4 | sudo mkfs.ext4 -L data /dev/sdb1 | Создать ext4 с меткой data. |
| mkfs.xfs | sudo mkfs.xfs -L data /dev/sdb1 | Создать XFS (часто для больших данных). |
| mkfs.vfat | sudo mkfs.vfat -F 32 /dev/sdc1 | FAT32 для флешек и EFI-раздела. |
| mkfs.ext4 -m | sudo mkfs.ext4 -m 1 /dev/sdb1 | Зарезервировать 1% под root вместо 5% по умолчанию (для больших данных). |
| wipefs | sudo wipefs -a /dev/sdb1 | Удалить сигнатуры файловой системы (перед переформатированием). |
| e2label | sudo e2label /dev/sdb1 newlabel | Сменить метку ext2/3/4. |
| tune2fs -l | sudo tune2fs -l /dev/sdb1 | Параметры ext-файловой системы. |
| tune2fs -c | sudo tune2fs -c 0 -i 0 /dev/sdb1 | Отключить периодическую принудительную проверку (ext). |
| fsck -n | sudo fsck -n /dev/sdb1 | Проверка без исправлений (безопасно). |
| fsck -y | sudo fsck -y /dev/sdb1 | Проверка и автоматическое исправление (раздел должен быть размонтирован). |
| xfs_repair | sudo xfs_repair -n /dev/sdb1 | Проверка XFS (раздел размонтирован, -n — без правок). |
Монтирование
| Команда | Вариант | Что делает |
| mount | sudo mount /dev/sdb1 /data | Смонтировать раздел в каталог (каталог должен существовать). |
| mount -t | sudo mount -t ext4 /dev/sdb1 /data | Указать тип файловой системы явно. |
| mount -o ro | sudo mount -o ro /dev/sdb1 /mnt/rescue | Только чтение. |
| mount -o remount | sudo mount -o remount,ro / | Изменить опции уже смонтированного раздела. |
| mount -U | sudo mount UUID=xxxx-xxxx /data | Монтировать по UUID (надёжнее, чем /dev/sdX). |
| mount --bind | sudo mount --bind /srv/src /srv/view | Показать одну папку в другом месте. |
| mount -a | sudo mount -a | Смонтировать всё из /etc/fstab (проверка fstab перед перезагрузкой). |
| umount | sudo umount /data | Размонтировать (раздел не должен быть занят). |
| umount -l | sudo umount -l /data | Отцепить сразу, фактическое размонтирование — когда раздел освободится. |
| findmnt | findmnt /data | Дерево точек монтирования, с опциями и источником. |
| lsof +D | sudo lsof +D /data | Кто держит файлы в каталоге (почему не размонтируется). |
| fuser -m | sudo fuser -vm /data | Процессы, использующие точку монтирования. |
/etc/fstab
#
UUID=3f2a-9b1c-0000-1111 / ext4 errors=remount-ro 0 1
UUID=7d4e-aaaa-2222-3333 /data ext4 defaults,noatime 0 2
//nas/share /mnt/nas cifs credentials=/root/.smb,uid=1000 0 0
/swapfile none swap sw 0 0
tmpfs /tmp tmpfs defaults,noexec,nosuid 0 0
| Поле | Значение |
| options | defaults, noatime (не писать время доступа), nofail (не падать при загрузке без диска), noexec, nosuid, ro |
| dump | 0 — не использовать утилитой dump (почти всегда 0) |
| pass | порядок fsck при загрузке: 1 — корень, 2 — остальные, 0 — не проверять |
Перед перезагрузкой обязательно выполните sudo mount -a: если строка в fstab неверна, система может не загрузиться.
Место на диске
| Команда | Вариант | Что делает |
| df -h | df -h | Свободное место по разделам. |
| df -hT | df -hT | С типом файловой системы. |
| df -i | df -i | Свободные inode. Диск может быть полон по inode, хотя место есть. |
| df --output | df -h --output=target,pcent,avail | Выбрать колонки. |
| du -sh | du -sh /var/* | Суммарный размер каждого элемента. |
| du --max-depth | du -h --max-depth=1 /var | sort -h | Вложенность на один уровень, по возрастанию. |
| du -x | du -xh / --max-depth=1 | sort -h | Не переходить на другие разделы (-x). |
| du -a | du -ah /var/log | sort -rh | head | Все файлы, самые большие сверху. |
| ncdu | sudo ncdu /var | Интерактивный анализатор (пакет ncdu). |
| lsof +L1 | sudo lsof +L1 | Удалённые, но открытые процессами файлы: место не освобождается, пока процесс не завершён. |
| journalctl --vacuum | sudo journalctl --vacuum-size=200M | Освободить место под журналом. |
Swap и память
| Команда | Вариант | Что делает |
| free -h | free -h | Память и swap в читаемом виде. |
| swapon --show | swapon --show | Активные разделы подкачки. |
| fallocate | sudo fallocate -l 4G /swapfile | Создать файл для swap быстро. |
| chmod 600 + mkswap | sudo chmod 600 /swapfile && sudo mkswap /swapfile | Подготовить swap-файл (права обязательны). |
| swapon | sudo swapon /swapfile | Включить swap. |
| swapoff | sudo swapoff /swapfile | Выключить (нужно достаточно свободной RAM). |
| sysctl vm.swappiness | sysctl vm.swappiness=10 | Насколько охотно ядро уходит в swap (0–100). |
LVM
| Команда | Вариант | Что делает |
| pvs / pvcreate | sudo pvcreate /dev/sdb | Физический том для LVM. |
| vgs / vgcreate | sudo vgcreate vg_data /dev/sdb | Группа томов. |
| lvs / lvcreate | sudo lvcreate -L 20G -n lv_app vg_data | Логический том фиксированного размера. |
| lvcreate -l 100%FREE | sudo lvcreate -l 100%FREE -n lv_all vg_data | Занять всё свободное место. |
| lvextend -r | sudo lvextend -r -L +10G /dev/vg_data/lv_app | Увеличить том и файловую систему одной командой (-r). |
| resize2fs | sudo resize2fs /dev/vg_data/lv_app | Растянуть ext4 под размер тома вручную. |
| xfs_growfs | sudo xfs_growfs /data | Растянуть XFS (работает по точке монтирования). |
Пример: новый диск под данные
sudo lsblk # найти новый диск, например sdb
sudo parted -s /dev/sdb mklabel gpt
sudo parted -s -a optimal /dev/sdb mkpart data ext4 0% 100%
sudo mkfs.ext4 -L data /dev/sdb1
sudo mkdir -p /data
sudo mount /dev/sdb1 /data
sudo blkid /dev/sdb1 # взять UUID
echo 'UUID=ВАШ-UUID /data ext4 defaults,noatime,nofail 0 2' | sudo tee -a /etc/fstab
sudo mount -a && df -hT /data
mkfs, wipefs, parted mklabel и fdisk с записью удаляют данные на устройстве без возможности восстановления. Всегда проверяйте имя устройства через lsblk перед запуском: /dev/sdb и /dev/sda легко перепутать. Ошибка в /etc/fstab может не дать системе загрузиться, поэтому проверяйте mount -a до перезагрузки.
Для дисков с данными добавляйте в fstab опцию nofail: если диск не подключён, система всё равно загрузится. А для SSD полезна опция noatime, которая снижает лишние записи.