Linux (debian 9) - корневой раздел заполнен: переместить каталоги с / на внешний диск

Linux (debian 9) - корневой раздел заполнен: переместить каталоги с / на внешний диск

У меня система Debian 9 установлена ​​на одном устройстве хранения данных.

Размер устройства чуть меньше 4 ГБ, на нем есть один раздел, на который записан образ Debian.

Я не могу удалить это устройство. Оно является частью встроенной системы и подключено постоянно.

Однако я могу добавить в систему SD-карту, поскольку предусмотрен запасной слот для расширения пользователем, если потребуется большая файловая система.

Я намерен создать один раздел на SD-карте, вероятно, объемом 16 ГБ.

Я хотел бы узнать, какие каталоги безопасно перемещать на SD-карту? И как это сделать?

Например, многие системы Linux перемещают папку /home на отдельное физическое устройство или в отдельный раздел.

Итак, я знаю, что могу создать каталог /home в корне файловой системы SD. Чего я не знаю, так это как сообщить системе Debian, что /home перемещен? Предположительно, мне нужно скопировать все содержимое /home в исходной файловой системе на новую карту SD, прежде чем сообщать Debian, что он перемещен?

Я предполагаю, что я также могу переместить папки /tmp и /var.

Есть ли что-то еще, что я могу безопасно переместить? Я полагаю, что мне не следует перемещать /bin, /sbin или /root ни при каких обстоятельствах?

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

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

решение1

Тот факт, что /homeэто не строго существенная часть ОС, делает это более осуществимым, чем, скажем, перемещение /usrна новое устройство. Если вы перемещаете существенную иерархию ОС, вам нужно будет завершить работу и загрузиться с какой-то другой rescueили Live CD или файловой системы USB. Это может быть где угодно от сложного до невозможного на вашем встроенном устройстве.

Но поскольку вы переезжаете /home, мы можем действовать осторожно.

Сначала загрузитесь в однопользовательском режиме. Остановите ненужные службы, особенно все, что может записывать в файлы в /home. Убедитесь, что вы pwdне находитесь в /home, а затем получите права root:

$ cd /tmp
$ sudo -i

Затем:

1) Вставьте SD-карту и создайте раздел. После того, как вы создали раздел, создайте на нем файловую систему, которая будет содержать вашу новую /homeиерархию. Предположим, что раздел SD-карты — это устройство/dev/sdc1

# mkfs.ext4 /dev/sdc1

2) Смонтируйте новую файловую систему на /mnt:

# mount /dev/sdc1 /mnt

3)КОПИЯ(не перемещайте) или rsyncвашу /homeиерархию на SD-карту (обратите внимание на косые черты). После rsyncing отмонтируйте SD-карту:

# rsync -HAXav /home/ /mnt/
# umount /mnt

4) Сделайте резервную копию/etc/fstab

# cp -p /etc/fstab /etc/fstab.safety

5) Определите файловую систему SD-карты UUIDи отредактируйте ее /etc/fstab, чтобы добавить запись для монтирования UUID. /homeВы можете найти ее , UUIDиспользуя blkid:

# blkid /dev/sdc1
/dev/sdc1: UUID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" TYPE="ext4"

Учитывая вышеприведенный вывод, ваша новая fstabстрока будет выглядеть так:

UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /home ext4 defaults 0 0

Это пример Ubuntu, поскольку у меня нет системы Debian под рукой. Вам придется заменить часть xxxxx... на правильный UUID файловой системы карты SD, а также заменить ext4на тип файловой системы, который вы использовали при mkfsсоздании карты SD (и подтвердили в выводе blkid).

6) Переименуйте старый /homeкаталог:

# mv /home /home.old

7) Создайте новую точку монтирования для SD-карты:

# mkdir /home

На этом этапе вы сможете вручную смонтировать SD-карту:

# mount /home

и посмотрите содержимое под /home, которое идентично содержимому под /home.old. Внимательно проверьте содержимое, включая владельца и разрешения домашних каталогов и .sshкаталогов, иначе вы не сможете войти удаленно, когда система перезагрузится. Если возможно, запустите службу sshd и протестируйте удаленный вход в непривилегированную учетную запись.

Если все выглядит хорошо, перезагрузитесь. Когда система снова загрузится, проверьте доступное место в смонтированных файловых системах:

# df

У вас не будет свободного места в /пока, потому что /home.oldвсе еще висит вокруг. Вы должны увидеть много свободного места в /home:

# du -h /
# du -h /home

Как только вы убедитесь, что все выглядит хорошо, вы можете избавиться от /home.old:

# cd /; rm -rf home.old

Вы rm /etc/fstab.safetyтоже можете, но, скорее всего, он достаточно мал, и не будет ничего плохого в том, чтобы его оставить.

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