• 카테고리

    질문 & 답변
  • 세부 분야

    시스템

  • 해결 여부

    미해결

하드 링크, 심볼릭 링크

22.11.07 06:52 작성 조회수 379

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

 

안녕하세요.

좋은 강의 만들어 주셔서 감사합니다.

지금 초반을 보고 있는데

하드링크, 심볼릭 링크에 쓰임새는 알겠습니다.

혹시 왜 만들어졌고, 어떤 이유에서 쓰이게 되는지 알수 있을까요?

 

감사합니다.

답변 1

답변을 작성해보세요.

1

안녕하세요. Jin3137님

하드링크와 소프트링크(심볼릭링크)는 유닉스 / 리눅스 시스템의 특징적인 단면을 잘 보여주죠.

아래와 같이 답변 드립니다.

스택 오버 플로우에 아래처럼 잘 설명된 내용이 있어 번역본 첨부합니다. 하지만 기계번역이라 번역이 매끄럽지는 않습니다.


하드 링크는 원본 파일이 이동할 때 유용합니다. 예를 들어, 파일을 /bin에서 /usr/bin 또는 /usr/local/bin으로 이동합니다. /bin에 있는 파일에 대한 모든 심볼릭 링크는 이로 인해 끊어지지만 파일의 inode에 직접 연결되는 하드링크는 끊어지지 않습니다.

하드 링크는 디렉토리 항목만 차지하기 때문에 디스크 공간을 덜 차지할 수 있지만 심볼릭 링크는 가리키는 이름을 저장하기 위해 자체 inode가 필요합니다.

하드 링크는 해결하는 데 시간이 덜 걸립니다. 심볼릭 링크는 심볼릭 링크된 디렉터리에 있는 다른 심볼릭 링크를 가리킬 수 있습니다. 그리고 이들 중 일부는 NFS 또는 기타 대기 시간이 긴 파일 시스템에 있을 수 있으므로 네트워크 트래픽이 해결될 수 있습니다. 항상 동일한 파일 시스템에 있는 하드 링크는 항상 단일 조회로 해결되며 네트워크 대기 시간을 포함하지 않습니다(NFS 파일 시스템의 하드 링크인 경우 NFS 서버가 해결을 수행하고 클라이언트 시스템). 때로는 이것이 중요합니다. 나를 위한 것은 아니지만 이것이 중요할 수 있는 고성능 시스템을 상상할 수 있습니다.

나는 또한 mmap(2) 및 open(2)과 같은 것들이 hardlinks와 동일한 기능을 사용하여 파일의 inode를 활성 상태로 유지하여 파일이 unlink(2) 해제되더라도 inode는 프로세스가 계속 액세스할 수 있도록 남아 있다고 생각합니다. 프로세스가 닫히면 파일이 실제로 사라집니다. 이것은 훨씬 더 안전한 임시 파일을 허용합니다. (열기 및 링크 해제가 원자적으로 발생하도록 할 수 있다면, 내가 기억하지 못하는 POSIX API가 있을 수 있으며, 그러면 실제로 안전한 임시 파일을 갖게 됩니다) 읽기/쓰기 아무도 액세스할 수 없는 데이터. 글쎄요, /proc이 모든 사람에게 파일 디스크립터를 볼 수 있는 기능을 제공하기 전에는 사실이었습니다. 그러나 그것은 또 다른 이야기입니다.

말하자면, 프로세스 A에서 열려 있지만 파일 시스템에서 연결되지 않은 파일을 복구하는 것은 하드 링크를 사용하여 inode 링크를 다시 생성하여 열려 있는 프로세스가 파일을 닫거나 사라질 때 파일이 사라지지 않도록 하는 것입니다.


 

 

jin3137님의 프로필

jin3137

질문자

2022.11.14

답변 감사합니다.