104.1 Урок 1
Сертифікат: |
LPIC-1 |
---|---|
Версія: |
5.0 |
Розділ: |
104 Пристрої, файлові системи Linux, стандарт ієрархії файлової системи |
Тема: |
104.1 Створення розділів і файлових систем |
Урок: |
1 з 1 |
Вступ
У будь-якій операційній системі диск потрібно розбити на розділи, перш ніж його можна буде використовувати. Розділ — це логічна підмножина фізичного диска, а інформація про розділи зберігається в таблиці розділів. Ця таблиця містить інформацію про перший і останній сектори розділу та його тип, а також додаткові відомості про кожен розділ.
Зазвичай кожен розділ розглядається операційною системою як окремий «диск», навіть якщо всі вони знаходяться на одному фізичному носії. У системах Windows їм призначаються літери, такі як C:
(історично основний диск), D:
тощо. У Linux кожен розділ призначається до каталогу в /dev
, наприклад /dev/sda1
або /dev/sda2
.
У цьому уроці ви дізнаєтеся, як створювати, видаляти, відновлювати та змінювати розміри розділів за допомогою трьох найпоширеніших утиліт (fdisk
, gdisk
і parted
), як створити на них файлову систему та як створити та встановити розділ swap або swap-файл для використання їх у якості віртуальної пам’яті.
Note
|
З історичних причин у цьому уроці ми називатимемо носії даних «дисками», хоча сучасні системи зберігання, такі як SSD та Flash-носії, взагалі не містять жодних «дисків». |
Розуміння MBR і GPT
Існує два основних способи зберігання інформації про розділи на жорстких дисках. Перший — Головний завантажувальний запис (MBR, Master Boot Record), а другий — Таблиця розділів GUID (GPT, GUID Partition Table).
- MBR
-
Це спадок з перших днів MS-DOS (точніше, PC-DOS 2.0 з 1983 року) і протягом десятиліть був стандартною схемою розбиття на ПК. Таблиця розділів зберігається у першому секторі диска, який називається завантажувальним сектором, разом із завантажувачем, який у системах Linux зазвичай є завантажувачем GRUB. Але MBR має ряд обмежень, які перешкоджають його використанню в сучасних системах, наприклад, неможливість адресувати диски розміром понад 2 ТБ і обмеження до 4 основних розділів на диск.
- GUID
-
Система розбиття на розділи, яка усуває багато обмежень MBR. Практичних обмежень на розмір диска немає, а максимальна кількість розділів обмежена лише самою операційною системою. Частіше зустрічається на більш сучасних машинах, які використовують UEFI замість старого BIOS.
Під час виконання завдань системного адміністрування дуже ймовірно, що ви знайдете у використанні обидві схеми, тому важливо знати, як використовувати інструменти, пов’язані з кожною з них, для створення, видалення або зміни розділів.
Керування розділами MBR за допомогою FDISK
Стандартною утилітою для керування розділами MBR в Linux є fdisk
. Це інтерактивна утиліта з керуванням через меню. Для її використання введіть fdisk
, а потім назву пристрою, що відповідає диску, який потрібно редагувати. Наприклад, команда
# fdisk /dev/sda
редагує таблицю розділів першого пристрою, підключеного до SATA (sda
) у системі. Майте на увазі, що вам потрібно вказати пристрій, що відповідає фізичному диску, а не одному з його розділів (наприклад, /dev/sda1
).
Note
|
Усі операції, пов’язані з диском у цьому уроці, потрібно виконувати як користувач |
Після виклику fdisk
покаже привітання, а потім попередження і буде чекати на ваші команди.
# fdisk /dev/sda Welcome to fdisk (util-linux 2.33.1). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Command (m for help):
Попередження важливе. Ви можете створювати, редагувати або видаляти розділи за бажанням, але ніщо не буде записано на диск, якщо ви не скористаєтеся командою write (w
). Таким чином, ви можете «тренуватися» без ризику втратити дані, якщо ви не натискаєте клавішу w
. Щоб вийти з fdisk
без збереження змін, скористайтеся командою q
.
Note
|
Ніколи не варто практикуватись на важливому диску, оскільки завжди є ризики. Натомість використовуйте запасний зовнішній диск або USB-флешку. |
Виведення поточної таблиці розділів
Команда p
використовується для виведення поточної таблиці розділів. Результат має бути такий:
Command (m for help): p Disk /dev/sda: 111.8 GiB, 120034123776 bytes, 234441648 sectors Disk model: CT120BX500SSD1 Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x97f8fef5 Device Boot Start End Sectors Size Id Type /dev/sda1 4096 226048942 226044847 107.8G 83 Linux /dev/sda2 226048944 234437550 8388607 4G 82 Linux swap / Solaris
Значення кожного стовпця:
Device
-
Пристрій, призначений для розділу.
Boot
-
Показує, чи є розділ «завантажувальним» чи ні.
Start
-
сектор, з якого починається розділ.
End
-
сектор, на якому закінчується розділ.
Sectors
-
Загальна кількість секторів у розділі. Помножте на розмір сектора, щоб отримати розмір розділу в байтах.
Size
-
Розмір розділу у форматі «зручному для людини». У наведеному вище прикладі значення вказані в гігабайтах.
Id
-
числове значення, що представляє тип розділу.
Type
-
Опис типу розділу.
Порівняння основного та розширеного розділів
На диску MBR ви можете мати 2 основних типи розділів, основний і розширений. Як ми вже говорили раніше, у вас може бути лише 4 основних розділи на диску, і якщо ви хочете зробити диск «завантажувальним», перший розділ повинен бути основним.
Одним із способів обійти це обмеження є створення розширеного розділу, який діятиме як контейнер для логічних розділів. Ви можете мати, наприклад, основний розділ, розширений розділ, який займає залишок дискового простору, і п’ять логічних розділів всередині нього.
Для операційної системи як Linux, основний і розширений розділи обробляються однаково, тому немає «переваги» використання одного перед іншим.
Створення розділу
Щоб створити розділ, скористайтеся командою n
. За замовчуванням розділи створюються на початку нерозподіленого місця на диску. Вам буде запропоновано ввести тип розділу (основний або розширений), перший сектор і останній сектор.
Для першого сектора ви зазвичай можете прийняти значення за замовчуванням, запропоноване fdisk
, якщо вам не потрібен розділ, який починається з певного сектора. Замість вказування останнього сектора ви можете вказати розмір, за яким слідують літери K
, M
, G
, T
або P
(кіло, мега, гіга, тера або пета). Отже, якщо ви хочете створити розділ розміром 1 ГБ, ви можете вказати +1G
як останній сектор
, а fdisk
відповідним чином налаштує розмір розділу. Перегляньте наступний приклад створення основного розділу:
Command (m for help): n Partition type p primary (0 primary, 0 extended, 4 free) e extended (container for logical partitions) Select (default p): p Partition number (1-4, default 1): 1 First sector (2048-3903577, default 2048): 2048 Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-3903577, default 3903577): +1G
Перевірка нерозподіленого простору
Якщо ви не знаєте, скільки вільного місця на диску, ви можете скористатися командою F
, щоб показати нерозподілене місце, наприклад:
Command (m for help): F Unpartitioned space /dev/sdd: 881 MiB, 923841536 bytes, 1804378 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes Start End Sectors Size 2099200 3903577 1804378 881M
Видалення розділів
Щоб видалити розділ, скористайтеся командою d
. fdisk
запитає у вас номер розділу, який ви хочете видалити, якщо кількість присутніх на диску розділів більше одного. Тоді цей розділ буде вибрано та негайно видалено.
Майте на увазі, що якщо ви видалите розширений розділ, усі логічні розділи всередині нього також будуть видалені.
Пам’ятайте про розрив!
Майте на увазі, що під час створення нового розділу за допомогою fdisk
максимальний розмір буде обмежено максимальною кількістю безперервного нерозподіленого місця на диску. Скажімо, наприклад, що у вас є така карта розділів:
Device Boot Start End Sectors Size Id Type /dev/sdd1 2048 1050623 1048576 512M 83 Linux /dev/sdd2 1050624 2099199 1048576 512M 83 Linux /dev/sdd3 2099200 3147775 1048576 512M 83 Linux
Потім ви видаляєте розділ 2 і перевіряєте наявність вільного місця:
Command (m for help): F Unpartitioned space /dev/sdd: 881 MiB, 923841536 bytes, 1804378 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes Start End Sectors Size 1050624 2099199 1048576 512M 3147776 3903577 755802 369M
Додавши розмір нерозподіленого простору, теоретично ми маємо 881 МБ. Але подивіться, що станеться, коли ми спробуємо створити розділ розміром 700 МБ:
Command (m for help): n Partition type p primary (2 primary, 0 extended, 2 free) e extended (container for logical partitions) Select (default p): p Partition number (2,4, default 2): 2 First sector (1050624-3903577, default 1050624): Last sector, +/-sectors or +/-size{K,M,G,T,P} (1050624-2099199, default 2099199): +700M Value out of range.
Це відбувається тому, що найбільшим безперервним нерозподіленим місцем на диску є блок розміром 512 МБ, який належав розділу 2. Ваш новий розділ не може «дотягнутись» через розділ 3, щоб використати частину нерозподіленого простору після нього.
Зміна типу розділу
Іноді вам може знадобитися змінити тип розділу, особливо якщо ви маєте справу з дисками, які будуть використовуватися в інших операційних системах і платформах. Це робиться за допомогою команди t
, після якої вказується номер розділу, який потрібно змінити.
Тип розділу має бути визначений відповідним шістнадцятковим кодом, і ви можете побачити список усіх дійсних кодів за допомогою команди l
.
Не плутайте тип розділу з файловою системою, яка на ньому використовується. Хоча спочатку між ними був зв’язок, сьогодні ви не можете вважати, що це так. Наприклад, розділ Linux може містити будь-яку файлову систему Linux, наприклад ext4 або ReiserFS.
Tip
|
Розділи Linux мають тип |
Керування розділами GUID за допомогою GDISK
Утиліта gdisk
є еквівалентом fdisk
для роботи з розділеними дисками GPT. Насправді інтерфейс запозичений з fdisk
, містить інтерактивну підказку та такі ж (або дуже схожі) команди.
Виведення поточної таблиці розділів
Команда p
використовується для виведення поточної таблиці розділів. Результат має бути приблизно такий:
Command (? for help): p Disk /dev/sdb: 3903578 sectors, 1.9 GiB Model: DataTraveler 2.0 Sector size (logical/physical): 512/512 bytes Disk identifier (GUID): AB41B5AA-A217-4D1E-8200-E062C54285BE Partition table holds up to 128 entries Main partition table begins at sector 2 and ends at sector 33 First usable sector is 34, last usable sector is 3903544 Partitions will be aligned on 2048-sector boundaries Total free space is 1282071 sectors (626.0 MiB) Number Start (sector) End (sector) Size Code Name 1 2048 2099199 1024.0 MiB 8300 Linux filesystem 2 2623488 3147775 256.0 MiB 8300 Linux filesystem
З самого початку ми помічаємо кілька відмінностей:
-
Кожен диск має унікальний ідентифікатор диска (GUID). Це 128-розрядне шістнадцяткове число, яке призначається випадковим чином під час створення таблиці розділів. Оскільки існує 3,4 × 1038 можливих значень для цього числа, ймовірність того, що 2 випадкових диска мають однаковий GUID, досить мала. Ідентифікатор GUID можна використовувати, щоб визначити, які файлові системи монтувати під час завантаження (і куди), усуваючи необхідність використовувати для цього шлях пристрою (наприклад,
/dev/sdb
). -
Подивіться на запис
Partition table holds up to 128 entries
. Це так, ви можете мати до 128 розділів на диску GPT. Через це немає потреби в основних і розширених розділах. -
Вільне місце вказано в останньому рядку, тому немає потреби в еквіваленті команди
F
з fdisk.
Створення розділу
Команда для створення розділу n
, така як і в fdisk
. Основна відмінність полягає в тому, що окрім номера розділу, першого та останнього сектора (або розміру), ви також можете вказати тип розділу під час створення. Розділи GPT підтримують набагато більше типів, ніж MBR. Ви можете перевірити список усіх типів, що підтримуються, за допомогою команди l
.
Видалення розділу
Щоб видалити розділ, введіть d
і номер розділу. На відміну від fdisk
, перший розділ не буде вибрано автоматично, якщо він є єдиним на диску.
На дисках GPT можна легко змінити порядок розділів або «провести сортування», щоб уникнути пробілів у послідовності нумерації. Для цього просто скористайтеся командою s
. Наприклад, уявіть собі диск з такою таблицею розділів:
Number Start (sector) End (sector) Size Code Name 1 2048 2099199 1024.0 MiB 8300 Linux filesystem 2 2099200 2361343 128.0 MiB 8300 Linux filesystem 3 2361344 2623487 128.0 MiB 8300 Linux filesystem
Якщо видалити другий розділ, таблиця стане наступною:
Number Start (sector) End (sector) Size Code Name 1 2048 2099199 1024.0 MiB 8300 Linux filesystem 3 2361344 2623487 128.0 MiB 8300 Linux filesystem
Якщо ви використаєте команду s
, вона буде мати наступний вигляд:
Number Start (sector) End (sector) Size Code Name 1 2048 2099199 1024.0 MiB 8300 Linux filesystem 2 2361344 2623487 128.0 MiB 8300 Linux filesystem
Зверніть увагу, що третій розділ став другим.
Розрив? Що за розрив?
На відміну від дисків MBR, при створенні розділу на дисках GPT розмір не обмежується максимальною кількістю суміжного нерозподіленого простору. Ви можете використовувати навіть останній біт вільного сектора, незалежно від того, де він розташований на диску.
Параметри відновлення
На дисках GPT зберігаються резервні копії заголовка GPT і таблиці розділів, що полегшує відновлення дисків у разі пошкодження цих даних. gdisk
надає функції, які допомагають у цих операціях відновлення, доступ до яких здійснюється за допомогою команди r
.
Ви можете відновити пошкоджений основний заголовок GPT або таблицю розділів за допомогою b
і c
відповідно, або використовувати основний заголовок і таблицю для відновлення резервної копії за допомогою d
і e
. Ви також можете перетворити MBR в GPT за допомогою f
і зробити протилежне за допомогою g
, серед інших операцій. Введіть ?
у меню відновлення, щоб отримати список усіх доступних команд відновлення та описи їх виконання.
Створення файлових систем
Розбиття диска на розділи — це лише перший крок до можливості використання диска. Після цього вам потрібно буде відформатувати розділ за допомогою файлової системи, перш ніж використовувати його для зберігання даних.
Файлова система контролює, як дані зберігаються і доступні на диску. Linux підтримує багато файлових систем, деякі з них є рідними, такі як сімейство ext (розширена файлова система), в той час як інші походять з інших операційних систем, такі як FAT від MS-DOS, NTFS від Windows NT, HFS і HFS+ від Mac OS тощо.
Стандартним інструментом, який використовується для створення файлової системи в Linux, є mkfs
, який має різні “опції” відповідно до файлової системи, з якою він повинен працювати.
Створення файлової системи ext2/ext3/ext4
Розширена файлова система (Extended Filesystem, ext) була першою файловою системою для Linux і протягом багатьох років була замінена новими версіями під назвою ext2, ext3 і ext4. Наразі вона є файловою системою за замовчуванням для багатьох дистрибутивів Linux.
Утиліти mkfs.ext2
, mkfs.ext3
та mkfs.ext4
використовуються для створення файлових систем ext2, ext3 та ext4. Насправді всі ці «утиліти» існують лише як символічні посилання на іншу утиліту під назвою mke2fs
. mke2fs
змінює свої значення за замовчуванням відповідно до імені, за яким він викликається. Таким чином, всі вони мають однакову поведінку та параметри командного рядка.
Найпростіший спосіб використання:
# mkfs.ext2 TARGET
Де TARGET
– це ім’я розділу, де має бути створена файлова система. Наприклад, щоб створити файлову систему ext3 на /dev/sdb1
, команда буде наступною:
# mkfs.ext3 /dev/sdb1
Замість використання команди, що відповідає файловій системі, яку ви хочете створити, ви можете передати параметр -t
в mke2fs
, а потім ім’я файлової системи. Наприклад, наведені нижче команди є еквівалентними і створять файлову систему ext4 на /dev/sdb1
.
# mkfs.ext4 /dev/sdb1 # mke2fs -t ext4 /dev/sdb1
Параметри командного рядка
mke2fs
підтримує широкий діапазон опцій і параметрів командного рядка. Ось деякі з найбільш вагомих. Усі вони також застосовуються до mkfs.ext2
, mkfs.ext3
та mkfs.ext4
:
-b SIZE
-
Встановлює розмір блоків даних для пристроя на
SIZE
, який може становити 1024, 2048 або 4096 байт на блок. -c
-
Перед створенням файлової системи перевіряє цільовий пристрій на наявність пошкоджених блоків. Ви можете виконати ретельну, але набагато повільнішу перевірку, передавши цей параметр двічі, наприклад,
mkfs.ext4 -c -c TARGET
. -d DIRECTORY
-
Копіює вміст зазначеного каталогу в корінь нової файлової системи. Корисно, якщо вам потрібно «попередньо заповнити» диск заздалегідь визначеним набором файлів.
-F
-
Danger, Will Robinson! Ця опція примусить mke2fs створити файлову систему, навіть якщо інші параметри, передані їй або мета створення, є небезпечною або відсутній сенс взагалі. Якщо вказано двічі (наприклад,
-F -F
), це можна навіть використати для створення файлової системи на пристрої, який змонтовано або використовується, що дуже, дуже погано. -L VOLUME_LABEL
-
Встановить мітку тому, яка зазначена в
VOLUME_LABEL
. Довжина цієї мітки не повинна перевищувати 16 символів. -n
-
Це справді корисна опція, яка імітує створення файлової системи та відображає те, що було б зроблено, якщо це виконати без параметра
n
. Подумайте про це як про «тестовий» режим. Варто перевірити все, перш ніж вносити будь-які зміни на диск. -q
-
Тихий режим.
mke2fs
буде працювати нормально, але не буде виводити інформацію на термінал. Корисно під час запускуmke2fs
зі скрипту. -U ID
-
Встановить універсальний локальний ідентифікатор (UUID, Universally Unique Identifier) розділу на значення, зазначене як ідентифікатор. UUID — це 128-розрядні числа в шістнадцятковому форматі, які служать для однозначної ідентифікації розділу операційної системи. Це число вказано як 32-значний рядок у форматі 8-4-4-4-12, тобто 8 цифр, дефіс, 4 цифри, дефіс, 4 цифри, дефіс, 4 цифри, дефіс, 12 цифр, наприклад
D249E380 -7719-45A1-813C-35186883987E
. Замість ідентифікатора ви також можете вказати такі параметри, якclear
, щоб очистити UUID файлової системи,random
, щоб використовувати випадково згенерований UUID, абоtime
для створення UUID на основі часу. -V
-
Детальний режим, друкує набагато більше інформації під час роботи, ніж зазвичай. Корисно з метою налагодження.
Створення файлової системи XFS
XFS — це високопродуктивна файлова система, спочатку розроблена компанією Silicon Graphics в 1993 році для її операційної системи IRIX. Завдяки своїм характеристикам продуктивності та надійності вона зазвичай використовується для серверів та інших середовищ, де потрібна висока (або гарантована) пропускна здатність файлової системи.
Інструменти для керування файловими системами XFS є частиною пакунку xfsprogs
. Цей пакунок може знадобитися встановити вручну, оскільки він не входить за замовчуванням до деяких дистрибутивів Linux. Інші, наприклад Red Hat Enterprise Linux 7, використовують XFS як файлову систему за замовчуванням.
Файлові системи XFS поділяються щонайменше на 2 частини, log-розділ, де ведеться журнал усіх операцій файлової системи (зазвичай називається Журналом), і розділ даних. Для кращої продуктивності та надійності log-розділ може бути розташований всередині розділу даних (поведінка за замовчуванням) або навіть на окремому диску.
Найпростішою командою для створення файлової системи XFS є mkfs.xfs TARGET
, де TARGET
– це розділ, у якому потрібно створити файлову систему. Наприклад: mkfs.xfs /dev/sda1
.
Як і mke2fs
, mkfs.xfs
підтримує ряд параметрів командного рядка. Ось деякі з найпоширеніших.
-b size=VALUE
-
Встановлює розмір блоку у файловій системі в байтах на розмір, зазначений у
VALUE
. Значення за замовчуванням — 4096 байт (4 КБ), мінімальне — 512, а максимальне — 65 536 (64 КБ). -m crc=VALUE
-
Параметри, які починаються з
-m
, є параметрами метаданих. Вмикає (якщоVALUE
дорівнює1
) або вимикає (якщоVALUE
є0
) використання перевірок CRC32c для перевірки цілісності всіх метаданих на диску. Це дозволяє краще виявляти помилки та відновлювати їх після збоїв, пов’язаних із апаратними проблемами, тому ця опція ввімкнена за замовчуванням. Вплив цієї перевірки на продуктивність має бути мінімальним, тому зазвичай немає причин відключати її. -m uuid=VALUE
-
Встановлює UUID розділу у значення, зазначене як VALUE. Пам’ятайте, що UUID — це 32-символьні (128 біт) числа в шістнадцятковій системі, визначені групами по 8, 4, 4, 4 і 12 цифр, розділених тире, наприклад
1E83E3A3-3AE9-4AAC-BF7E-29DFFECD36C0
. -f
-
Примусове створення файлової системи на цільовому пристрої, навіть якщо на ньому виявлена файлова система.
-l logdev=DEVICE
-
Помістить розділ журналу файлової системи на вказаний пристрій, а не всередині розділу даних.
-l size=VALUE
-
Встановить розмір розділу журналу на розмір, зазначений у
VALUE
. Розмір можна вказати в байтах, а також використовувати такі суфікси, якm
абоg
.-l size=10m
, наприклад, обмежить log-розділ 10 мегабайтами. -q
-
Тихий режим. У цьому режимі
mkfs.xfs
не виводитиме параметри файлової системи, що створюється. -L LABEL
-
Встановлює мітку файлової системи, яка може містити не більше 12 символів.
-N
-
Подібно до параметра
-n
mke2fs
, змуситьmkfs.xfs
виводити всі параметри для створення файлової системи, фактично не створюючи її.
Створення файлової системи FAT або VFAT
Файлова система FAT виникла з MS-DOS і протягом багатьох років отримала багато змін, що завершилися форматом FAT32, випущеним у 1996 році разом із Windows 95 OSR2.
VFAT — це розширення формату FAT16 з підтримкою довгих (до 255 символів) імен файлів. Обидві файлові системи обробляються однією і тією ж утилітою, mkfs.fat
. mkfs.vfat
- цє її псевдонім.
Файлова система FAT має важливі недоліки, які обмежують її використання на великих дисках. FAT16, наприклад, підтримує обсяги не більше ніж 4 ГБ і максимальний розмір файлу 2 ГБ. FAT32 збільшує розмір тома до 2 ПБ, а максимальний розмір файлу — до 4 Гб. Через це файлові системи FAT сьогодні частіше використовуються на невеликих флеш-накопичувачах або картах пам’яті (розміром до 2 ГБ) або застарілих пристроях і ОС, які не підтримують більш просунуті файлові системи.
Найпростішою командою для створення файлової системи FAT є mkfs.fat TARGET
, де TARGET
– це розділ, у якому потрібно створити файлову систему. Наприклад: mkfs.fat /dev/sdc1
.
Як і інші утиліти, mkfs.fat
підтримує ряд параметрів командного рядка. Нижче наведено найважливіші з них. Повний список та опис кожної опції можна прочитати в посібнику до утиліти за допомогою команди man mkfs.fat
.
-c
-
Перед створенням файлової системи перевіряє цільовий пристрій на наявність пошкоджених блоків.
-C FILENAME BLOCK_COUNT
-
Створить файл, зазначений у
FILENAME
, а потім створить файлову систему FAT всередині нього, фактично створюючи порожній «образ диску», який пізніше можна записати на пристрій за допомогою утиліти, наприклад,dd
, або змонтувати як loopback-пристрій. При використанні цієї опції кількість блоків у файловій системі (BLOCK_COUNT
) має бути вказана після імені пристрою. -F SIZE
-
Вибирає розмір Таблиці розміщення файлів (FAT, File Allocation Table) між 12, 16 або 32, тобто між FAT12, FAT16 або FAT32. Якщо не вказано,
mkfs.fat
вибере відповідний параметр на основі розміру файлової системи. -n NAME
-
Встановлює мітку тома або ім’я для файлової системи. Може містити до 11 символів, а за замовчуванням не має імені.
-v
-
Детальний режим. Виводить набагато більше інформації, ніж зазвичай, корисно для налагодження.
Note
|
|
Створення файлової системи exFAT
exFAT — це файлова система, створена Microsoft у 2006 році, яка усуває одне з найважливіших обмежень FAT32: розмір файлу та диска. У exFAT максимальний розмір файлу становить 16 екзабайт (порівняно з 4 ГБ у FAT32), а максимальний розмір диска — 128 петабайт.
Оскільки вона добре підтримується всіма трьома основними операційними системами (Windows, Linux і mac OS), вона є хорошим вибором там, де необхідна взаємодія, наприклад, на флеш-накопичувачах великої ємності, картах пам’яті та зовнішніх дисках. Насправді це файлова система за замовчуванням, як визначено SD Association, для карт пам’яті SDXC розміром більше 32 ГБ.
Утилітою за замовчуванням для створення файлових систем exFAT є mkfs.exfat
, що є посиланням на mkexfatfs
. Найпростішою командою є mkfs.exfat TARGET
, де TARGET
– це розділ, у якому потрібно створити файлову систему. Наприклад: mkfs.exfat /dev/sdb2
.
На відміну від інших утиліт, які розглядаються в цьому уроці, mkfs.exfat
має дуже мало параметрів командного рядка. Це:
-i VOL_ID
-
Встановлює для ідентифікатора тома значення, зазначене в
VOL_ID
. Це 32-розрядне шістнадцяткове число. Якщо не визначено, встановлюється ідентифікатор на основі поточного часу. -n NAME
-
Встановлює мітку або назву тому. Може містити до 15 символів, і за замовчуванням не має імені.
-p SECTOR
-
Вказує перший сектор першого розділу на диску. Це необов’язкове значення, а значення за замовчуванням дорівнює нулю.
-s SECTORS
-
Визначає кількість фізичних секторів на кластер розподілу. Це має бути ступінь двійки, наприклад 1, 2, 4, 8 тощо.
Знайомство з файловою системою Btrfs
Btrfs (офіційно B-Tree Filesystem, вимовляється як “Butter FS”, “Better FS” або навіть “Butterfuss”, ваш вибір) - це файлова система, яка розробляється з 2007 року спеціально для Linux корпорацією Oracle та іншими компаніями, серед яких Fujitsu, Red Hat, Intel та SUSE та інші.
Існує багато функцій, які роблять Btrfs привабливою в сучасних системах, де поширені великі обсяги сховищ даних. Серед них — підтримка кількох пристроїв (включаючи чергування, дзеркальне відображення та чергування+дзеркалювання, як у налаштуванні RAID), прозоре стиснення, оптимізацію SSD, інкрементальне резервне копіювання, знімки ОС (SnapShot), онлайн-дефрагментацію, автономні перевірки, підтримку підтомів (з квотами), дедуплікацію та багато іншого.
Оскільки це файлова система з механізмом копіювання при записуванні, вона дуже стійка до збоїв. Крім того, Btrfs проста у використанні і добре підтримується багатьма дистрибутивами Linux. І деякі з них, наприклад SUSE, використовують її як файлову систему за замовчуванням.
Note
|
У традиційній файловій системі, коли ви хочете перезаписати частину файлу, нові дані розміщуються безпосередньо поверх старих даних, які вони замінюють. У файловій системі з копіюванням при записуванні нові дані записуються до вільного місця на диску, потім вихідні метадані файлу оновлюються, щоб посилатися на нові дані, і лише тоді вивільняють місце старі дані, оскільки вони більше не потрібні. Це зменшує ймовірність втрати даних у разі збою, оскільки старі дані відкидаються лише після того, як файлова система буде абсолютно впевнена, що вони більше не потрібні, і нові дані будуть на місці. |
Створення файлової системи Btrfs
Утиліта mkfs.btrfs
використовується для створення файлової системи Btrfs. Використання команди без будь-яких параметрів створює файлову систему Btrfs на даному пристрої, наприклад:
# mkfs.btrfs /dev/sdb1
Tip
|
Якщо у вашій системі немає утиліти |
Ви можете використовувати -L
, щоб встановити мітку (або назву) для вашої файлової системи. Мітки Btrfs можуть мати до 256 символів, за винятком символу нового рядка:
# mkfs.btrfs /dev/sdb1 -L "New Disk"
Tip
|
Введіть мітку в лапках (як вище), якщо вона містить пробіли. |
Зверніть увагу на цю особливість Btrfs: ви можете передати багато пристроїв команді mkfs.btrfs
. Передача більш ніж одного пристрою охопить файлову систему на всіх пристроях, як при налаштуванні RAID або LVM. Щоб зазначити, як метадані будуть розподілятися в дисковому масиві, використовуйте параметр -m
. Дійсними параметрами є raid0
, raid1
, raid5
, raid6
, raid10
, single
та dup
.
Наприклад, щоб створити файлову систему, що охоплює /dev/sdb1
і /dev/sdc1
, об’єднавши два розділи в один великий розділ, використовуйте:
# mkfs.btrfs -d single -m single /dev/sdb /dev/sdc
Warning
|
Файлові системи, що охоплюють декілька розділів, як у прикладі вище, можуть спочатку здаватися прийнятними, але програють з точки зору безпеки даних. Збій на одному диску масиву означає певну втрату даних. Ризик підвищується при збільшенні кількості дисків, які використовуються, оскільки з’являється більше можливих точок відмови. |
Керування підтомами
Підтоми схожі на файлові системи всередині файлових систем. Думайте про них як про каталог, який можна змонтувати як (і розглядати як) окрему файлову систему. Підтоми спрощують організацію та адміністрування системи, оскільки кожен з них може мати окремі квоти або правила моментальних знімків.
Note
|
Підтоми не є розділами. Розділ виділяє фіксований простір на диску. Це може призвести до проблем у подальшому, наприклад, в одному розділі не вистачає місця, коли в іншому його залишається багато. З підтомами це не так, оскільки вони «надають» вільний простір зі своєї кореневої файлової системи та розширюються за потреби. |
Припустимо, у вас є файлова система Btrfs, змонтована у /mnt/disk
, і ви хочете створити всередині неї підтом для зберігання ваших резервних копій. Назвемо його BKP
:
# btrfs subvolume create /mnt/disk/BKP
Далі ми виведемо вміст файлової системи /mnt/disk
. Ви побачите, що у нас є новий каталог, названий як наш підтом.
$ ls -lh /mnt/disk/ total 0 drwxr-xr-x 1 root root 0 jul 13 17:35 BKP drwxrwxr-x 1 carol carol 988 jul 13 17:30 Images
Note
|
Доступ до підтомів також можна отримати, як і до будь-якого іншого каталогу. |
Ми можемо перевірити, чи активний підтом, за допомогою команди:
# btrfs subvolume show /mnt/disk/BKP/ Name: BKP UUID: e90a1afe-69fa-da4f-9764-3384f66fa32e Parent UUID: - Received UUID: - Creation time: 2019-07-13 17:35:40 -0300 Subvolume ID: 260 Generation: 23 Gen at creation: 22 Parent ID: 5 Top level ID: 5 Flags: - Snapshot(s):
Ви можете змонтувати підтом до /mnt/BKP
, передавши параметр -t btrfs -o subvol=NAME
команді mount
:
# mount -t btrfs -o subvol=BKP /dev/sdb1 /mnt/bkp
Note
|
Параметр |
Робота зі знімками
Знімки схожі на підтоми, але попередньо заповнені вмістом тому, з якого було зроблено знімок.
Після створення знімок і вихідний том мають абсолютно однаковий вміст. Але з цього моменту вони розходяться. Зміни, внесені в оригінальний том (наприклад, файли, додані, перейменовані чи видалені) не відображатимуться на знімку, і навпаки.
Майте на увазі, що знімок не дублює файли і спочатку майже не займає місця на диску. Він просто дублює дерево файлової системи, вказуючи на вихідні дані.
Команда для створення моментального знімку така ж, як і для створення підтому, просто додайте параметр snapshot
після btrfs subvolume
. Наведена нижче команда створить знімок файлової системи Btrfs, змонтованої у каталозі /mnt/disk
у /mnt/disk/snap
:
# btrfs subvolume snapshot /mnt/disk /mnt/disk/snap
Тепер уявіть, що у вас є такий вміст у /mnt/disk
:
$ ls -lh total 2,8M -rw-rw-r-- 1 carol carol 109K jul 10 16:22 Galaxy_Note_10.png -rw-rw-r-- 1 carol carol 484K jul 5 15:01 geminoid2.jpg -rw-rw-r-- 1 carol carol 429K jul 5 14:52 geminoid.jpg -rw-rw-r-- 1 carol carol 467K jul 2 11:48 LG-G8S-ThinQ-Mirror-White.jpg -rw-rw-r-- 1 carol carol 654K jul 2 11:39 LG-G8S-ThinQ-Range.jpg -rw-rw-r-- 1 carol carol 94K jul 2 15:43 Mimoji_Comparativo.jpg -rw-rw-r-- 1 carol carol 112K jul 10 16:20 Note10Plus.jpg drwx------ 1 carol carol 366 jul 13 17:56 snap -rw-rw-r-- 1 carol carol 118K jul 11 16:36 Twitter_Down_20190711.jpg -rw-rw-r-- 1 carol carol 324K jul 2 15:22 Xiaomi_Mimoji.png
Зверніть увагу на каталог знімків, який містить знімок. Тепер давайте видалимо деякі файли та перевіримо вміст каталогу:
$ rm LG-G8S-ThinQ-* $ ls -lh total 1,7M -rw-rw-r-- 1 carol carol 109K jul 10 16:22 Galaxy_Note_10.png -rw-rw-r-- 1 carol carol 484K jul 5 15:01 geminoid2.jpg -rw-rw-r-- 1 carol carol 429K jul 5 14:52 geminoid.jpg -rw-rw-r-- 1 carol carol 94K jul 2 15:43 Mimoji_Comparativo.jpg -rw-rw-r-- 1 carol carol 112K jul 10 16:20 Note10Plus.jpg drwx------ 1 carol carol 366 jul 13 17:56 snap -rw-rw-r-- 1 carol carol 118K jul 11 16:36 Twitter_Down_20190711.jpg -rw-rw-r-- 1 carol carol 324K jul 2 15:22 Xiaomi_Mimoji.png
Однак, якщо ви перевірите каталог знімків, видалені вами файли все ще залишаються там і їх можна відновити за необхідності.
$ ls -lh snap/ total 2,8M -rw-rw-r-- 1 carol carol 109K jul 10 16:22 Galaxy_Note_10.png -rw-rw-r-- 1 carol carol 484K jul 5 15:01 geminoid2.jpg -rw-rw-r-- 1 carol carol 429K jul 5 14:52 geminoid.jpg -rw-rw-r-- 1 carol carol 467K jul 2 11:48 LG-G8S-ThinQ-Mirror-White.jpg -rw-rw-r-- 1 carol carol 654K jul 2 11:39 LG-G8S-ThinQ-Range.jpg -rw-rw-r-- 1 carol carol 94K jul 2 15:43 Mimoji_Comparativo.jpg -rw-rw-r-- 1 carol carol 112K jul 10 16:20 Note10Plus.jpg -rw-rw-r-- 1 carol carol 118K jul 11 16:36 Twitter_Down_20190711.jpg -rw-rw-r-- 1 carol carol 324K jul 2 15:22 Xiaomi_Mimoji.png
Також можна створювати знімки лише для читання. Вони працюють так само, як знімки для запису, з тією різницею, що вміст знімка не можна змінити, він «заморожений» у часі. Просто додайте параметр -r
під час створення знімка:
# btrfs subvolume snapshot -r /mnt/disk /mnt/disk/snap
Кілька слів про стиснення
Btrfs підтримує прозоре стиснення файлів за трьома різними алгоритмами, доступними для користувача. Це робиться автоматично для кожного файлу, якщо файлова система змонтована за допомогою параметра -o compress
. Алгоритми достатньо інтелектуальні, щоб виявляти файли, які не стискаються, і не намагатимуться стиснути їх, заощаджуючи системні ресурси. Таким чином, в одному каталозі ви можете мати разом стиснені та нестиснені файли. Алгоритмом стиснення за замовчуванням є ZLIB, але доступні LZO (швидший, гірший коефіцієнт стиснення) або ZSTD (швидший, ніж ZLIB у порівнянні стиснення) з кількома рівнями стиснення (див. відповідну ціль щодо параметрів монтування).
Керування розділами за допомогою GNU Parted
GNU Parted — це дуже потужний редактор розділів (звідси й назва), який можна використовувати для створення, видалення, переміщення, зміни розміру, відновлення та копіювання розділів. Він може працювати як з дисками GPT, так і з MBR і покривати майже всі ваші потреби в управлінні дисками.
Існує багато графічних інтерфейсів, які значно полегшують роботу з parted
, такі як GParted для робочих середовищ на основі GNOME та KDE Partition Manager для робочих столів KDE. Однак вам слід навчитися використовувати parted
у командному рядку, оскільки в налаштуваннях сервера ви ніколи не можете розраховувати на доступність графічного середовища робочого столу.
Warning
|
На відміну від |
Найпростіший спосіб розпочати використання parted – це ввести parted DEVICE
, де DEVICE
– це пристрій, яким ви хочете керувати (parted /dev/sdb
). Програма запускає інтерактивний інтерфейс командного рядка, такий як fdisk
і gdisk
, із запитом (parted)
для введення команд.
# parted /dev/sdb GNU Parted 3.2 Using /dev/sdb Welcome to GNU Parted! Type 'help' to view a list of commands. (parted)
Warning
|
Будьте обережні! Якщо ви не вкажете пристрій, |
Вибір дисків
Щоб переключитися на інший диск, ніж той, який зазначено в командному рядку, ви можете використовувати команду select
, а потім додати назву пристрою:
(parted) select /dev/sdb Using /dev/sdb
Отримання інформації
Команду print
можна використовувати для отримання додаткової інформації про певний розділ або навіть про всі блокові пристрої (диски), підключені до вашої системи.
Щоб отримати інформацію про поточний вибраний розділ, просто введіть print
:
(parted) print Model: ATA CT120BX500SSD1 (scsi) Disk /dev/sda: 120GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 2097kB 116GB 116GB primary ext4 2 116GB 120GB 4295MB primary linux-swap(v1)
Ви можете отримати список усіх блочних пристроїв, підключених до вашої системи за допомогою print devices
:
(parted) print devices /dev/sdb (1999MB) /dev/sda (120GB) /dev/sdc (320GB) /dev/mapper/cryptswap (4294MB)
Щоб отримати інформацію про всі підключені пристрої одночасно, ви можете використовувати print all
. Якщо ви хочете дізнатися, скільки вільного місця є в кожному з них, ви можете використовувати print free
:
(parted) print free Model: ATA CT120BX500SSD1 (scsi) Disk /dev/sda: 120GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 32.3kB 2097kB 2065kB Free Space 1 2097kB 116GB 116GB primary ext4 116GB 116GB 512B Free Space 2 116GB 120GB 4295MB primary linux-swap(v1) 120GB 120GB 2098kB Free Space
Створення таблиці розділів на порожньому диску
Щоб створити таблицю розділів на порожньому диску, скористайтеся командою mklabel
, а потім введіть тип таблиці розділів, який ви хочете використовувати.
Існує багато типів таблиць розділів, що підтримуються, але основні типи, які ви повинні знати, це msdos
, який використовується тут для посилання на таблицю розділів MBR, і gpt
для посилання на таблицю розділів GPT. Щоб створити таблицю розділів MBR, введіть:
(parted) mklabel msdos
Щоб створити таблицю розділів GPT, скористайтеся наступною командою:
(parted) mklabel gpt
Створення розділу
Для створення розділу використовується команда mkpart
з використанням синтаксису mkpart PARTTYPE FSTYPE START END
, де:
PARTTYPE
-
Це тип розділу, який може бути
основним
,логічним
аборозширеним
, якщо використовується таблиця розділів MBR. FSTYPE
-
Вказує, яка файлова система буде використовуватися в цьому розділі. Зауважте, що
parted
не створить файлову систему. Він просто встановлює прапор на розділі, який повідомляє ОС, які дані від нього очікувати. START
-
Вказує точне місце на пристрої, де починається розділ. Ви можете використовувати різні одиниці вимірювання, щоб вказати це місце.
2s
може використовуватися для позначення другого сектора диска, тоді як1m
відноситься до початку першого мегабайта диска. Іншими поширеними одиницями єB
(байти) та%
(відсоток диска). END
-
Вказує кінець розділу. Зауважте, що це не розмір розділу, це місце на диску, де він закінчується. Наприклад, якщо ви вкажете
100m
, розділ закінчиться через 100 МБ після початку диска. Ви можете використовувати ті ж одиниці вимірювання, що й у параметріSTART
.
Отже, команда:
(parted) mkpart primary ext4 1m 100m
Створює основний розділ типу ext4
, починаючи з першого мегабайта диска і закінчуючи після 100-го мегабайта.
Видалення розділу
Щоб видалити розділ, скористайтеся командою rm
і номером розділу, який ви можете відобразити за допомогою команди print
. Отже, rm 2
видалить другий розділ на поточному вибраному диску.
Відновлення розділів
parted
може відновити видалений розділ. Вважайте, що у вас є така структура розділів:
Number Start End Size File system Name Flags 1 1049kB 99.6MB 98.6MB ext4 primary 2 99.6MB 200MB 100MB ext4 primary 3 200MB 300MB 99.6MB ext4 primary
Випадково ви видалили розділ 2 за допомогою rm 2
. Щоб відновити його, ви можете використати команду rescue
із синтаксисом rescue START END
, де START
є приблизним розташуванням, де розпочався розділ, а END
- приблизним місцем, де він закінчився.
parted
просканує диск у пошуках розділів і запропонує відновити всі знайдені. У наведеному вище прикладі розділ 2
почався з 99,6 МБ і закінчився на 200 МБ. Отже, ви можете використовувати наступну команду для відновлення розділу:
(parted) rescue 90m 210m Information: A ext4 primary partition was found at 99.6MB -> 200MB. Do you want to add it to the partition table? Yes/No/Cancel? y
Це відновить розділ і його вміст. Зауважте, що rescue
може відновлювати лише розділи, на яких встановлена файлова система. Порожніх розділів не виявлено.
Зміна розміру розділів ext2/3/4
parted
можна використовувати для зміни розміру розділів, щоб зробити їх більшими або меншими. Однак є деякі застереження:
-
Під час зміни розміру розділ повинен бути невикористаним і відмонтованим.
-
Вам потрібно достатньо вільного місця після розділу, щоб збільшити його до потрібного розміру.
У команді resizepart
вказується номер розділу та місце його закінчення. Наприклад, якщо у вас є така таблиця розділів:
Number Start End Size File system Name Flags 1 1049kB 99.6MB 98.6MB ext4 primary 2 99.6MB 200MB 100MB ext4 3 200MB 300MB 99.6MB ext4 primary
Спроба збільшити розділ 1
за допомогою resizepart
призведе до повідомлення про помилку, оскільки з новим розміром розділ 1
буде перекриватися розділом 2
. Однак розмір розділу 3
можна змінити, оскільки після нього залишається вільне місце, що можна перевірити за допомогою команди print free
:
(parted) print free Model: Kingston DataTraveler 2.0 (scsi) Disk /dev/sdb: 1999MB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 17.4kB 1049kB 1031kB Free Space 1 1049kB 99.6MB 98.6MB ext4 primary 2 99.6MB 200MB 100MB ext4 3 200MB 300MB 99.6MB ext4 primary 300MB 1999MB 1699MB Free Space
Отже, ви можете використовувати таку команду, щоб змінити розмір розділу 3 до 350 МБ:
(parted) resizepart 3 350m (parted) print Model: Kingston DataTraveler 2.0 (scsi) Disk /dev/sdb: 1999MB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1049kB 99.6MB 98.6MB ext4 primary 2 99.6MB 200MB 100MB ext4 3 200MB 350MB 150MB ext4 primary
Пам’ятайте, що нова точка завершення вказується від початку диска. Отже, оскільки розділ 3
закінчився на рівні 300 МБ, тепер він повинен закінчитися на рівні 350 МБ.
Але зміна розміру розділу – це лише одна частина завдання. Вам також потрібно змінити розмір файлової системи, яка в ній знаходиться. Для файлових систем ext2/3/4 це робиться за допомогою команди resize2fs
. У наведеному вище прикладі розділ 3 все ще показує старий
розмір під час монтування:
$ df -h /dev/sdb3 Filesystem Size Used Avail Use% Mounted on /dev/sdb3 88M 1.6M 80M 2% /media/carol/part3
Для налаштування розміру можна використовувати команду resize2fs DEVICE SIZE
, де DEVICE
відповідає розділу, розмір якого потрібно змінити, а SIZE
– це новий розмір. Якщо ви не вкажете параметр розміру, він використовуватиме весь доступний простір розділу. Перед зміною розміру радимо відмонтувати розділ.
У наведеному вище прикладі:
$ sudo resize2fs /dev/sdb3 resize2fs 1.44.6 (5-Mar-2019) Resizing the filesystem on /dev/sdb3 to 146212 (1k) blocks. The filesystem on /dev/sdb3 is now 146212 (1k) blocks long. $ df -h /dev/sdb3 Filesystem Size Used Avail Use% Mounted on /dev/sdb3 135M 1.6M 123M 2% /media/carol/part3
Щоб зменшити розділ, процес потрібно виконати в зворотному порядку. Спочатку ви змінюєте розмір файлової системи до нового, меншого розміру, потім змінюєте розмір самого розділу за допомогою parted
.
Warning
|
Зверніть увагу при зменшенні розділів. Якщо порядок параметрів буде неправильний, ви втратите дані! |
У нашому прикладі:
# resize2fs /dev/sdb3 88m resize2fs 1.44.6 (5-Mar-2019) Resizing the filesystem on /dev/sdb3 to 90112 (1k) blocks. The filesystem on /dev/sdb3 is now 90112 (1k) blocks long. # parted /dev/sdb3 (parted) resizepart 3 300m Warning: Shrinking a partition can cause data loss, are you sure you want to continue? Yes/No? y (parted) print Model: Kingston DataTraveler 2.0 (scsi) Disk /dev/sdb: 1999MB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1049kB 99.6MB 98.6MB ext4 primary 2 99.6MB 200MB 100MB ext4 3 200MB 300MB 99.7MB ext4 primary
Tip
|
Замість того, щоб вказувати новий розмір, ви можете використовувати параметр |
Створення розділів підкачки
У Linux система може переміщувати сторінки пам’яті з ОЗП на диск за потреби, зберігаючи їх в окремому просторі, зазвичай реалізованому як окремий розділ на диску. Він називається розділ підкачки або просто swap. Цей розділ має бути певного типу та налаштований за допомогою належної утиліти (mkswap
), перш ніж його можна буде використовувати.
Щоб створити розділ підкачки за допомогою fdisk
або gdisk
, просто дійте так, як ніби ви створюєте звичайний розділ, як пояснювалося раніше. Єдина відмінність полягає в тому, що вам потрібно буде змінити тип розділу на Linux swap.
-
У
fdisk
використовуйте командуt
. Виберіть розділ, який ви хочете використовувати, і змініть його тип на82
. Запишіть зміни на диск і вийдіть за допомогоюw
. -
У
gdisk
командою для зміни типу розділу є такожt
, але код8200
. Запишіть зміни на диск і вийдіть за допомогоюw
.
Якщо ви використовуєте parted
, розділ слід ідентифікувати як розділ підкачки під час створення, просто використовуйте linux-swap
як тип файлової системи. Наприклад, команда для створення розділу підкачки розміром 500 МБ, починаючи з 300 МБ на диску наступна:
(parted) mkpart primary linux-swap 301m 800m
Коли розділ створено та правильно ідентифіковано, просто скористайтеся mkswap
, а потім напишіть пристрій, що представляє розділ, який ви хочете використовувати, наприклад:
# mkswap /dev/sda2
Щоб увімкнути swap на цьому розділі, використовуйте swapon
, а потім зазначте ім’я пристрою:
# swapon /dev/sda2
Аналогічно, swapoff
, за яким слідує назва пристрою, вимкне підкачку на цьому пристрої.
Linux також підтримує використання файлів підкачки замість розділів. Просто створіть порожній файл потрібного розміру за допомогою dd
, а потім використайте mkswap
і swapon
з цим файлом як цільовим.
Наступні команди створять файл розміром 1 ГБ під назвою myswap
у поточному каталозі, заповнений нулями, а потім налаштують та увімкнуть його як файл підкачки.
Створіть файл підкачки:
$ dd if=/dev/zero of=myswap bs=1M count=1024 1024+0 records in 1024+0 records out 1073741824 bytes (1.1 GB, 1.0 GiB) copied, 7.49254 s, 143 MB/s
if=
– це вхідний файл, джерело даних, які будуть записані до файлу. У даному випадку це пристрій /dev/zero
, який надає стільки символів NULL
, скільки потрібно. of=
є вихідним файлом, який буде створено. bs=
– це розмір блоків даних, тут зазначений у мегабайтах, а count=
– кількість блоків, які мають бути записані у вихід. 1024 блоків по 1 МБ кожен дорівнює 1 Гб.
# mkswap myswap Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes) no label, UUID=49c53bc4-c4b1-4a8b-a613-8f42cb275b2b # swapon myswap
Використовуючи наведені вище команди, цей файл підкачки буде використовуватися лише під час поточного системного сеансу. Якщо комп’ютер перезавантажити, файл все ще буде доступним, але не завантажиться автоматично. Ви можете автоматизувати це, додавши новий файл підкачки до /etc/fstab
, що ми обговоримо в наступному уроці.
Tip
|
|
Вправи до посібника
-
Яку схему розподілу слід використовувати, щоб розділити жорсткий диск 3 ТБ на три розділи по 1 Гб? Чому?
-
Як ми можемо дізнатися, скільки вільного місця на диску за допомогою
gdisk
? -
Якою була б команда для створення файлової системи ext3, попередньої перевірки на наявність пошкоджених блоків з міткою
MyDisk
та випадковим UUID на пристрої/dev/sdc1
? -
Яка команда для створення розділу ext4 розміром 300 МБ, починаючи з 500 МБ на диску, при використанні
parted
? -
Уявіть, що у вас є 2 розділи, один на
/dev/sda1
, а інший на/dev/sda2
, обидва розміром 20 ГБ. Як ви можете використовувати їх на одній файловій системі Btrfs таким чином, щоб вміст одного розділу автоматично відображався на іншому, як у налаштуваннях RAID1? Наскільки великою буде файлова система?
Дослідницькі вправи
-
Розглянемо диск ємністю 2 ГБ з таблицею розділів MBR і такою структурою:
Disk /dev/sdb: 1.9 GiB, 1998631936 bytes, 3903578 sectors Disk model: DataTraveler 2.0 Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x31a83a48 Device Boot Start End Sectors Size Id Type /dev/sdb1 2048 1050623 1048576 512M 83 Linux /dev/sdb3 2099200 3147775 1048576 512M 83 Linux
Чи можете ви створити на ньому розділ розміром 600 МБ? Чому?
-
На диску за адресою
/dev/sdc
ми маємо перший розділ розміром 1 ГБ, що містить близько 256 МБ файлів. Використовуючиparted
, як ви можете зменшити його, щоб у ньому було достатньо місця для файлів? -
Уявіть, що у вас є диск за адресою
/dev/sdb
, і ви хочете створити розділ підкачки на 1 ГБ на його початку. Отже, використовуючиparted
, ви створюєте розділ зmkpart primary linux-swap 0 1024M
. Потім ви увімкнете swap на цьому розділі за допомогоюswapon /dev/sdb1
, але отримаєте таке повідомлення про помилку:swapon: /dev/sdb1: read swap header failed
Що пішло не так?
-
Під час цього уроку ви пробували деякі команди в
parted
, але помилково видалили 3-й розділ на жорсткому диску. Ви знаєте, що він був розташований після розділу UEFI на 250 МБ і розділу підкачки на 4 ГБ і мав розмір 10 ГБ. Яку команду можна використати для його відновлення? -
Уявіть, що у вас є невикористаний розділ на 4 ГБ на
/dev/sda3
. Якою буде послідовність операцій, щоб перетворити його в активний розділ підкачки, використовуючиfdisk
?
Підсумки
На цьому уроці ви дізналися:
-
Як створити таблицю розділів MBR на диску за допомогою
fdisk
та як використовувати її для створення та видалення розділів. -
Як створити таблицю розділів MBR на диску за допомогою
gdisk
і як використовувати її для створення та видалення розділів. -
Як створити розділи ext2, ext3, ext4, XFS, VFAT і exFAT.
-
Як використовувати
parted
для створення, видалення та відновлення розділів на дисках MBR і GPT. -
Як використовувати resize для розділів ext2, ext3, ext4 і Brts.
-
Як створити, налаштувати та активувати розділи підкачки та файли підкачки.
На цьому уроці обговорювалися такі команди:
-
fdisk
-
gdisk
-
mkfs.ext2
,mkfs.ext3
,mkfs.ext4
,mkfs.xfs
,mkfs.vfat
andmkfs.exfat
-
parted
-
btrfs
-
mkswap
-
swapon
таswapoff
Відповіді на вправи до посібника
-
Яку схему розподілу слід використовувати, щоб розділити жорсткий диск 3 ТБ на три розділи по 1 Гб? Чому?
GPT, оскільки MBR підтримує жорсткі диски розміром не більше ніж 2 ТБ.
-
Як ми можемо дізнатися, скільки вільного місця на диску за допомогою
gdisk
?Використовуйте
p
(виведення інформації). Загальний вільний простір буде показано як останній рядок інформації перед самою таблицею розділів. -
Якою була б команда для створення файлової системи ext3, попередньої перевірки на наявність пошкоджених блоків з міткою
MyDisk
та випадковим UUID на пристрої/dev/sdc1
?Команда буде мати вигляд
mkfs.ext3 -c -L MyDisk -U random /dev/sdc1
. Крім того,mke2fs -t ext3
також можна використовувати замістьmkfs.ext3
-
Яка команда для створення розділу ext4 розміром 300 МБ, починаючи з 500 МБ на диску, при використанні
parted
?Використовуйте
mkpart primary ext4 500m 800m
. Пам’ятайте, що вам доведеться створити файлову систему за допомогоюmkfs.ext4
, оскільки parted цього не робить. -
Уявіть, що у вас є 2 розділи, один на
/dev/sda1
, а інший на/dev/sda2
, обидва розміром 20 ГБ. Як ви можете використовувати їх на одній файловій системі Btrfs таким чином, щоб вміст одного розділу автоматично відображався на іншому, як у налаштуваннях RAID1? Наскільки великою буде файлова система?Використовуйте
mkfs.btrfs /dev/sda1 /dev/sdb1 -m raid1
. Отримана файлова система матиме розмір 20 ГБ, оскільки один розділ діє просто як дзеркало іншого.
Відповіді до дослідницьких вправ
-
Розглянемо диск ємністю 2 ГБ з таблицею розділів MBR і такою структурою:
Disk /dev/sdb: 1.9 GiB, 1998631936 bytes, 3903578 sectors Disk model: DataTraveler 2.0 Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x31a83a48 Device Boot Start End Sectors Size Id Type /dev/sdb1 2048 1050623 1048576 512M 83 Linux /dev/sdb3 2099200 3147775 1048576 512M 83 Linux
Чи можете ви створити на ньому розділ розміром 600 МБ? Чому?
Не можна, тому що не вистачає суміжного простору. Першою підказкою того, що щось «вимкнено», є список пристроїв: у вас є
/dev/sdb1
і/dev/sdb3
, але немає/dev/sdb2
. Значить, чогось не вистачає.Потім потрібно подивитися, де закінчується один розділ і починається інший. Перший розділ закінчується в секторі
1050623
, а розділ 2 починається з2099200
. Це «розрив» у 1048577 секторів. При 512 байтах на сектор це 536 871 424 байта. Якщо розділити на 1024, то отримаємо 524,288 кілобайт. Ще раз поділіть на 1024 і отримаєте… 512 МБ. Це розмір «розриву».Якщо на диску 2 ГБ, то після розділу 3 ми маємо щонайбільше 512 МБ. Навіть якщо у нас є в цілому близько 1 ГБ нерозподіленого простору, найбільший суміжний блок становить 512 МБ. Отже, немає місця для розділу 600 МБ.
-
На диску за адресою
/dev/sdc
ми маємо перший розділ розміром 1 ГБ, що містить близько 256 МБ файлів. Використовуючиparted
, як ви можете зменшити його, щоб у ньому було достатньо місця для файлів?Це багатокрокова операція. Спочатку ви повинні зменшити файлову систему за допомогою
resize2fs
. Замість того, щоб безпосередньо вказувати новий розмір, ви можете використовувати параметр-M
, щоб він був просто «достатньо великим». Отже:resize2fs -M /dev/sdc1
.Потім ви змінюєте розмір самого розділу за допомогою parted, використовуючи
resizepart
. Оскільки це перший розділ, ми можемо припустити, що він починається з нуля і закінчується на 241 МБ. Отже, командаresizepart 1 241M
. -
Уявіть, що у вас є диск за адресою
/dev/sdb
, і ви хочете створити розділ підкачки на 1 ГБ на його початку. Отже, використовуючиparted
, ви створюєте розділ зmkpart primary linux-swap 0 1024M
. Потім ви увімкнете swap на цьому розділі за допомогоюswapon /dev/sdb1
, але отримаєте таке повідомлення про помилку:swapon: /dev/sdb1: read swap header failed
Що пішло не так?
Ви створили розділ правильного типу (
linux-swap
), але пам’ятайте, щоmkpart
не створює файлову систему. Ви забули налаштувати розділ як простір підкачки спочатку за допомогоюmkswap
, перш ніж використовувати його. -
Під час цього уроку ви пробували деякі команди в
parted
, але помилково видалили 3-й розділ на жорсткому диску. Ви знаєте, що він був розташований після розділу UEFI на 250 МБ і розділу підкачки на 4 ГБ і мав розмір 10 ГБ. Яку команду можна використати для його відновлення?Не панікуйте, у вас є вся інформація, необхідна для відновлення розділу, просто скористайтеся командою
rescue
і виконайте обчислення. До цього у вас було 250 МБ + 4,096 МБ (4*1024), тому початкова точка має бути близько 4346 МБ. Плюс розмір 10,240 МБ (10*1024), він повинен закінчитися на рівні 14,586 МБ. Отже, слід виконатиrescue 4346m 14586m
. Можливо, вам знадобиться трохи «піти на поступки» для виправлення ситуації, почати створення розділу трохи раніше і вказати закінчення його трохи далі, залежно від геометрії вашого диска. -
Уявіть, що у вас є невикористаний розділ на 4 ГБ на
/dev/sda3
. Якою буде послідовність операцій, щоб перетворити його в активний розділ підкачки, використовуючиfdisk
?Спочатку змініть тип розділу на “Linux Swap” (82), запишіть зміни на диск і вийдіть. Потім скористайтеся
mkswap
, щоб налаштувати розділ як область підкачки. Потім використайтеswapon
, щоб увімкнути його.