У Linux файлова система не прив'язується до окремої літери диска, як це відбувається у Windows. Замість цього вона підключається до певного каталогу в єдиному дереві файлової системи. Така операція називається монтуванням (mounting).
Наприклад, фізичний диск або його розділ може містити файлову систему ext4. Щоб отримати доступ до її файлів, її можна змонтувати в каталог /mnt/data. Після цього вміст файлової системи буде доступний за шляхом /mnt/data.
Важливо розрізняти пристрій, файлову систему та точку монтування. Наприклад:
/dev/sdb1 → пристрій (розділ)
/dev/sdb1 → файлова система ext4
/mnt/data → точка монтування
Після монтування:
/dev/sdb1
/mnt/data
/mnt/data/file.txt
/mnt/data/photos/ ...
Точки монтування
Точка монтування (mount point) — це звичайний каталог, у який підключається файлова система.
Наприклад, створимо каталог:
sudo mkdir /mnt/data
Після цього можна змонтувати розділ:
sudo mount /dev/sdb1 /mnt/data
Тепер вміст /dev/sdb1 доступний через /mnt/data.
Каталог, який використовується як точка монтування, зазвичай має бути порожнім. Якщо змонтувати файлову систему в каталог, де вже є файли, вони не видаляються, але стають тимчасово невидимими, оскільки поверх каталогу буде доступний вміст змонтованої файлової системи.
Як переглянути змонтовані файлові системи
Для перегляду поточних монтувань можна використовувати команду mount:
mount
Для практичної роботи з дисками зручнішою є команда findmnt:
findmnt
Наприклад, можна отримати інформацію про конкретну точку монтування:
findmnt /mnt/data
Також дуже корисна команда lsblk, яка показує диски, розділи, файлові системи та точки монтування:
lsblk -f
Монтування за допомогою mount
Загальний синтаксис:
mount [options] <device> <mount-point>
Наприклад:
sudo mount /dev/sdb1 /mnt/data
Linux автоматично визначить файлову систему, якщо вона може бути розпізнана.
За потреби файлову систему можна вказати явно:
sudo mount -t ext4 /dev/sdb1 /mnt/data
Після монтування перевірити результат можна так:
findmnt /mnt/data
Розмонтування
Щоб від'єднати файлову систему, використовується команда umount:
sudo umount /mnt/data
Також можна вказати пристрій:
sudo umount /dev/sdb1
Після розмонтування файлову систему більше не можна використовувати через цю точку монтування.
Якщо Linux повідомляє, що файлова система зайнята:
umount: /mnt/data: target is busy
це означає, що якийсь процес використовує цю файлову систему. Наприклад, термінал може перебувати всередині /mnt/data, або якийсь процес може мати відкритий файл.
Знайти процеси, які використовують точку монтування, можна за допомогою:
sudo lsof +D /mnt/data
або:
sudo fuser -vm /mnt/data
Не варто без потреби використовувати примусове розмонтування. Спочатку потрібно зрозуміти, який процес використовує файлову систему.
Навіщо потрібен fstab
Якщо виконати:
sudo mount /dev/sdb1 /mnt/data
це монтування зазвичай діятиме лише до перезавантаження системи. Після перезавантаження Linux не зобов'язаний повторити цю операцію.
Для опису файлових систем, які потрібно монтувати автоматично, у Linux використовується файл:
/etc/fstab
Назва fstab походить від file systems table — таблиця файлових систем.
Це один із важливих системних конфігураційних файлів Linux. Його редагування потребує прав адміністратора.
Структура /etc/fstab
Типовий запис у /etc/fstab має шість полів:
<source>
<mount-point>
<filesystem-type>
<options>
<dump>
<pass>
Наприклад:
UUID=91f... /mnt/data ext4 defaults 0 2
Розглянемо ці поля окремо.
Перше поле — пристрій або джерело
У першому полі вказується те, що потрібно змонтувати. Це може бути пристрій, UUID, LABEL або інше джерело, яке підтримує mount.
Технічно можна написати:
/dev/sdb1 /mnt/data ext4 defaults 0 2
Але для постійних монтувань зазвичай краще використовувати UUID, а не ім'я пристрою.
UUID файлової системи
Імена на кшталт /dev/sda1 та /dev/sdb1 залежать від того, у якому порядку ядро виявило пристрої. У деяких ситуаціях порядок може змінитися.
UUID є ідентифікатором файлової системи, тому він значно надійніший для записів у fstab.
Подивитися UUID можна за допомогою:
lsblk -f
або:
sudo blkid
Наприклад:
/dev/sdb1: UUID="91f3a7c2-..." TYPE="ext4"
Тоді запис у /etc/fstab може виглядати так:
UUID=91f3a7c2-... /mnt/data ext4 defaults 0 2
Друге поле — точка монтування
Друге поле визначає каталог, у який буде змонтована файлова система:
/mnt/data
Каталог повинен існувати до моменту монтування. Його можна створити:
sudo mkdir -p /mnt/data
Третє поле — тип файлової системи
У третьому полі вказується тип файлової системи.
Наприклад:
ext4 xfs btrfs vfat ntfs exfat
Для Linux-систем найчастіше можна зустріти ext4, але конкретний тип залежить від файлової системи на відповідному розділі.
Тип можна подивитися за допомогою:
lsblk -f
Четверте поле — параметри монтування
Четверте поле містить параметри, які визначають, як саме буде змонтована файлова система.
Найпоширеніше значення:
defaults
Це набір стандартних параметрів монтування. Його можна комбінувати з іншими параметрами через кому.
Наприклад:
defaults,noatime
Деякі часто використовувані параметри:
ro— монтувати лише для читання;rw— монтувати для читання і запису;noatime— не оновлювати час останнього доступу до файлів;auto— монтувати під час автоматичної обробкиfstab;noauto— не монтувати автоматично;user— дозволити користувачу монтувати файлову систему;users— дозволити монтування та розмонтування користувачам;nofail— не вважати відсутність цього пристрою критичною помилкою під час завантаження.
П'яте поле — dump
П'яте поле традиційно використовується утилітою dump для визначення, чи потрібно включати файлову систему до резервного копіювання.
Для більшості сучасних систем використовується:
0
Тобто, наприклад:
UUID=91f... /mnt/data ext4 defaults 0 2
Шосте поле — pass
Шосте поле визначає порядок перевірки файлових систем утилітою fsck під час завантаження.
Типові значення:
0— не перевіряти;1— перевіряти першою, зазвичай для кореневої файлової системи/;2— перевіряти після файлової системи з параметром1.
Для звичайного додаткового розділу ext4 типовим записом буде:
UUID=91f... /mnt/data ext4 defaults 0 2
Приклад повного налаштування
Припустимо, є розділ:
/dev/sdb1
і на ньому файлова система ext4.
Спочатку подивимося її UUID:
lsblk -f
Припустимо, отримали:
sdb1 ext4 91f3a7c2-1234-4567-89ab-0123456789ab
Створимо точку монтування:
sudo mkdir -p /mnt/data
Відкриємо fstab:
sudo nano /etc/fstab
Додамо:
UUID=91f3a7c2-1234-4567-89ab-0123456789ab /mnt/data ext4 defaults 0 2
Після цього не обов'язково перезавантажувати комп'ютер. Можна перевірити конфігурацію:
sudo mount -a
Команда mount -a намагається змонтувати файлові системи, описані у /etc/fstab, за винятком записів із параметром noauto.
Якщо команда завершилася без помилки, можна перевірити:
findmnt /mnt/data
Це дуже важливий принцип: після зміни /etc/fstab бажано спочатку перевірити його через mount -a, а вже потім перезавантажувати систему.
Параметр nofail
Особливо важливим є параметр nofail. Він може бути корисним для додаткових дисків, зовнішніх накопичувачів або інших файлових систем, відсутність яких не повинна перешкоджати завантаженню Linux.
Наприклад:
UUID=91f... /mnt/data ext4 defaults,nofail 0 2
Без nofail проблема з обов'язковою файловою системою, зазначеною у fstab, може призвести до проблем під час завантаження або потрапляння системи в режим відновлення. Водночас nofail не є універсальним рішенням: для файлових систем, без яких система нормально працювати не може, приховувати проблему таким способом не варто.
Монтування USB-накопичувачів
USB-накопичувачі також містять файлову систему, яку можна змонтувати вручну.
Після підключення диска корисно виконати:
lsblk -f
Створюємо точку монтування:
sudo mkdir -p /mnt/backup
Монтуємо:
sudo mount /dev/sdc1 /mnt/backup
Після роботи:
sudo umount /mnt/backup
Для звичайних настільних Linux-систем графічне середовище часто автоматично монтує USB-накопичувачі. Це не означає, що механізм mount або fstab не використовується — відповідні системні компоненти виконують необхідні операції автоматично.
Монтування за LABEL
Окрім UUID, файловій системі можна призначити мітку (LABEL). Наприклад:
LABEL=BACKUP /mnt/backup ext4 defaults,nofail 0 2
Це може бути зручніше для людини, оскільки BACKUP читається набагато легше, ніж довгий UUID.
Але LABEL не обов'язково є унікальною. Якщо в системі з'являться дві файлові системи з однаковою міткою, можуть виникнути проблеми. Тому для системних конфігурацій UUID часто є більш однозначним варіантом.
Що станеться, якщо помилитися у fstab
/etc/fstab обробляється під час завантаження системи, тому помилка в ньому може мати серйозні наслідки.
Наприклад, якщо вказати неправильний UUID:
UUID=WRONG-UUID /mnt/data ext4 defaults 0 2
Linux не зможе знайти відповідну файлову систему.
Саме тому не варто одразу перезавантажувати систему після редагування fstab. Спочатку перевірте конфігурацію:
sudo mount -a
Також корисно перевірити конкретний запис:
findmnt --verify
Якщо виявлено проблему, її потрібно виправити до перезавантаження.
Важливий принцип: монтується файлова система, а не просто диск
У побуті часто говорять «змонтувати диск», але технічно потрібно розрізняти ці поняття.
Монтування — це не копіювання
Монтування не копіює файли з одного каталогу в інший. Воно підключає файлову систему до дерева каталогів Linux.
Наприклад:
sudo mount /dev/sdb1 /mnt/data
не означає «скопіювати вміст /dev/sdb1 у /mnt/data». Після операції ядро починає обробляти доступ до /mnt/data як доступ до змонтованої файлової системи.
Підсумок
Монтування — фундаментальний механізм Linux, за допомогою якого різні файлові системи підключаються до єдиного дерева каталогів.
Основні команди, які варто знати:
lsblk -f # диски, файлові системи, UUID, точки монтування
blkid # UUID та типи файлових систем mount # поточні монтування
findmnt # зручний перегляд дерева монтувань
sudo mount ... # монтування
sudo umount ... # розмонтування
sudo mount -a # монтування відповідно до /etc/fstab
findmnt --verify # перевірка fstab
sudo nano /etc/fstab # редагування таблиці файлових систем
Для постійного монтування найчастіше використовується схема:
UUID=<uuid> <mount-point> <filesystem> defaults 0 2
Наприклад:
UUID=91f3a7c2-1234-4567-89ab-0123456789ab /mnt/data ext4 defaults,nofail 0 2
Коментарі
Дописати коментар