Для будущей системы Debian Linux в 2018 году, какие части файловой системы должны быть отделены?

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

Моя текущая настройка – RAID1 LVM с одним устройством (я изначально намеревался настроить зеркалирование системного диска, но никогда не удосужился это сделать) в разделе на SSD. Этот RAID1, в свою очередь, содержит корневую файловую систему ext4 с разделами / opt и / usr и / var, разделенными на хранилище ZFS. В частности, / boot является частью корневой файловой системы, и я загружаюсь, используя MBR старого стиля, используя GRUB 2.

Идея состоит в том, чтобы иметь большую корневую файловую систему с файловой системой * nix-esque (вероятно, ext4 для начала) и выделять части, которые имеют особые потребности.

Я хотел бы оставить открытой возможность перехода к загрузке UEFI позже, возможно, включая миграцию на GPT, без необходимости что-либо менять. (Резервное копирование / перераспределение / восстановление – это другое дело, и, вероятно, оно потребуется для перехода с MBR на GPT, но я, вероятно, снова получу новый диск, прежде чем это станет проблемой.)

Я также хотел бы иметь возможность позже перенести корневую файловую систему на ZFS или, по крайней мере, настроить dm-verity для проверки целостности данных. (Да, это будет немного головной болью, чтобы получить все об этом правильно, особенно полу-на месте. Это будет вопросом на более поздний день; их единственное рассмотрение этого вопроса с точки зрения более поздних вариантов. )

Кажется, все это делает очевидным случай разделения / , /boot и FAT32 /boot/efi (последний из которых может быть изначально пустым), в дополнение к тем, которые я уже отделил от корневой файловой системы. Но есть ли другие?

  • Какие системные файловые системы, поддерживаемые постоянным хранилищем, должны быть отделены от корневой файловой системы и почему в современной установке Linux?
  • Нужно ли какой-либо из этих файловых систем переходить в определенные местоположения разделов при использовании MBR, или они расположены произвольно? Например, нужно ли / boot / efi перейти на первый основной раздел или что-то в этом роде?

Как минимум, отдельные управляемые пакетами каталоги от неуправляемых каталогов.

По моему опыту неуправляемые каталоги обычно (но не обязательно исключительно) /opt , /usr/local и, конечно, /home .

(Я также отмечаю файлы в управляемых каталогах пакетов, которые я отредактировал вручную, поэтому мне будет легко их идентифицировать в будущем).

Во-первых, это в значительной степени основано на мнении. Если вы спросите дюжину разных людей, вы, вероятно, получите как минимум 3-4 разных ответа.

Тем не менее, вот мое мнение по этому поводу:

  • Держите /home отдельно от / . Основное рассуждение здесь в основном совпадает с прежним. Это усложняет для ваших пользователей случайное использование всего пространства на / , и значительно упрощает хранение пользовательских данных, если вам необходимо переустановить. Кроме того, он изолирует одну из самых больших частей большинства систем от остальной части системы, что может быть особенно полезно для управления резервными копиями.
  • Храните /tmp и /var/tmp отдельно от / . Обе эти области используются для временного хранения, и величина оттока, которую это может вызвать в корневой файловой системе, может оказать значительное долгосрочное влияние на ее производительность. Кроме того, данные гарантированно являются переходными с относительно коротким сроком службы. Это означает, что вы не должны создавать их резервные копии (это просто пустая трата места) и, вероятно, не будете копировать их при переходе на новый диск. Тем не менее, /tmp обычно должен быть экземпляром tmpfs наши дни, и /var/tmp обычно тоже должен быть, если вы можете разместить все, что может быть в оперативной памяти.
  • Немного спорным и намного более агрессивны, но изолировать ваши глобальные каталоги кэша из файловых систем, они обычно были бы на. Каноническим примером является /var/cache , но могут быть и другие, в зависимости от вашей конкретной системы (хотя я думаю, что /var/cache покрывает это полностью в Debian). Это имеет много тех же преимуществ, что и изоляция /tmp , /var/tmp и /home , но также дает вам четкую область, которую вам не нужно резервировать (это кеш, если приложение ломается потому что он не может найти данные там, это плохо написанное приложение), и, следовательно, также не нужно копировать при переходе на новый диск.
  • Храните ваши наборы данных отдельно от / . Это намеренно абстрактно, но включает в себя такие вещи, как страницы и данные для любых веб-сайтов, которые размещает система, внутреннее хранилище для любой базы данных или служб каталогов, которые система предоставляет, и другие подобные вещи. Изоляция этих данных дает два больших преимущества. Во-первых, он обеспечивает те же общие преимущества, что и /home отдельно от / делает. Во-вторых, это, по крайней мере, частично отделяет производительность корневой файловой системы от производительности ваших томов данных. Это также позволяет вам переводить эти наборы данных в различные конфигурации хранилища без непосредственного влияния на остальную часть системы, что может означать разницу между периодом обслуживания в режиме онлайн (когда обслуживание только ухудшается, но не полностью отключено) и автономным режимом один.
  • Храните одноразовые данные, которые можно легко восстановить или восстановить, отдельно от других данных. Примеры include в себя общедоступные данные из Интернета (git-репозитории, индексы репозиториев пакетов, ISO-образы и т. Д.) И вещи, которые настолько тривиальны, что вы не будете их резервировать. Это главным образом для упрощения планирования резервного копирования, но также может помочь при переключении на новый диск (а именно, вам не нужно копировать большую часть или даже все эти данные, потому что вы можете просто восстановить / восстановить их по мере необходимости).
  • Храните структуры каталогов, не управляемые вашим менеджером пакетов, отдельно от тех, которые есть. Это не обязательно, но может значительно упростить как обновления, так и переустановку. Технически это включает в себя материал, который я упомянул выше, но в данном случае я более конкретно ссылаюсь на /opt и /usr/local . Обратите внимание, что /opt может содержать данные, управляемые вашим менеджером пакетов (например, Dropbox и Google Chrome устанавливаются там).