Слияние разделов и сохранение данных

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

$ 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.

2
задан 6 February 2019 в 01:22

1 ответ

Предположение Вас на самом деле имеет свободное пространство на /opt, и это - файловая система, которая поддерживает, по крайней мере, офлайн уменьшение, самая безопасная ставка была бы:

  1. Так как Ваш корневой каталог идет /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
  2. Удостоверьтесь, что можно войти в систему как корень или новый пользователь теперь. Сделайте это от другого терминала, не выходите из системы своя другая сессия, пока Вы не вошли в систему как корень, или непосредственно или через sudo от нового пользователя (важный для восстановления, например, при случайном повреждении sshd),
  3. Войдите в систему вторая корневая сессия на всякий случай. Вы используете это, если Вы так или иначе повреждаете свой первый.
  4. Наконец выйдите из системы свой сеанс пользователя и любые другие, которых Вы имеете.
  5. Размонтирование /opt. Если umount /opt дает используемую ошибку, использовать fuser -vm /opt (или безотносительно) для наблюдения, что получает доступ к нему. Вы, возможно, также должны были бы остановить некоторые сервисы или найти, что другая сессия выходит из системы. (Если Вы не можете добраться / решили размонтироваться, перейдите к шагу 10 для прерывания процесса).
  6. Уменьшение объема часто требует fsck, и это - хорошая идея так или иначе. Необходимо будет, вероятно, добавить -f вызвать fsck на чистом устройстве. Например, fsck -f /dev/mapper/VGNAME-home. Это может требовать времени. (Если fsck перестал работать, остановиться. Проверьте на опечатки. Если это действительно перестало работать, что-то неправильно.)
  7. Уменьшите объем: lvreduce -Ay -r -L 100G VGNAME/home. -r говорит этому уменьшать файловую систему сначала. 100G новый размер; выберите то, что Вы хотели бы (конечно, не может быть меньшим, чем объем данных по /opt). Это делает, берут долго, в зависимости от того, сколько данных находится на объеме. Если это перестало работать из-за не поддерживаемый, это не собирается работать. Продолжите к 9 прерываться. (Если это приводит жалобу к сбою, что Вы попросили, чтобы это уменьшилось к очень, выбрало больший размер и повторило команду).
  8. Увеличьте rootfs: lvextend -Ay -r -L 200G VGNAME/root. Снова 200G размер и может быть тем, в чем Вы нуждаетесь (до всего свободного места). -r говорит этому изменять размер файловой системы также (после увеличения LV); обычно это может быть сделано онлайн. Если это не может... хорошо, Ваша система все еще будет доступна, но действительно необходимо найти способ использовать живой CD.
  9. Независимо от того, если это работало, mount /opt.
  10. Удостоверьтесь, что можно войти в систему как пользователь снова. Не выходите из системы свои корневые сессии, пока Вы не подтвердили, что можете. При использовании мультиплексирования соединения SSH использовать ssh -o ControlPath=none user@host для проверки кэшируемое соединение не дурачит Вас.
  11. Запустите любые сервисы, которые необходимо было остановить для размонтирования /opt. По крайней мере, если Вы хотите их выполнение.
  12. Измените ssh, задерживающий на не разрешение корневого входа в систему, если это - опция, Вы выбираете, и способ, которым это было прежде. Удостоверьтесь, что можно войти в систему новая сессия перед тем, чтобы выходить из системы. Всегда делайте это при изменении sshd конфигурации. Или при создании нового пользователя удалите его с, например, deluser --remove-home tmpuser

PS: Вы не должны расти / занимать все свободное место. Можно всегда расширять его снова, если Вам нужно к — часто лучше оставить некоторое пространство в PV освобожденным.

4
ответ дан 2 December 2019 в 02:12

Другие вопросы по тегам:

Похожие вопросы: