카테고리 없음

원본 파일과 데이터 블록의 개념적 이해

쟌문 2024. 12. 20. 16:37
반응형

원본 파일과 데이터 블록 썸네일 이미지

 

데이터 블록이란 무엇인가?

운영체제에서 파일은 파일 이름 실제 데이터를 저장하는 데이터 블록으로 나뉩니다. 데이터 블록은 하드 디스크나 SSD와 같은 저장 매체에 실제로 저장된 데이터의 위치를 가리킵니다.

예시

원본 파일 생성

$ echo "Hello, World!" > fileA.txt

위 명령어는 fileA.txt라는 파일을 생성하고, 데이터 블록에 Hello, World!라는 내용을 저장합니다.


하드 링크와 데이터 블록의 관계

하드 링크를 생성하면, 원본 파일과 동일한 데이터 블록을 가리키는 또 다른 이름을 부여하는 것입니다. 이를 통해 두 파일 이름이 동일한 데이터를 공유합니다.

하드 링크 예시 시각화

원본 파일 생성

fileA.txt -> [데이터 블록: "Hello, World!"]

하드 링크 생성

$ ln fileA.txt fileB.txt
fileA.txt -> [데이터 블록: "Hello, World!"]
fileB.txt -> [데이터 블록: "Hello, World!"]

fileA.txtfileB.txt는 같은 데이터 블록을 가리킵니다. 원본 파일이 삭제되어도 데이터 블록은 유지되므로, 다른 이름(하드 링크)을 통해 여전히 접근할 수 있습니다.


심볼릭 링크와 데이터 블록의 관계

심볼릭 링크는 원본 파일의 경로만 가리키는 별도의 파일입니다. 따라서 원본 파일이 삭제되거나 이동되면 링크는 깨진 상태가 됩니다.

심볼릭 링크 예시 시각화

원본 파일 생성

fileA.txt -> [데이터 블록: "Hello, World!"]

심볼릭 링크 생성

$ ln -s fileA.txt fileC.txt
fileA.txt -> [데이터 블록: "Hello, World!"]
fileC.txt -> fileA.txt

fileC.txt는 원본 파일의 위치(fileA.txt)만 참조합니다. 원본 파일이 삭제되면 fileC.txt는 깨진 링크가 되어 데이터에 접근할 수 없습니다.


시각적 이해를 돕는 코드 예제와 출력

파일 생성 및 링크 작업

# 원본 파일 생성
$ echo "Hello, Data Block!" > fileA.txt

# 하드 링크 생성
$ ln fileA.txt fileB.txt

# 심볼릭 링크 생성
$ ln -s fileA.txt fileC.txt

# 파일 구조 확인
$ ls -li

출력 예시

1001234 -rw-r--r--  2 user group 20 Dec 19 10:00 fileA.txt
1001234 -rw-r--r--  2 user group 20 Dec 19 10:00 fileB.txt
1001235 lrwxr-xr-x  1 user group  9 Dec 19 10:00 fileC.txt -> fileA.txt
  • Inode 번호(1001234): 하드 링크는 동일한 데이터 블록을 가리키므로 inode 번호가 같습니다.
  • 심볼릭 링크(1001235): 심볼릭 링크는 다른 inode 번호를 가지며, 파일 경로를 참조합니다.

하드 링크와 심볼릭 링크의 차이

특징 하드 링크 심볼릭 링크
데이터 블록 공유 여부 동일한 데이터 블록을 공유 데이터 블록을 공유하지 않음
Inode 번호 동일 다름
원본 파일 삭제 시 링크 파일을 통해 접근 가능 링크 깨짐
크로스 파티션 지원 지원하지 않음 지원

 

이와 같은 구조를 이해하면 하드 링크와 심볼릭 링크의 차이를 이해하는데 더욱 도움이 되리라 믿습니다. 😁

반응형