Вопрос или проблема
У меня есть виртуальный частный сервер, размещенный в облаке, на котором работает Ubuntu 22.04, и мне нужно изменить параметры, с которыми монтируется /proc
. В настоящее время он монтируется с опцией hidepid=2
. Однако эта настройка несовместима с виртуальной машиной Java, которую DB2 использует для выполнения хранимых процедур, написанных на Java, что приводит к сбоям в вызовах этих процедур. Я могу исправить проблему, перемонтировав с hidepid=0
, но с этим связаны две проблемы. Первая: через несколько минут /proc
автоматически перемонтируется с hidepid=2
, а вторая: при каждом перезагрузке сервера он монтируется с hidepid=2
. Как я могу сделать это изменение постоянным? (Примечание: Определение монтирования не найдено в /etc/fstab
, поэтому это не просто вопрос изменения чего-то там.)
Все, что вы установите для монтирования /proc в /etc/fstab, должно применяться с следующей загрузки: systemd
заботится о “API-файловых системах” и автоматически монтирует их при запуске с настройками по умолчанию, если файловые системы не указаны в /etc/fstab.
Ответ или решение
Чтобы изменить параметры по умолчанию для монтирования /proc
в Ubuntu 22.04, необходимо понять, как система Linux обрабатывает монтирование файловых систем и в частности, как это происходит для псевдо-файловых систем, таких как /proc
. В вашей ситуации было установлено, что /proc
монтируется с опцией hidepid=2
, что вызывает проблемы с работой виртуальной машины Java, которую использует DB2 для выполнения процедур, написанных на Java. Вы правильно заметили, что простое исправление с помощью mount -o remount,hidepid=0 /proc
работает временно, но не решает проблему на постоянной основе.
1. Изменение параметров монтирования /proc
Так как параметр монтирования /proc
не прописан в файле /etc/fstab
, его настройки могут управляться через systemd
, как указано в вашем запросе. Вы можете определить параметры монтирования, используя systemd
-единицы.
Шаги для изменения параметров:
-
Создайте новый файл конфигурации монтирования:
Для того чтобы переопределить параметры монтирования
/proc
, необходимо создать новый файл конфигурации дляsystemd
:sudo nano /etc/systemd/system/proc.mount
-
Содержимое нового монтирования:
Вставьте следующее содержимое в созданный файл. Убедитесь, что используете параметры, которые вам нужны:
[Unit] Description=Virtual files for proc After=swap.target [Mount] What=proc Where=/proc Type=proc Options=hidepid=0 [Install] WantedBy=multi-user.target
-
Деактивируйте текущее монтирование:
Чтобы удалить текущее монтирование
/proc
, выполните следующую команду:sudo systemctl unmask proc.mount sudo systemctl stop proc.mount
-
Перезагрузите
systemd
для применения изменений:После создания файла вам нужно выполнить команду для перезагрузки
systemd
:sudo systemctl daemon-reload
-
Активируйте новое монтирование
/proc
:Теперь активируйте созданное монтирование:
sudo systemctl start proc.mount sudo systemctl enable proc.mount
2. Проверка результатов
Чтобы убедиться, что опции применены корректно, используйте команду:
mount | grep proc
Вы должны увидеть /proc
с параметром hidepid=0
.
Заключение
Теперь при перезагрузке сервера /proc
будет автоматически монтироваться с использованием параметров, которые вы указали в конфигурации systemd
. Это решит проблему, связанную с работой Java в DB2, и обеспечит стабильную платформу для работы ваших приложений. Если у вас возникнут дополнительные вопросы или проблемы при выполнении этих шагов, не стесняйтесь задавать их.