У меня есть старый сервер, который будет повторно ставиться целью. Часть этого означает перестраивать разделы. Текущий макет:
$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 558.7G 0 disk ├─sda1 8:1 0 243.5M 0 part /boot ├─sda2 8:2 0 1K 0 part └─sda5 8:5 0 558.5G 0 part ├─root 254:0 0 9.3G 0 lvm / ├─swap_1 254:1 0 21.8G 0 lvm [SWAP] └─home 254:2 0 527.4G 0 lvm /opt sr0 11:0 1 1024M 0 rom
Корневой раздел является очень небольшим, и я должен объединить его с домом для создания одного единственного раздела. Действительно ли возможно объединить их, не теряя данные? Я обеспокоен, что, если данные потеряны в любом разделе, я не смог входить в систему снова - у меня только есть ssh доступ. Машина находится в дата-центре, который я не могу получить, физический доступ к должен что-то идти не так, как надо. Я не могу только появиться в Живом CD и повторном разделении оттуда.
Я знаю, что существует много инструментов GUI, которые могут управлять разделами, мне нужно решение CLI.
Предположение Вас на самом деле имеет свободное пространство на /opt
, и это - файловая система, которая поддерживает, по крайней мере, офлайн уменьшение, самая безопасная ставка была бы:
/opt
, Вы не можете быть зарегистрированы к нему — или Вы не сможете размонтироваться /opt
. Один путь вокруг этого состоит в том, чтобы включить корневой вход в систему через ssh, с помощью открытых ключей. У меня нет поля Ubuntu передо мной, чтобы быть на 100% уверенным в шагах, но оно должно просто редактировать /etc/ssh/sshd_config
измениться PermitRootLogin
кому: prohibit-password
(или without-password
, для более старых версий OpenSSH). Затем вставьте свой открытый ключ /root/.ssh/authorized_keys
. Альтернатива (предложенный @bistoco) должна создать нового пользователя с корневым каталогом в корневой файловой системе, например: sudo mkdir /tmphome && sudo adduser --home /tmphome tmpuser && sudo adduser tmpuser sudo
/opt
. Если umount /opt
дает используемую ошибку, использовать fuser -vm /opt
(или безотносительно) для наблюдения, что получает доступ к нему. Вы, возможно, также должны были бы остановить некоторые сервисы или найти, что другая сессия выходит из системы. (Если Вы не можете добраться / решили размонтироваться, перейдите к шагу 10 для прерывания процесса).-f
вызвать fsck на чистом устройстве. Например, fsck -f /dev/mapper/VGNAME-home
. Это может требовать времени. (Если fsck перестал работать, остановиться. Проверьте на опечатки. Если это действительно перестало работать, что-то неправильно.)lvreduce -Ay -r -L 100G VGNAME/home
. -r
говорит этому уменьшать файловую систему сначала. 100G
новый размер; выберите то, что Вы хотели бы (конечно, не может быть меньшим, чем объем данных по /opt
). Это делает, берут долго, в зависимости от того, сколько данных находится на объеме. Если это перестало работать из-за не поддерживаемый, это не собирается работать. Продолжите к 9 прерываться. (Если это приводит жалобу к сбою, что Вы попросили, чтобы это уменьшилось к очень, выбрало больший размер и повторило команду).lvextend -Ay -r -L 200G VGNAME/root
. Снова 200G
размер и может быть тем, в чем Вы нуждаетесь (до всего свободного места). -r
говорит этому изменять размер файловой системы также (после увеличения LV); обычно это может быть сделано онлайн. Если это не может... хорошо, Ваша система все еще будет доступна, но действительно необходимо найти способ использовать живой CD.mount /opt
.ssh -o ControlPath=none user@host
для проверки кэшируемое соединение не дурачит Вас./opt
. По крайней мере, если Вы хотите их выполнение.deluser --remove-home tmpuser
PS: Вы не должны расти /
занимать все свободное место. Можно всегда расширять его снова, если Вам нужно к — часто лучше оставить некоторое пространство в PV освобожденным.