카테고리 없음
원본 파일과 데이터 블록의 개념적 이해
쟌문
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.txt와 fileB.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 번호 | 동일 | 다름 |
원본 파일 삭제 시 | 링크 파일을 통해 접근 가능 | 링크 깨짐 |
크로스 파티션 지원 | 지원하지 않음 | 지원 |
이와 같은 구조를 이해하면 하드 링크와 심볼릭 링크의 차이를 이해하는데 더욱 도움이 되리라 믿습니다. 😁
반응형