Скажите, что у меня есть glusterfs, монтируют, что это совместно используется несколькими серверами, к которому получает доступ приложение, и журналы записаны в каталог, который обычно был бы в дереве каталогов той точки монтирования. (скажите, что / нечто является нашей смонтированной совместно используемой памятью, и/foo/bar является каталогом, где журналы записаны в), Чтобы препятствовать тому, чтобы все серверы пытались записать в тот же файл журнала, я хочу сделать/foo/bar символьной ссылкой на другого, локальный каталог,/var/bar. Действительно ли возможно заставить локальные символьные ссылки на совместно используемой памяти смонтироваться? И те символьные ссылки смогли бы быть отображенными на других серверах тот доступ то устройство хранения данных? Или в противном случае есть ли иначе вокруг этого, как циклические устройства? Примите изменение каталога, в который записаны журналы, не возможно.
Если файловая система поддерживает символические ссылки, то символические ссылки (согласно стандарту 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
? Это будет менее запутанным и более устойчивым. Вы, коллеги, скажете вам спасибо.
Это зависит от общей файловой системы. Но в целом, если удаленная ФС поддерживает символические ссылки, это будет работать. Я могу сделать символическую ссылку на объем блеска, и это нормально (проверено).
Может быть, вы хотите настроить такие символические ссылки?
/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