Переместить разделы жесткого диска linux

Обновлено: 06.07.2024

Оригинал: fdisk – Easy way to manage disk partitions in Linux
Автор: Magesh Maruthamuthu
Дата публикации: 28 января 2019 года
Перевод: А. Кривошей
Дата перевода: ноябрь 2019 г.

Жесткие диски можно разделить на один или несколько логических дисков, называемых разделами. Это разделение описано в таблице разделов (MBR или GPT) в секторе 0 диска.

Linux нужен как минимум один раздел, а именно для его корневой файловой системы, и мы не можем установить Linux на диск без разделов.

После создания раздел должен быть отформатирован в соответствующей файловой системе, прежде чем в него можно будет записывать файлы. Нам понадобится какая-нибудь утилита для выполнения этого действия в Linux.

Для этого в Linux доступно множество утилит. Мы писали о Parted Command в прошлом, и сегодня мы будем обсуждать fdisk. Команда fdisk является одним из лучших инструментов для управления разделами диска в Linux. Она поддерживает диски максимум 2 ТБ, и все предпочитают использовать fdisk.

Эта утилита используется большим количеством администраторов Linux, потому что мы практически не используем более 2 ТБ сегодня из-за LVM и SAN. Она используется в большей части инфраструктуры Linux по всему миру. Тем не менее, если вы хотите создать большие разделы, например, более 2 ТБ, вам нужно использовать команду Parted или команду cfdisk.

Создание разделов диска и файловых систем - одна из рутинных задач администратора Linux. Если вы работаете в большой компании, вам придется выполнять эту задачу несколько раз в день.

Как ядро Linux работает с жесткими дисками?

Как человек, мы можем легко понять разные вещи, но компьютер нуждается в правильном преобразовании имен, чтобы понять все и вся.

В Linux устройства расположены в разделе /dev, и ядро понимает жесткий диск в следующем формате.

/dev/hdX[a-z]: IDE-диск с именем hdX в Linux
/dev/sdX[a-z]: SCSI-диск с именем sdX в Linux
/dev/xdX[a-z]: XT-диск с именем xdX в Linux
/dev/vdX[a-z]: виртуальный жесткий диск с именем vdX в Linux
/dev/fdN: гибкий диск с именем fdN в Linux
/dev/scdN or /dev/srN: CD-ROM с именем /dev/scdN или /dev/srN в Linux

Что такое fdisk?

fdisk обозначает "fixed disk" или "format disk". Это утилита командной строки, которая позволяет пользователям выполнять различные действия с дисками. Она позволяет нам просматривать, создавать, изменять размеры, удалять, перемещать и копировать разделы.

Она понимает таблицы разделов MBR, Sun, SGI и BSD, не понимает таблицу разделов GUID (GPT) и не предназначена для больших разделов.

fdisk позволяет нам создать максимум четыре основных раздела на диск. Один из них может быть расширенным разделом, и он может содержать несколько логических разделов.

1-4 зарезервировано для четырех основных разделов, а логические разделы начинаются с 5.

Схема разметки жесткого диска

Как установить fdisk в Linux

Вам не нужно устанавливать fdisk в системе Linux, потому что он установлен по умолчанию как часть утилит core.

Как вывести список доступных дисков с помощью команды fdisk

Сначала мы должны узнать, какие диски были добавлены в систему, прежде чем выполнять какие-либо действия. Для просмотра списка всех доступных дисков в вашей системе выполните приведенную ниже команду. Она выведет возможные сведения о дисках, такие как имя диска, количество разделов на нем, размер диска, тип метки диска, идентификатор диска, идентификатор раздела и тип раздела.

Как вывести список определенных разделов диска с помощью команды fdisk

Если вы хотите увидеть определенный диск и его разделы, используйте следующий формат команды:

Как вывести список доступных действий для команды fdisk?

Если вы нажмете m в команде fdisk, вы увидите доступные действия.

Как вывести список типов разделов с помощью команды fdisk

Если вы нажмете l в команде fdisk, она покажет вам доступные типы разделов.

Как создать раздел на диске с помощью команды fdisk

Если вы хотите создать новый раздел, выполните следующие действия. В моем случае я собираюсь создать 4 раздела (3 основных и 1 расширенный) на диске /dev/sdc.

