символьные ссылки на совместно используемой памяти

Скажите, что у меня есть glusterfs, монтируют, что это совместно используется несколькими серверами, к которому получает доступ приложение, и журналы записаны в каталог, который обычно был бы в дереве каталогов той точки монтирования. (скажите, что / нечто является нашей смонтированной совместно используемой памятью, и/foo/bar является каталогом, где журналы записаны в), Чтобы препятствовать тому, чтобы все серверы пытались записать в тот же файл журнала, я хочу сделать/foo/bar символьной ссылкой на другого, локальный каталог,/var/bar. Действительно ли возможно заставить локальные символьные ссылки на совместно используемой памяти смонтироваться? И те символьные ссылки смогли бы быть отображенными на других серверах тот доступ то устройство хранения данных? Или в противном случае есть ли иначе вокруг этого, как циклические устройства? Примите изменение каталога, в который записаны журналы, не возможно.

0
задан 15 October 2015 в 18:47
3 ответа

Если файловая система поддерживает символические ссылки, то символические ссылки (согласно стандарту POSIX) интерпретируются на клиенте, а не на сервере. Следовательно, вы должны иметь возможность надежно ссылаться на другие файловые системы в любой Unix или Unix-подобной системе, такой как Linux.

Например:

/foo        A gluster remote file system
/var        A local file system

Если / foo / bar является символической ссылкой на / var / log / myhost , то каждая машина, которая пишет в / foo / bar, будет записывать в локальный / var / log / myhost на этой машине.

Однако, если / var / log не не существует, запись не удастся с сообщением об ошибке, которое вас удивит. (попробуйте) Итак, убедитесь, что существует / var / log . Это не проблема, поскольку в большинстве систем / var / log создается во время установки. Однако что, если бы ссылка была на /var/log/dirname/filename.txt , есть большая вероятность, что / var / log / dirname еще не существует. Я уже сталкивался с этой проблемой раньше.

(я думаю, что есть примеры этого в главе 28 Практики системного и сетевого администрирования, где есть рекомендации для ссылки на / etc / из сетевых файловых систем.)

Итак, да, вы можете сделать это с помощью символических ссылок. Однако вас это может сбить с толку коллег. Можно ли указать программе просто писать в / var / log / foo ? Это будет менее запутанным и более устойчивым. Вы, коллеги, скажете вам спасибо.

2
ответ дан 4 December 2019 в 13:46

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

0
ответ дан 4 December 2019 в 13:46

Может быть, вы хотите настроить такие символические ссылки?

/foo      - Gluster mountpoint
/var/log  - local filesystem mountpoint

Служба на локальном сервере настроена для входа в /foo/log/app.log . И этот каталог / foo / log должен быть для каждого сервера, но также расположен на томе Gluster, чтобы другие могли проверять журнал при необходимости.

Для этого я бы предложил создать два сим- ссылки. На каждом сервере:

# mkdir /foo/logs/$(hostname)
# ln -s /foo/logs/$(hostname) /var/log/app

И на томе Gluster (требуется только один раз):

# ln -s /var/log/app /foo/log

Когда приложение записывает в /foo/log/app.log , символическая ссылка / foo / log преобразуется в / var / log / app . Теперь / var / log / app - это символическая ссылка на локальную файловую систему каждого сервера, и каждый сервер указывает на свой каталог на томе Gluster. Итак, / var / log / app указывает на /foo/logs/server1.example.com на одном сервере и на /foo/logs/server2.example. com и др.

/foo/log/app.log -> /var/log/app/app.log -> /foo/logs/server1.example.com/app.log
0
ответ дан 4 December 2019 в 13:46

Теги

Похожие вопросы