Управління пристроями зберігання даних у Linux-системах становить чималу частину спільної роботи з адміністрування серверів. Це включає як початкову підготовку та конфігурування файлових сховищ даних, так і подальші роботи, пов'язані з виконанням поточних завдань адміністрування, наприклад, монтування видалених каталогів або зовнішніх пристроїв, що підключаються. Для оперативного вирішення зазначених питань Адміністратору необхідно володіти повним обсягом інформації про поточний стан сховища та знати, які види вбудованих команд та/або зовнішніх утиліт використовувати у тому чи іншому випадку. Розглянемо ці питання детальніше.
Підготовка файлових сховищ у Linux
Як енергонезалежні пристрої зберігання даних в Linux в основному використовуються, так звані, блокові пристрої, в яких інформація записується і зчитується блоками фіксованого розміру. До них відносяться добре відомі вінчестери або жорсткі диски, твердотілі SSD пристрої, а також різноманітні апаратні засоби, що використовують флеш пам'ять, та деякі інші. У межах системи вони мають своє символьне ім'я, залежно від типу, наприклад, sda (от SCSI), vda, cdrom (от CD-ROM), і знаходяться у каталозі /dev.
Для їх практичного використання необхідно виконати низку підготовчих операцій:
- Розбити на розділи;
- Відформатувати;
- Здійснити монтування файлової системи.
Розбиття на розділи дозволяє отримати необхідну структуру сховища, в якому, наприклад, можуть бути виділені окремі секції для системних програм та резервних копій.
Форматування розділів пов'язане із застосуванням того чи іншого способу зберігання та зчитування даних, що визначається використанням тієї чи іншої файлової системи, яких існує безліч. На даний момент для Linux-систем найбільш передовою та безпечною для використання в умовах відкритого Інтернет-простору є файлова система ext4.
Монтування дозволяє вказати системі місце (каталог) в якому буде вибудовуватися дерево каталогів диска або розділу, що підключається, так звана, точка монтування. Використання цього механізму дозволяє легко підключити до системи зовнішній пристрій для зберігання даних з будь-яким типом файлової системи.
Linux, як і багато інших операційних систем (ОС), підтримує наявність енергозалежних пристроїв або сховищ, інформація в яких зникає після відключення електроживлення комп'ютера. Це так звані псевдовлаштування. Вони, здебільшого, мають спеціальні символьні імена, наприклад, devtmpfs чи tmpfs (тимчасова файлова система). Робота з ними принципово нічим не відрізняється від роботи з реальними пристроями. Вони також мають загальний розмір, зайнятий та вільний простір, точку монтування та інші ознаки реальних пристроїв.
Відповідно до сказаного, всі програмні засоби для роботи з пристроями зберігання даних у Linux можна розбити на такі групи:
- Утиліти інформаційно-керуючого типу;
- Програмні засоби створення дискових розділів та їх форматування;
- Команда монтування файлових систем.
Нижче будуть розглянуті програмні засоби кожної із зазначених груп.
Утиліти інформаційно-керуючого типу
Такі програми дозволяють отримати повну інформацію про поточний стан всього файлового сховища, розгорнутого в системі, зокрема:
- Інформацію про поточне використання дискового простору кожного підключеного пристрою;
- Характеристики носіїв - ім'я, ідентифікатор, розмір тощо;
- Тип пристрою – диск, розділ тощо;
- Інформацію про всі розділи та встановлені на них файлові системи;
- Спосіб підключення та точку монтування.
На основі отриманої інформації можна надалі приймати рішення про можливі шляхи корекції, зміни чи розвитку структури сховища.
Для початку, отримаємо інформацію, що цікавить нас, про поточне використання всього дискового простору нашої системи, що знаходиться під управлінням ОС Ubuntu 22.04. Для цього скористаємося командою df із параметром –h, який виводить інформацію у зручному для нас вигляді. Наберемо в терміналі.
$ df -h
З метою зручності аналізу нижче ми вивели результат виконання команди.
Filesystem | Size | Used | Avail | Use% | Mounted on |
---|---|---|---|---|---|
tmpfs | 193M | 2.5M | 191M | 2% | /run |
/dev/vda2 | 24G | 9.9G | 14G | 44% | / |
tmpfs | 964M | 0 | 964M | 0% | /dev/shm |
tmpfs | 5.0M | 0 | 5.0M | 0% | /run/lock |
tmpfs | 193M | 4.0K | 193M | 1% | /run/user/0 |
Як бачимо, в системі встановлено лише один фізичний пристрій для зберігання даних з ім'ям vda; загальна його ємність складає 24 Gb; використано 9,9 Gb (44%); вільно – 14 Gb; точка монтування – кореневий каталог.
Всі інші носії є псевдопристроями, тобто тимчасовими з символічним ім'ям tmpfs. Кожен із них змонтований у своєму каталозі та виконує певні системні функції. Місткість кожного з них не перевищує 1 Gb.
Для ефективного відстеження характеристик, пов'язаних з блоковими пристроями, доцільно використовувати команду lsblk, яка є своєрідним аналогом добре відомої команди ls для дослідження каталогу. Цю команду краще запускати з приставкою sudo щоб уникнути некоректних результатів, пов'язаних з нестачею повноважень.
Використовуємо її у нашій системі для уточнення даних. Наберемо в терміналі:
$ sudo lsblk
В результаті, ми отримали інформацію про блочні пристрої, до яких відносяться:
- Його ім'я у /dev;
- Тип;
- Розмір;
- Точка монтування.
Команда вивела всі ці дані, а також показала всі розділи (vda1 і vda2) фізичного носія типу disk. Однак це ще не вся інформація з тієї, якою повинен володіти Адміністратор системи. Зокрема, відсутні дані щодо таких характеристик носіїв, як їх ідентифікатор UUID та мітка. Для їх отримання скористаємося додатковим параметром --fs цієї команди:
$ sudo lsblk --fs
Нижче виведено результат виконання команди.
NAME | FSTYPE | FSVER | LABEL | UUID | FSAVAIL | FSUSE% | MOUNTPOINTS |
---|---|---|---|---|---|---|---|
loop0 | squashfs | 4.0 | 0 | 100% | /snap/core20/1828 | ||
loop1 | squashfs | 4.0 | 0 | 100% | /snap/core20/2015 | ||
loop2 | squashfs | 4.0 | 0 | 100% | /snap/lxd/22923 | ||
loop3 | squashfs | 4.0 | 0 | 100% | /snap/lxd/24322 | ||
loop5 | squashfs | 4.0 | 0 | 100% | /snap/snapd/20092 | ||
loop6 | squashfs | 4.0 | 0 | 100% | /snap/snapd/20290 | ||
sr0 | |||||||
vda | |||||||
├─vda1 | |||||||
└─vda2 | ext4 | 1.0 | 3cd87dc4-371e-4264-9b09-0058cf3bbe6e | 13G | 41% | / |
В результаті ми отримали потрібну нам інформацію про фізичний носій – тип його файлової системи (ext4) та її версію (1.0); значення UUID (3cd87dc4-371e-4264-9b09-0058cf3bbe6e) та ін. Ця інформація може нам знадобитися в подальшому для зміни конфігурації накопичувача.
Тепер дізнаємося про топологію нашого диска за допомогою параметра –t:
$ sudo lsblk -t
Програмні засоби створення дискових розділів та їх форматування
Є безліч утиліт для Linux, основне завдання яких – робота з дисковими розділами та їх форматування. Найбільш відомі з них – GNOME Disks, KDE Partition Manager, GNU Parted ну і, звичайно, Fdisk – вбудований засіб для роботи в режимі командного рядка.
Використовуємо програму GNU Parted для вирішення нашого завдання – поєднання двох розділів нашого диска в один. Для цього наберемо в терміналі:
$ sudo parted /dev/vda mklabel gpt
Тут gpt – формат розміщення таблиць дискових розділів, що є частиною технології EFI.
Під час виконання програми у терміналі буде виведено низку питань, на які потрібно буде відповісти. Зокрема, це повідомлення про видалення даних з розділів, що видаляються. Запитання та відповіді на них наведені нижче.
Тепер можна приступати до створення єдиного розділу завантаження ємністю на весь диск. Наберемо в терміналі:
$ sudo parted -a opt /dev/vda mkpart primary ext4 0% 100%
Тут також доведеться відповісти на низку питань.
У результаті було створено новий розділ. Переконаємося у цьому за допомогою відповідної команди:
$ lsblk
Так і є. У нашому пристрої є тільки один розділ замість двох, як було раніше. Тепер нам залишилося форматувати його під файлову систему ext4. Наберемо в терміналі:
$ sudo mkfs.ext4 -L datapartition /dev/vda2
Розділ успішно відформатовано.
Команди монтування файлових систем
Основною командою Linux для виконання операцій монтування файлових систем є mount, що зазвичай використовується з рядом параметрів.
Формат команди наступний:
sudo mount {Набір параметрів} {Повне ім'я розділу, що монтується} {Точка монтування}
Взагалі, стандартом рекомендовано як точку монтування використовувати або /mnt, або вкладений у нього каталог, хоча, звичайно ж, це не принципово.
Наприклад, змонтуємо розділ /dev/vda2 у каталозі /mnt/experiment. Для цього спочатку створимо каталог experiment:
$ sudo mkdir -p /mnt/experiment
Команда монтування матиме такий вигляд:
$ sudo mount -o defaults /dev/vda2 /mnt/experiment
Будь-яку змонтовану файлову систему можна розмонтувати. Наприклад, у нашому випадку команда розмонтування буде такою:
$ sudo umount /mnt/experiment
Слід мати на увазі, що всі команди монтування, виконані вручну, діють тільки на період часу поточного сеансу роботи і тому доцільно вписувати їх в один з конфігураційних файлів, що гарантує автоматичне монтування будь-якої кількості пристроїв.
Відредагуємо цей файл за допомогою редактора nano:
$ sudo nano /etc/fstab
Вставимо в кінець файлу наступний рядок:
UUID=3cd87dc4-371e-4264-9b09-0058cf3bbe6e /mnt/experiment ext4 defaults 0 2
Тут ми вказали ідентифікатор нашого пристрою, точку монтування, тип файлової системи та виставили стандартні значення інших параметрів. Після цього вміст файлу стане наступним:
Збережемо внесені зміни та вийдемо з редактора.
Тепер при кожному завантаженні відбуватиметься монтування файлової системи відповідно до встановлених нами параметрів. І таких записів можна вставляти стільки, скільки потрібно для роботи Адміністратора.