Поскольку он принимает значение из таблицы разделов, нажмите Enter для первого сектора. Введите размер, который вы хотите установить для раздела (мы можем добавить размер раздела, используя КБ, МБ, ГБ и ТБ) для последнего сектора.

Например, если вы хотите добавить раздел размером 1 ГБ, последним значением сектора должно быть + 1G. Как только вы создали 3 раздела, fdisk автоматически изменит тип раздела на расширенный по умолчанию. Если вы все еще хотите создать четвертый первичный раздел, тогда нажмите p вместо значения по умолчанию e.

Как создать расширенный раздел диска с помощью команды fdisk

Обратите внимание, что вы должны использовать все оставшееся пространство при создании расширенного раздела, потому что вы затем можете создать в нем несколько логических разделов.

Как просмотреть нераспределенное дисковое пространство с помощью команды fdisk

Как описано в предыдущем разделе, мы полностью создали 4 раздела (3 основных и 1 расширенный). Дисковое пространство расширенного раздела будет отображаться как неразмеченное, пока вы не создадите в нем логические разделы.

Используйте приведенную ниже команду для просмотра неразмеченного пространства для диска. В соответствии с приведенным ниже выводом у нас есть 7ГБ неразмеченного диска.

Как создать логический раздел с помощью команды fdisk

Выполните ту же процедуру, описанную выше, чтобы создать логический раздел после создания расширенного раздела. Здесь я создал логический раздел размером 1 ГБ с именем /dev/sdc5, вы можете убедиться в этом, проверив значение таблицы разделов.

Как удалить раздел с помощью команды fdisk

Если раздел больше не используется в системе, мы можем удалить его, используя следующие шаги.

Убедитесь, что вы будете вводить правильный номер раздела, чтобы удалить его. В данном случае я собираюсь удалить раздел /dev/sdc2.

Как отформатировать раздел или создать файловую систему на разделе

Файловая система контролирует, как хранятся и извлекаются данные через таблицы inode.

Без файловой системы система не может найти, где хранится информация на разделе. Файловая система может быть создана тремя способами. Здесь я собираюсь создать файловую систему в разделе /dev/sdc1.

Когда вы создаете файловую систему на этом разделе, это даст вам следующие важные вещи.

Как смонтировать раздел в Linux

После того, как вы создали раздел и файловую систему, нам нужно смонтировать раздел для использования.

Для этого нам нужно создать точку монтирования для монтирования раздела. Используйте команду mkdir для создания точки монтирования.

Для временного монтирования используйте приведенную ниже команду. Эта точка монтирования не сохранится после перезагрузки вашей системы.

Для постоянного монтирования добавьте информацию о разделе в файл fstab. Это можно сделать двумя способами: добавить имя устройства или значение UUID.

Постоянное монтирование с использованием имени устройства:

Постоянное монтирование с использованием значения UUID. Чтобы получить UUID раздела, используйте команду blkid.

propk.ru

Возникла необходимость не только изменить разделы в linux, сделать их меньше или больше, а так же и переместить их физически в начало диска, без потери данных.

Чтоб не допустить ошибок, мне так удобнее, хотелось бы сделать это с помощью графического интерфейса. Когда все наглядно видно на картинке, намного лучше воспринимается. Новичку в linux думаю тоже будет в разы понятнее видеть наглядную картину, при изменении разделов, чем воображать это все в голове.

Первое, что пришло в голову, поискать во всемирной паутине решение данного вопроса. Зачем придумывать велосипед когда он уже есть.

Решение с подробным описанием, я не нашел. По крайней мере, не было его в том представлении, как мне хотелось, с утверждением, что все получится.

Не потерять данные и не переустанавливать операционную систему, но при этом изменить позицию разделов и их размер.

Поэтому пришлось все сделать на свой страх и риск, с предварительным созданием резервной копии диска. Как сделать резервную копию диска в linux и windows подробно описано в этой статье.

Подготовка к изменению разделов в Linux

Было принято решение использовать программу GParted.

Для работы с разделами необходимо, чтоб изменяемый диск не использовался в работе. Для этого я решил использовать установочный образ операционной системы Linux Mint. Установочный образ этой системы не плохо работает в режиме Live, прямо с флешки или диска.

Та же в состав образа входит, необходимая нам, программа GParted.

