Site icon DBA의 정석

하드링크와 심볼릭 링크에 대한 고찰

하드링크는 같은 파티션(partition) 즉, 같은 파일 시스템에서만 이루어지는 링크를 의미한다. 예를 들면, /etc/init.d와 /etc/rc?.d와 링크 같은 경우 이다.

링크는 하나의 파일에 여러 번 링크를 할 수 있으며, 같은 파일 시스템 내에서 이루어지기 때문에 하드링크는 한계치 제한되어 있으며, 최대32767를 링크 할 수 있다.

이것은 /usr/include/limit.h 헤더 파일에 LINK_MAX 32767로 설정되어 있으며, 포인터 표시가 없다. 그래서, “find –inum”를 사용하여 다른 이름의

위치를 확인 할 수 있다. inode 번호는 디렉터리에서 파일 이름과 inode사이의 하드링크의 생성 목록이 포함된다.

위 그림은 하드링크의 예를 보여주고 있다.

dir1은 inode 235에 연결된다. 데이터 블록에는 dir1에 파일 이름과 이와 관련된 inode 번호들을 저장한다. 일반적으로 디렉터리의 생성은 mkdir 이라는

명령어를 사용한다. 즉, file1, file2라는 파일이 dir1 디렉터리에 위치하고 있으며, dir1은 file1,file2에 관련된 inode 번호 3456, 4567를 포함한다.

그리고, dir2은 dir1이라는 디렉터리에 위치하고 있으며. dir1은 dir2와 관련된 inode 번호 6789를 포함한다. 즉, dir2는 dir1의 서브 디렉터리가 된다.

파일은 항상 하나의 inode를 가져야 하며, 여러 개의 디렉터리 목록들은 같은 inode를 가리킬 수 있다.

inode 구조에서 카운트(count) 참조는 inode를 참조하기 위한 하드링크의 수라 할 수 있다. 마지막 링크가 삭제될 때(Unlink), inode는 할당되어지지 않으며,

자유 파일 공간관 관련된다. 디렉터리 목록을 위하여 inode로부터 백 포인트를 가지지 않는다. DNLC 목록에는 각각의 하드 링크에 대한 것을

생성한다. 그러나, 같은 inode 캐시 목록 목록은 각각에 대하여 사용된다. 하드링크는 inode 포인터를 사용하기 때문에, 같은 파티션 내에서만 사용 가능하다.

다른 파티션에 있는 파일을 참조하기 위해서는 소프트 링크(Soft link)라는 심볼릭 링크(Symbolic link)를 사용해야만 한다.

심볼릭 링크(symbolic link) 또는 소프트 링크(Soft link)는 inode를 공유하지 않고, 파일 이름을 사용할 수 있다. 그래서, 서로 다른 파일 시스템에서 사용하여

디렉터리 운영이 가능하다. 그러나, 다른 파일 시스템과의 연결하기 때문에 링크 연결은 20개로 제한된다. 만약, 심볼릭 링크의 개수가

20개 이상이 되면, 새로운 링크가 생성될 때 에러가 발생된다. SunOS에서는 절대적 또는 상대적 경로 이름을 포함하는 파일이름을 가리킴으로써

파일을 링크 할 수 심볼릭 링크 기능을 제공한다. 심볼릭 링크는 파일이름(경로이름) 포함한 56자 이하의 글자를 가질 수 있으며, 링크가 위치되어 참조되는

파일 이름이 직접/간접 블록 포인터로서 사용되지 않는 14개의 4byte로 나타난다. UFS는 파티션을 효율화하여 성능상의 이점을 제공한다.

특히, CG(Cylinder Group)에 이미 할당되어 있는 디렉터리들은 자유 inode들의 평균 수에 비하여 대단히 큰 것을 포함할 수 있다. 그래서 파일

inode들은 같은 CG에 할당되며, 데이터 블록은 inode처럼 같은 CG에 할당이 가능하다. UFS는 디렉터리들, inode들, 데이터 블록이 CG에 서로

엇갈리게 할당하도록 시도함으로써 이들의 정보가 변화 있더라도 기존 정보를 유지하는 향상된 기능을 제공한다.

Exit mobile version