Рейтинг:0

Запуск кэша cachefilesd на виртуальном диске (tmpfs) для загрузки PXE NFS

флаг mx

Я использую Ubuntu 20.04 LTS (ядро 5.4.0-81-общий) из PXE, и я хочу добавить локальный кеш. Поскольку я не хочу иметь раздел на всех своих устройствах для кэширования, я хочу использовать для этой цели виртуальный диск.

Мне удалось включить фск опция во время загрузки с помощью этот ответ.

Однако, когда я запускаю кэш-файлыd сервис, он терпит неудачу с -95: Операция не поддерживается. Вероятно, это потому, что tmpfs не поддерживает user_xattr, что требуется.

я прочитал здесь что вы можете скомпилировать/исправить ядро, чтобы включить user_xattr, хотя это угроза безопасности. Помимо того, что это кошмар обслуживания, я не хочу заходить так далеко и возиться с автоматизацией этого при каждом обновлении ядра.

я прочитал здесь (немецкий) и это И его отклик.

Это указывает на то, что вы можете создать tmpfs, затем создать петлевое устройство, отформатировать его в ext4, а затем запустить там свой fs-кэш.

Однако, поскольку я использую PXE, а точка монтирования NFS /, как мне это сделать во время загрузки, желательно до cachedfilesd.service запущен?

Мой загрузчик(Весамену.c32)

# [...]
ярлык ubuntunfs
        метка меню ^Ubuntu NFS
        текстовая помощь
Запустите Ubuntu из сетевой файловой системы.
        конечный текст
        ядро убунту/загрузка/vmlinuz
        initrd ubuntu/boot/initrd.img
        добавить root=/dev/nfs nfsroot=192.168.1.5:/srv/tftp/ubuntu,rw,fsc,relatime ip=dhcp rw
# [...]

мой фстаб

/proc /proc proc по умолчанию 0 0
/sys /sys sysfs по умолчанию 0 0
/dev/nfs / nfs по умолчанию, relatime, fsc 1 1

# рамдиск для фс-кэш для нфс
tmpfs /media/ramdisk tmpfs по умолчанию, размер=5% 0 0

нет /tmp tmpfs по умолчанию 0 0
нет /var/run tmpfs по умолчанию 0 0
нет /var/lock tmpfs по умолчанию 0 0
нет /var/tmp tmpfs по умолчанию 0 0

мой /etc/cachefilesd.conf

каталог /media/ramdisk
тег mycache
Брюнет 90%
70%
бстоп 30%
90%
70%
фстоп 30%

культура 14
guiverc avatar
флаг cn
Пожалуйста, предоставьте информацию о продукте и выпуске.
FalcoGer avatar
флаг mx
@guiverc Надеюсь, вы имеете в виду версию Ubuntu и ядра. Я добавил те.
guiverc avatar
флаг cn
по продукту, серверу ubuntu, рабочему столу ubuntu, ядру ubuntu и т. д. и сведениям о выпуске, таким как 20.04, 20.04.3, 20 и т. д. (если предоставлены полные сведения о продукте и выпуске, мы знаем ядро, например, сервер ubuntu 20.04 использует GA или 5.4 ядро, ядро ​​20.ubuntu 20.04 для настольных ПК — это HWE, поэтому оно зависит от уровня обновления, 20.04 — это 5.4, 20.04.2 — это 5.8, 20.04.3 — это 5.11 и т. д., Ubuntu Core 20 — это….) — ваш 5.4 подразумевает, что это 20.04 сервер для меня, таким образом, ядро ​​​​GA
FalcoGer avatar
флаг mx
@guiverc Я установил с debootstrap. Я предполагаю, что это сервер или минимальный.
Рейтинг:0
флаг mx

Я сделал это с помощью службы systemd.

[Ед. изм]
Description=Создатель кеша
До = cachefilesd.service

[Оказание услуг]
ExecStart=/bin/bash -c "dd if=/dev/zero of=/media/ramdisk/cache.ext4 bs=1k count=`df /media/ramdisk | tail -n 1 | sed -e 's/ \ +/ /g' | cut -d ' ' -f 2` && mke2fs /media/ramdisk/cache.ext4 && mount -o rw,noatime,nodiratime,user_xattr /media/ramdisk/cache.ext4 /media/cache/"
Перезапустить=нет
Тип = ваншот

[Установить]
WantedBy=многопользовательская.цель

Скрипт берет количество блоков 1k (от дф) виртуального диска в качестве входных данных для ддвходной файл (если=), иначе dd вернет код ошибки, так как диск заполнен и && в такой ситуации не сработает. Очевидно, это работает только в том случае, если ramdisk пуст.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.