공유 저장소의 심볼릭 링크

공유 저장소의 심볼릭 링크

애플리케이션이 액세스하는 여러 서버 간에 공유되는 glusterfs 마운트가 있고 일반적으로 해당 마운트 지점의 디렉토리 트리에 있는 디렉토리에 로그가 기록된다고 가정해 보겠습니다. (예를 들어 /foo는 마운트된 공유 저장소이고 /foo/bar는 로그가 기록되는 디렉터리입니다.) 모든 서버가 동일한 로그 파일에 기록하려고 시도하는 것을 방지하기 위해 /foo/bar를 다음 위치에 대한 심볼릭 링크로 만들고 싶습니다. 또 다른 로컬 디렉터리인 /var/bar. 공유 스토리지 마운트에서 로컬 심볼릭 링크를 만들 수 있습니까? 그리고 해당 저장소에 액세스하는 다른 서버에 해당 심볼릭 링크를 매핑할 수 있습니까? 아니면 그렇지 않은 경우 루프 장치와 같은 다른 방법이 있습니까? 로그가 기록되는 디렉터리를 변경할 수 없다고 가정합니다.

답변1

파일 시스템이 기호 링크를 지원하는 경우 기호 링크(POSIX 표준에 따라)는 서버가 아닌 클라이언트에서 해석됩니다. 따라서 Linux와 같은 Unix 또는 Unix 계열 시스템에서 안정적으로 다른 파일 시스템에 심볼릭 링크를 연결할 수 있어야 합니다.

예를 들어:

/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나는 전에이 문제에 직면했습니다.

(네트워크 파일 시스템에서 /etc/에 연결하라는 권장 사항이 있는 시스템 및 네트워크 관리 실습의 28장에 이에 대한 예가 있다고 생각합니다.)

그렇습니다. 심볼릭 링크를 사용하면 이 작업을 수행할 수 있습니다. 그러나 동료에게 혼란을 줄 수 있습니다. 소프트웨어에 그냥 쓰도록 지시할 수 있습니까 /var/log/foo? 덜 혼란스럽고 지속 가능합니다. 동료들이 감사할 것입니다.

답변2

공유 파일 시스템에 따라 다릅니다. 그러나 일반적으로 원격 FS가 심볼릭 링크를 지원하면 작동합니다. Gluster 볼륨에 대해 심볼릭 링크를 수행할 수 있으며 괜찮습니다(테스트됨).

답변3

어쩌면 이와 같은 심볼릭 링크를 설정하고 싶습니까?

/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

관련 정보