Скачиваем установочный образ операционной системы Linnux Mint с официального сайта.

Записываем установочный образ на диск, если вы используете DVD диски.

Копируем образ, скаченного linux mint на наш загрузочный диск.

Меняем разделы в linux.

Подключаем наш загрузочный диск и загружаем, предварительно скаченный, Linux Mint, выбрав при старе первый пункт.

загрузка linux mint

После того как ваш компьютер загрузится, перед вами будет стандартный рабочий стол операционной системы. Единственное, что будет не так, это то, что она работает прямо со сменного носителя. С вашего диска или флешки.

В меню пуск выбираем нашу программу GParted и запускаем ее.

запуск программы GParted

После запуска программы, в правом верхнем углу выбираем наш диск, на котором будем вносить изменения.

Gparted выбираем диск и разделы в linux

Далее, выбрав нужный раздел и кликнув по нему правой кнопкой мыши выбираем пункт изменить размер или переместить.

выбираем раздел в linux и меняем его

Откроется окно в котором вы можете потянув ползунки влево или вправо, переместить раздел или изменить его размер.

изменяем раздел в linuх, его размер

По окончании проделанных действий нажимаем применить и в основном окне выбираем применить все изменения.

применяем все внесенные изменения

Когда все изменения будут применены, вы можете выключить компьютер, отсоединить или вынуть загрузочный носитель и включить компьютер в нормальном режиме.

Все ваши данные останутся на прежних местах, а разделы будут иметь тот размер и положение которые вы настроили.

Если есть, что добавить или поделится опытом и знаниями, оставляете комментарии.

Когда я не только задумался, но и был решительно готов снести винду и поставить Линукс, я начал изучать эту тему. По своей натуре, я не могу просто взять и снести, я не могу ставит коекак не зная как и что будет работать дальше. Первым делом я занялся прочтением доков по файловым системам.

Второй вопрос который меня волновал, это как разбить диск. С давних времен привык чтоб система стояла отдельно от файлов пользователя. Разница в организации системных файлов координально отличается в линуксе от виндовой. Если в винде у вас были диск С Д и тд. То в линуксе у вас есть системные папки /boot, /var, /root, /home и тд.

Для каждой из папок можно создать отдельный раздел. Каждую из папок можно перекинуть на другой винт. Каждую из папок можно перекинуть на флешку, тогда система будет неработоспособна без флешки. Вы вправе выбирать любой способ разбивки для своих нужд.

Так вот, перечитал я много доков и советов как лучше разбивать винт. Все писали что нужно создать 3 основые раздела /boot, /, /home. Для /boot и / советовали сделать ext2, для /home ext4.

По поводу размера разделов, для boot советовали 50-100 Мб. И 100Мб писали что с головой хватит! Ну я поверил. Нихрена ему не хватает уже. Под Debian 8 он кидает в этот раздел несколько ядер, чтоб была возможность отката. Лучше ставит 200-300 Мб для /boot.

Для корневого раздела я поставил 12Гб и как-то жил с ним когда была Linux Mint. Под Debian ему уже стало тесно. Очень тесно. Тк под минтом у меня был раздел swap куда скидывался весь времееный мусор. Под Debian с 4Гб оперативки, “советчики” предлагали не создавать раздел свопа вообще. Попробовал. Вроде классно, больше места на винте. Классно до первого зависания Chomium, который жрет озу как сумасшедший. Система дико подвисает и пытается куда-то скинуть мусор. Мышка тормозит, работать невозможно. У системы нет ограничений по количеству свободного места на системном разделе. Единственный способ в данном случае это переключиться в другой tty и под рутом вырубить этот сраный процесс.

Для таких случаев приходиться ставить swapspace.

Пусть у вас даже 8 гиг оперативки – все равно создайте раздел для swap. Тем самым вы защитите себя от тотальных зависаний. Раньше советовали создавать своп в два раза больше чем оперативки. Сейчас же можно создать и половину.

Для корневого раздела я бы поставил около 20Гб.

Если разделать их то, 10 для корневого, 10 для /var. Можно и /tmp в отдельный раздел вынести. Для надежности.

Но для обычного пользователя, для того чтобы пощупать живой линукс, можно поставит все на один раздел. Для ознакомления на несколько месяцев этого будет достаточно.

