Разметка дисков в Linux
При переустановке системы, установке нового дистрибутива или просто реорганизации файловых систем мы часто имеем дело с жесткими дисками. Часто нужно добавлять, удалять или изменять размер разделов, управлять их флагами или конвертировать файловые системы. Для этого в Linux есть достаточно различных инструментов как с графическим интерфейсом, так и консольных. Разобраться в графическом интерфейсе Gparted, я думаю вам не составит труда, но в некоторых случаях бывает нужна разбивка жесткого диска на разделы linux в терминале, без доступа к Х серверу, а это может стать серьезной проблемой.
В этой статье мы разберем как выполнять основные операции, которые мы привыкли делать в Gparted, такие как разметка диска в linux, удаление и создание раздела linux, в терминале с помощью утилиты parted. Сначала рассмотрим саму команду parted.
Синтаксис parted
Синтаксис parted выглядит следующим образом:
$ parted [опции] устройство [команда]
В квадратных скобках указанны необязательные аргументы.
опции указывают как будет работать программа, например, интерактивный режим работы или скриптовый, или нужно просто вывести справку
устройство - жесткий диск с которым будет работать программа.
команда - действие которое нужно выполнить над жестким диском.
Опции и команды parted
У parted всего несколько опций и огромное количество команд.
Вот опции:
- -h - вывести справку о программе
- -v - вывести версию программы
- -s - скриптовый режим, программа работает без запросов к пользователю
- -i - интерактивный режим, пользователь вводит команды в интерактивном режиме. По умолчанию программа работает в этом режиме.
Команд не очень много, но даже помнить их все вовсе не обязательно. Рассмотрим только те, которые нам пригодятся в сегодняшних примерах:
- help команда - помощь по выбранной команде
- mkpart тип раздела файловая система начало конец - создание раздела linux с файловой системой начиная с позиции начало заканчивая конец, два последних параметра задаются в мегабайтах по умолчанию
- mktable тип - создать таблицу разделов
- print - отобразить таблицу разделов
- quit - выйти
- resize раздел конец - изменить размер раздела
- rm раздел - удалить раздел
- select раздел - установить раздел как текущий
- set раздел флаг состояние - установить флаг для раздела. Состояние может быть on (включен) или off(выключен)
Раньше поддерживались также опции работы с файловой системой mkfs, check, mkpartfs но начиная с версии 2.4 они были удаленны.
Я понимаю что сейчас разметка дисков в linux для вас непонятна и расплывчата, но с примерами станет намного яснее. Больше не будем о теории, перейдем к примерам.
Разметка диска в Linux
Во всем, что вы изучаете нужна практика и работа с жесткими дисками linux не исключение. Но практиковаться на реальном диске, рискуя повредить файловую систему не совсем правильно, а создавать виртуальную машину для таких целей слишком непрактично. Но есть решение. В Linux все есть файлами, и жесткий диск в том числе тоже представлен в виде файла. Из этого выплывает интересная возможность. Мы можем использовать обычный файл вместо жесткого диска для своих экспериментов.
Создадим себе тестовый полигон командой:
dd if=/dev/zero of=/disk.iso count=2000M
Таким образом, мы получим файл размером 2000 мегабайт, заполненный нулями, с которым можно спокойно работать.
Запустим parted, передав ему вместо устройства наш файл чтобы дальше была выполнена разбивка жесткого диска linux:
parted /disk.iso
Программа запустится в интерактивном режиме и вы сможете выполнять нужные команды:
GNU Parted 3.1
Using /disk.iso
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted)
Сначала попытаемся посмотреть список разделов на устройстве:
Disk /home/sergiy/disk.iso: 1992MB
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags:
Он пуст потому что даже нет таблицы разделов. Пока ее нет, разметка дисков в Linux не может быть выполнена, нам предстоит ее создать. Для этого воспользуемся командой mktable:
mktable gpt
Будем мы создали таблицу разделов типа gpt, но можно выбрать одну из этих: aix, amiga, bsd, dvh, gpt_sync_mbr, gpt, mac, msdos, pc98, sun, loop
Теперь давайте создадим новый раздел с файловой системой ext2 размером 100 мегабайт. Для этого есть команда mkpart, как вы помните ей нужно передать три параметра: тип раздела, файловую систему и координаты. Тип раздела может быть: primary, logical, extended (первичный, логический и расширенный).
В gpt можно создавать нужное количество первичных разделов и не задумываться об их типе. Это все было создано для MBR, в этой таблице есть ограничение на количество первичных разделов - только четыре. Поэтому приходилось создавать три первичных и один расширенный, в который вкладывались уже сколько нужно логических.
Ну так вот, создаем первичный:
mkpart primary ext2 0 400М
Поскольку это первый раздел, начинаем мы с нуля, а заканчиваем нужным нам размером - 400 мегабайт.
Смотрим список разделов еще раз:
print
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 17,4kB 400MB 400MB primary
Создадим еще несколько разделов, например для коня системы и для домашней папки:
mkpart primary ext2 400 1000M
mkpart primary ext2 1000M -0M
Параметр -0 означает вести отсчет от конца раздела, таким образом будет занято все доступное пространство под третий раздел. Смотрим что получилось:
Number Start End Size File system Name Flags
1 17,4kB 400MB 400MB primary
2 400MB 1000MB 600MB primary
3 1000MB 1992MB 992MB primary
Работа с диском в Linux осуществляется по их номерах. Давайте уменьшим последний раздел и создадим после него еще один:
resize 3 1600
А теперь создаем:
mkpart primary ext4 1600M -0M
Смотрим:
print
Number Start End Size File system Name Flags
1 17,4kB 400MB 400MB primary
2 400MB 1000MB 600MB primary
3 1000MB 1600MB 600MB primary
4 1600MB 1992MB 392MB primary
Удалим только что созданный четвертый раздел:
rm 1
Зададим метки для существующих разделов с помощью команды name:
name 1 boot
name 2 root
name 3 home
Сделаем первый раздел загрузочным командой set:
set 1 boot on
Можно устанавливать следующие флаги: boot, root, swap, hidden, raid, lvm, lba, hp-service, palo, prep, msftres, bios_grub, atvrecv, diag, legacy_boot, type, irst
Вот в принципе и все. Разбивка диска на разделы Linux завершена. Работу с файловыми системами мы в этой статье опустим, так как для этого используются уже другие команды, которые мы рассмотрим в одной из следующих статей.
Выводы
Выводы теперь вы знаете достаточно информации чтобы не потеряться в случае, если окажетесь без доступа к графическому интерфейсу и вам понадобится разбивка жесткого диска linux.
Комментариев 0