ONE QUESTION AT A TIME.

천천히 생각하고, 분명하게.

TODAY’S QUESTION698 / 1500

hard link 생성이 EXDEV로 실패하지만 symbolic link는 됩니다. hard link가 filesystem 경계를 넘을 수 없는 이유를 inode와 dentry 관점에서 설명해 보세요?

잠깐, 답변을 보기 전에
먼저 내 말로 설명해 볼까요?

답변과 점검 포인트 펼치기답변 접기
01

구두 답변

정의를 외우기보다, 원리와 조건을 연결해 설명해 보세요.

hard link는 source inode의 내용을 복사하는 대신 새 directory entry가 같은 filesystem inode를 직접 가리키도록 만드는 연산입니다. 그래서 대상 inode와 새 이름을 관리하는 mounted filesystem 경계를 넘어 link를 만들 수 없고 Linux link()는 보통 EXDEV를 반환합니다. 주의할 점은 “서로 다른 mount = 반드시 서로 다른 superblock”이라고 말하면 너무 좁다는 것입니다. link(2)는 underlying filesystem이 같아도 separate mounts 사이의 link를 거부할 수 있으므로, 원인은 superblock 차이 하나가 아니라 mounted filesystem 경계와 link 정책의 조합으로 설명해야 합니다. /a/file과 /b/file에서 link 시도가 실패한 뒤 symlink("/a/file", "/b/ref")가 성공할 수 있는 이유는 symlink가 inode를 직접 소유하지 않고 target pathname을 저장하기 때문입니다. 이후 /b/ref를 열 때 pathname lookup이 /a 쪽 mount로 넘어가 target inode를 찾습니다. 그러나 symlink 생성 성공은 target 존재·read 권한·현재 mount 유지까지 보장하지 않습니다. dangling target, traversal 권한, unmount 상태를 open 시점에 다시 검사해야 합니다. “내용이 같으니 hard link도 가능하다”는 추론도 틀립니다. cp로 복사하면 새 inode가 생기고 두 파일의 이후 write가 분리됩니다. 검증은 source와 destination의 device·inode를 확인하고, 실제 Linux 환경에서 별도 mount와 같은 underlying filesystem의 separate mount를 각각 시험하는 방식입니다. 이 환경에는 Linux mount 실험을 실행할 수 없으므로 EXDEV 결과를 측정했다고 주장하지 않고 link(2) 문서의 범위로 한정합니다.

02

득점 포인트

이해가 드러나는 지점을 확인해 보세요.

  • hard link가 같은 filesystem inode에 dentry를 추가하는 연산이라 mounted filesystem 경계를 넘지 못한다고 설명합니다.
  • 별도 mount가 반드시 다른 superblock이라는 과장을 피하고 Linux link(2)의 separate-mount EXDEV도 언급합니다.
  • symlink의 pathname 저장과 target 접근 성공 여부를 분리합니다.
03

감점 포인트

놓치기 쉬운 조건과 오해를 짚어 보세요.

  • 내용이 같으면 다른 filesystem에도 hard link를 만들 수 있다고 하거나 symlink가 target 권한을 보장한다고 말하면 안 됩니다.
  • EXDEV를 superblock 차이 하나로만 설명해 same-underlying-filesystem separate mount 사례를 놓치지 않습니다.
  • hard link를 파일 내용 복사로 표현하면 이후 write와 inode identity를 잘못 설명하게 됩니다.
04

더 파고들 거리

하나 더 질문하며 이해의 범위를 넓혀 보세요.

  • device·inode 관찰과 실제 mount 경계 테스트를 함께 계획합니다.
  • Linux 실험을 하지 못한 경우 link 성공·실패를 측정했다고 주장하지 않습니다.
  • target unmount·dangling path·traversal permission을 symlink open의 별도 실패 조건으로 기록합니다.

득점·감점 포인트는 학습용 자기 점검 기준이며, 특정 회사의 실제 채점표가 아닙니다.

← 전체 질문 보기