Кстати, если сначала вынесете /home на отдельный раздел, то при переустановке системы (любого Linux) раздел /home не будет отформатирован и информация на нем будет сохранена. На этапе установки нужно будет создать пользователя с тем именем, которое уже созданно в папке /home.

Если вы так же как и я начитались много инфы и разбили диск не так как надо, вам не хватает места на системном разделе, поджимает бут – не нужно отчаиваться! Можно перемонтировать все на другие разделы. Все очень просто.

Начать подготовку нужно с бекапа важной инфы с /home раздела на внешний винт. Дальше освободить нужно количество дискового пространства для создания нового раздела. Далее лучше загрузиться с Live-cd. Я нашел у себя какую-то старуб Убунту 12.10.

записал ее на флешку

К моему удивлению загрузилась нормально. Флешка китайская, винда с нее не хотела стартовать.

Далее в гостевой ОС запускаем Терминал.

Проверяем, подключился ли наш внутренний винт. Обычно все ок.


Перед началом работы нужно изменит размер текущего раздела. Моему глазу приятна программа gparted. Все наглядно поятно и будет привычна тем, кто пользовался Partition Magic, Acronis Disk Director и другими под виндой и не только.

Делаем Resize, Format unused → ext4, Apply.

Раздел готов Можно приступать к переносу инфы.

Создаем папку и монтируем в него корневой раздел нашего диска.

Создаем папку и монтируем в нее новосозданный раздел.

Копируем инфу с папки /var с коренвого раздела на новосозданный.

Находим UUID нашего нового раздела командой

Обратите внимание, для blkid нужны рут права. Редактируем файл /etc/fstab

Я просто клонировал уже существующую строку и изменил несколько параметров. Ctrl+K – вырезать
Ctrl+U – вставить
в nano.

Переименовываем старый var

Для сохранности перед перезагрузкой лучше размонтировать разделы

Если вы увидели экран входа – значит все отлично перенеслось и система теперь работает с файлами из другого раздела.

Можно смело удалять старый var

Точно таким же образом можно поступить с папкой /boot.

Не забывайте делать бекапы!

Данные действия можно проделать на рабочей локальной машине не перезагружая ОС. Только сразу после монтирования нового раздела нужно перейти в однопользовательский режим, в котором нет активности чтения/записи.

Такая задача возникает достаточно редко. Обычно, проще переустановить систему заново, чем переносить уже установленную версию на другой жёсткий диск или другой раздел. Но если у вас там есть важные программы, которые нежелательно удалять, или вы меняли настолько много настроек в системе, что её установка заново займёт намного больше времени, чем её перенос, то перенос будет предпочтительнее.

В этой статье мы рассмотрим, как перенести Linux на другой диск с помощью утилиты cp или архива tar. Второй способ интересен ещё тем, что вы можете создать резервную копию всей системы, а затем просто восстановить её при возникновении проблем.

Как перенести Linux на другой диск

Поскольку все данные, настройки и объекты операционной системы Linux - это файлы, то вы можете перенести свою операционную систему куда нужно, просто скопировав все нужные файлы. В Windows так де просто не получится, так, как там более сложная файловая система со сложными зависимостями.

1. Подготовка к переносу

Сначала рассмотрим, как использовать утилиту cp для переноса файлов операционной системы. В папку /mnt примонтируйте раздел, на котором будет располагаться новый Linux. Например, это /dev/sdb1:

sudo mount /dev/sdb1 /mnt

Теперь нужно рекурсивно скопировать все файлы из текущего корня в нашу папку /mnt. Лучше всего это делать, загрузившись с LiveCD диска, тогда точно все нужные данные будут сохранены. Но это не обязательно, вы можете делать перенос и работающей системы, только перед этим остановите все запущенные базы данных и сервисы по максимуму, чтобы они сохранили свои настройки и вы ничего не потеряли в новой версии системы. Например, если у вас запущена база данных MariaDB или MySQL, то её нужно остановить:

sudo systemctl stop mariadb

Аналогично сделайте со всеми другими не важными для операционной системы сервисами. Также очистите корзину, кэш пакетного менеджера и другие ненужные файлы, чтобы они не занимали место в архиве или новой системе.

2. Перенос Linux утилитой cp

