
У меня небольшой 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
останется на старом разделе. Для этого:
используйте
fdisk
для создания другого основного раздела (вероятно, он будет отображаться как/dev/vda3
!) в этом нераспределенном пространстве и отформатируйте его как новую файловую систему Linux с помощьюmkfs /dev/vda3
. Всего может быть максимум 4 основных или расширенных раздела, причем не более одного из них будет расширенным, поэтому есть место для другого раздела. Это не рекомендуемая схема раздела, где основной раздел идетпослерасширенный раздел, но, скорее всего, он будет работать.переименуйте свой
/home
каталог в/old_home
(убедитесь, что он в данный момент не используется, поэтому сделайте это от имени root, не входя в систему ни один обычный пользователь) и создайте новый/home
каталог с тем же владельцем и разрешениями, что и у старого.смонтируйте
/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
он был правильно смонтирован при загрузке.Теперь вы можете переместить все из пустого каталога
/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
или с помощью чего-то другого, подходящего для файловой системы на этом разделе.
Прежде всего, убедитесь, что у вас есть хорошая резервная копия, прежде чем пытаться это сделать.