Изменить размер раздела на VPS без потери данных

Изменить размер раздела на VPS без потери данных

У меня небольшой VPS-сервер с 40 ГБ дискового пространства. Я купил дополнительные 40 ГБ и теперь хочу расширить /размер раздела.

Мои разделы выглядят так:

Размер разделов

/dev/vda1есть /bootи /dev/vda5есть мой /. Мой провайдер VPS добавил /dev/vda2. Я не уверен, правильно ли это, но я пробовал удалить /dev/vda5и /dev/vda2создать /dev/vda5, но у меня нет такой возможности, я могу только повторно создать устройства с ID 2-4, а не 5, как у меня /.

решение1

Есть утилита growpart, которая безопасно увеличит разделы, как только ваш провайдер расширит ваш виртуальный диск. Единственная хитрость в вашем случае заключается в том, что они без необходимости создали расширенный/логический раздел DOS, когда он не был нужен. Таким образом, вам придется изменить размер расширенного раздела, а затем логического, который он содержит.

sudo apt install cloud-guest-utils

Утилита growpartпринимает номер диска и раздела как отдельные аргументы, поэтому для изменения размера /dev/vda2вам нужно написать:

sudo growpart /dev/vda 2

Сначала измените размер расширенного раздела /dev/vda2, затем измените размер /dev/vda5таким же образом.

sudo growpart /dev/vda 2
sudo growpart /dev/vda 5

Теперь вы сможете изменить размер файловой системы. Если это ext4, то resize2fs /dev/vda5будет работать. Для XFS используйте xfs_growfs /.

решение2

Из вашего fdiskвывода следует, что у вас действительно есть диск объемом 80 ГБ с 40 ГБрасширенныйраздел ( /dev/vda2), который содержит внутри 40 ГБлогичныйраздел /dev/vda5, который содержит вашу /файловую систему. Расширенный раздел на самом деле не содержит никаких файлов, это просто "контейнер" для логических разделов, который позволяет преодолеть ограничение в 4 раздела, о котором я упоминаю ниже. Затем есть 40 ГБ нераспределенного пространства, которое fdiskникак не отображается.

У вас может быть несколько вариантов использования этого нераспределенного пространства. Я предполагаю, что вы не используете LVM, потому что если вы это сделаете, процедура будет совершенно иной, поскольку LVM имеет собственные инструменты для изменения размера томов. Однако ваш fdiskвывод не указывает на какое-либо упоминание раздела LVM.

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

Первый вариант — иметь два раздела по 40 ГБ и разумно разделить файлы между ними. Если вы, например, храните много больших файлов в /home, вы можете использовать новый раздел для /home, а все остальное /homeостанется на старом разделе. Для этого:

  1. используйте fdiskдля создания другого основного раздела (вероятно, он будет отображаться как /dev/vda3!) в этом нераспределенном пространстве и отформатируйте его как новую файловую систему Linux с помощью mkfs /dev/vda3. Всего может быть максимум 4 основных или расширенных раздела, причем не более одного из них будет расширенным, поэтому есть место для другого раздела. Это не рекомендуемая схема раздела, где основной раздел идетпослерасширенный раздел, но, скорее всего, он будет работать.

  2. переименуйте свой /homeкаталог в /old_home(убедитесь, что он в данный момент не используется, поэтому сделайте это от имени root, не входя в систему ни один обычный пользователь) и создайте новый /homeкаталог с тем же владельцем и разрешениями, что и у старого.

  3. смонтируйте /dev/vda3файловую систему /homeс помощью команды: mount /dev/vda3 /home. Если это удалось, вам следует отредактировать /etc/fstab, чтобы новая файловая система правильно автоматически монтировалась при загрузке системы. Вероятно, /etc/fstabв настоящее время у вас есть две строки для vda1 и vda5, что-то вроде этого (я придумываю это сейчас, у вас может быть по-другому):

    /dev/vda5 / ext4 defaults 0 1

    /dev/vda1 /boot ext4 defaults 0 2

    Добавьте аналогичную строку для vda3, например:

    /dev/vda3 /home ext4 defaults 0 2

    (если в вашем файле есть что-то другое вместо "ext4" или "defaults", просто скопируйте эти параметры в новую строку). Теперь запишите любой файл в новый /homeкаталог и перезагрузите систему. Если после перезагрузки файл, который вы поместили в /homeкаталог, все еще там, значит, /homeон был правильно смонтирован при загрузке.

  4. Теперь вы можете переместить все из пустого каталога /old_homeв , а затем удалить его ./home/old_home

Я считаю этот метод обычно самым безопасным и простым для себя и использовал его много раз. Однако у него есть недостаток в том, что на самом деле у него 2x40 ГБ вместо одного 80 ГБ пространства, что иногда может быть хорошо, иногда плохо - например, когда вы хотите избежать случайного заполнения системного диска пользовательскими файлами, лучше иметь /homeотдельный раздел.

Так что еще один вариант — использовать GNUрассталисьпрограмма для изменения размера разделов vda2 и vda5 (сначала vda2, а затем vda5, так как первый содержит последний) до 80 ГБ. partedразработана специально для изменения разделов без потери данных, чего fdiskгарантировать не могу. Я уверен, partedчто она есть в репозитории Debian, поэтому вы можете установить ее с помощью apt.

После изменения размера раздела используйте команду resize2fs /dev/vda5для расширения /файловой системы до полных 80 ГБ.

решение3

Обычно в этом случае вы используете fdisk /dev/vda.

  • Запишите начальные сектора разделов 2 и 5.
  • Удалить раздел 5.
  • Удалить раздел 2.
  • Пересоздайте раздел 2 со старым начальным сектором и новым концом (значение по умолчанию). Эторасширенныйраздел.
  • Пересоздайте раздел 5 со старым начальным сектором и новым концом (значение по умолчанию). Этологичныйраздел.

После того, как таблица будет записана и активирована (например, после перезагрузки), вам все равно придется расширить файловую систему с /dev/vda5помощью resize2fsили с помощью чего-то другого, подходящего для файловой системы на этом разделе.

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

Связанный контент