Далее можно запускать сам перенос Linux на другой диск. Для этого запустите утилиту cp с опциями -a, -r и -x. Первая опция включает сохранение исходных прав и метаданных файла, вторая - рекурсивный обход файловой системы, а третья ограничивает рекурсию только текущей файловой системой:

sudo cp -rxa / /mnt/

Поскольку будут копироваться только файлы из текущей файловой системы, то если ваши каталоги /boot и /home находятся на других разделах, то их нужно скопировать отдельно:

sudo mkdir /mnt/
sudo cp -rxa /boot /mnt/boot/
sudo cp -rxa /home /mnt/home/

Если вам не нужна домашняя папка, то вы можете её не копировать.

3. Перенос Linux утилитой tar

Это альтернативный вариант переноса, если вы не хотите использовать cp, то можете применить tar. Чтобы сразу перенести файлы в другое расположение, нужно создать туннель, на одном конце которого данные будут запаковываться, а на другом - распаковываться:

sudo tar -cpv --one-file-system / | sudo tar -x -C /mnt

Опция -p - заставляет утилиту сохранять метаданные файлов при переносе. Опция --one-file-system указывает, что утилита будет брать файлы только из корневой файловой системы, поэтому все примонтированые файловые системы, как и в предыдущем варианте, будут пропущены. Поэтому каталоги /boot и /home вам придётся копировать аналогичной командой. Или же можно не использовать эту опцию и передавать всё, кроме ненужного:

sudo tar -cpv --exclude /mnt --exclude /dev --exclude /sys --exclude /proc --exclude /tmp --exclude /run / | sudo tar -x -C /mnt/

Также вы можете создать архив, а потом его куда-нибудь скопировать, чтобы иметь резервную копию системы:

sudo tar -cvpzf system.tar.gz --exclude system.tar.gz --one-file-system /

Вместо опции --one-file-system можно использовать опции --exclude, чтобы исключить ненужные каталоги, как в предыдущей команде. А для распаковки используйте команду:

sudo tar xvzf system.tar.gz -C /mnt

Здесь, /mnt - это каталог, в который нужно извлечь файлы архива.

4. Перенос с помощью rsync

Утилитой rsync многие не хотят пользоваться, но она очень удобная, работает достаточно быстро и отображает прогресс копирования. Для переноса с помощью rsync выполните:

Эта команда работает аналогично команде tar, копирует всё что есть в новое расположение. Опции -aAX включают сохранение всех метаданных файла, символических ссылок, владельцев, групп, и так далее.

5. Правка /etc/fstab

Теперь замените полученным UUID, значение этого параметра корневого раздела в /mnt/etc/fstab:

sudo vi /mnt/etc/fstab

6. Установка загрузчика

Далее нужно установить загрузчик Grub в новом Linux. Сначала примонтируйте в него папки /sys, /proc и /dev:

sudo mount --bind /sys /mnt/sys
sudo mount --bind /proc /mnt/proc
sudo mount --bind /dev /mnt/dev

Затем войдите в chroot окружение:

sudo chroot /mnt

Затем установите загрузчик на тот диск, на который вы переносили Linux, в моём случае это /dev/sdb:

sudo grub-install /dev/sdb

И осталось только создать конфигурационный файл для загрузчика:

В дистрибутивах, не основанных на Ubuntu, вместо update-grub2 можно использовать команду:

sudo grub2-mkconfig -o /boot/grub/grub.cfg

7. Перезагрузка

Выйдите из chroot-окружения командой:

Затем размотрируйте системные каталоги и ваш раздел:

sudo umount /mnt/sys
sudo umount /mnt/proc
sudo umount /mnt/dev
sudo umount /mnt

И перезагрузите компьютер. В BIOS вашего компьютера нужно выбрать диск, на который вы переносили Linux, в качестве первого источника для загрузки. После загрузки вы будете уже в новой операционной системе и всегда сможете вернуться в старую.

Выводы

В этой статье мы разобрали, как перенести Linux на другой жёсткий диск с помощью утилит tar, cp или rsync. Как видите, это достаточно просто и быстро. Ещё мы могли бы использовать утилиту dd, однако она копирует весь диск побайтово, поэтому будет работать дольше и её архивы будут занимать больше места на диске. Ещё можно воспользоваться инструментом Clonezilla.

Нет похожих записей


Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна.

Читайте также: