![Linux (debian 9) - корневой раздел заполнен: переместить каталоги с / на внешний диск](https://rvso.com/image/1711443/Linux%20(debian%209)%20-%20%D0%BA%D0%BE%D1%80%D0%BD%D0%B5%D0%B2%D0%BE%D0%B9%20%D1%80%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB%20%D0%B7%D0%B0%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%3A%20%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D0%B8%D1%82%D1%8C%20%D0%BA%D0%B0%D1%82%D0%B0%D0%BB%D0%BE%D0%B3%D0%B8%20%D1%81%20%2F%20%D0%BD%D0%B0%20%D0%B2%D0%BD%D0%B5%D1%88%D0%BD%D0%B8%D0%B9%20%D0%B4%D0%B8%D1%81%D0%BA.png)
У меня система 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-карту (обратите внимание на косые черты). После rsync
ing отмонтируйте 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
тоже можете, но, скорее всего, он достаточно мал, и не будет ничего плохого в том, чтобы его оставить.