У меня есть компьютер с SSD и HDD. Я использую Linux. Я хочу поместить все статические (очень редко меняющиеся) файлы на SSD, а остальные - на HDD. Чтобы добиться этого, я хотел бы иметь /boot, /usr, /lib, /bin, /etc, /opt на SSD, а остальные - /var, /tmp, /home на жестком диске. Однако я не хочу создавать отдельный раздел для каждого из них, я хочу, чтобы каждая группа находилась в своем собственном разделе. Я полагаю, что я мог бы подключить SDD к /, HDD к /mnt /hdd и symlink /home и т.д., Чтобы указать на /mnt /hdd /home и т.д.

Могут ли быть проблемы с такой настройкой? Например, программа пытается прочитать / записать в / var на ранних этапах процесса загрузки перед монтированием жесткого диска? Будет ли регистрация работать нормально, если / var (и / var / log) нет в корневом разделе?

Что было бы лучшим способом решить это?

2 ответа2

0

Итак, после долгих размышлений я обнаружил, что это правильное заклинание для установки на основе systemd:

# 
# /etc/fstab: static file system information
#
# <file system>        <dir>         <type>    <options>          <dump> <pass>
devpts                 /dev/pts      devpts    defaults            0      0
shm                    /dev/shm      tmpfs     nodev,nosuid        0      0

UUID=246b032f-0633-459a-867c-6013304c5b8d swap     swap defaults                             0 0
UUID=64ed9a87-7860-4538-bef6-05eff29ed5c1 /        ext4 defaults,noatime,nodiratime,iversion,fail 0 1
UUID=e3b656bf-69c8-4b2a-bad8-6c051559b43f /mnt/hdd ext4 defaults,noatime,nodiratime,iversion,x-initrd.mount,fail 0 1
/mnt/hdd/home                             /home    none rw,rbind,x-systemd.automount,fail 0 0
/mnt/hdd/root                             /root    none rw,rbind,x-systemd.automount,fail 0 0
/mnt/hdd/tmp                              /tmp     none rw,rbind,x-initrd.mount,fail 0 0
/mnt/hdd/var                              /var     none rw,rbind,x-initrd.mount,fail 0 0
UUID=B084-4D66                            /boot/efi vfat defaults,noauto,noatime,nodiratime,iversion 0 2

По любой причине tmp и var должны быть x-initrd.mount, а home и root должны быть x-systemd.automount. Надеюсь, это поможет кому-то еще.

0

Используйте mount --bind , например, mount --bind /mnt/hdd/home /home

Со страницы руководства по mount:

После этого вызова одно и то же содержимое доступно в двух местах. Можно также перемонтировать один файл (на один файл).

(Обратите внимание, что эта привязка не применяется к другим монтируемым файлам, поэтому, если у вас есть отдельный раздел, смонтированный в /boot , то выполнение mount bind / /troll/root не будет включать ничего из раздела /boot . Если вы хотите рекурсивное связывание, используйте --rbind .)

Чтобы сделать это в fstab, none указывайте ничего в столбце FS и bind в столбце параметров, например

/mnt/hdd/home       /home       none       bind

Согласно man-странице fstab, «порядок записей в fstab важен, потому что fsck(8), mount(8) и umount(8) последовательно выполняют итерацию по fstab », поэтому такие записи должны появляться после (ниже) ) запись о монтировании физического устройства в /mnt/hdd/home .

Я не знаю каких-либо проблем с этим подходом, но я не пробовал настройки, которые вы описываете. Я использовал отдельный раздел для /var/log без проблем, и я не ожидал, что присоединение будет иметь какой-либо дополнительный эффект. Если вы не загружаетесь из / , я бы использовал отдельный раздел только для /boot , потому что он должен определенным образом обрабатываться загрузчиком.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .