CentOS 에서 stream 버전은 기업용으로 쓰이는 OS 등의 안정적인 버전의 OS가 되기 전인 베타 버전이라고 보면됨
오픈소스 가져다가 상업용 OS 만드니깐 이런식으로 바꿈
index node
파일에 대한 정보(메타데이터)를 가지고 있고, 인덱스 값을 가진 노드 데이터라고 생각하면 됨
*시스템은 메타 데이터를 어디에 저장할까?
디스크를 파티션으로 나눈 공간의 일부분(디스크 용량의 1%)에 저장함
inode 를 저장할 공간이 없다면, 하드 용량이 존재해도 파일 생성이 되지 않음
파일 생성 ≒ 링크 - 디스크에 데이터가 존재하는 위치 가리킴
파일 제거 ≒ 언링크 - 데이터를 가리키지 않음
ex)rm
- 실제 데이터를 삭제하는 것이 아니라 찾아가는 경로를 끊어 버리는 것
*rm
: block 데이터를 지우는게 아니라 파일시스템의 원본 파일에 대한 inode 링크를 삭제하는 것
링크되어 있지 않는(하드링크 0개) 데이터는 자유로움
-> 프리 블록
따라서 해당 블록에 오버라이트 가능 ≒ 새로운 파일 생성
inode 구성요소
*하나의 파일이 여러 데이터 블록(data blocks)을 가질 수 있음
inode는 그 모든 블록의 주소를 가리키는 포인터들에 대한 정보를 가짐
하드 링크
cp
와 다르게 복사해서 용량을 차지하지 않음심볼릭 링크
+) /etc/sudoers 파일에 유저 추가하면
sudo
명령어 사용 가능
(해당 파일은 visudo 로 편집해야 편집됨)
sudo
명령어로 root 권한을 임시적으로 가질 수 있음
(wheel 그룹에 속하면 su, sudo 가능)
파일 복사를 위한 명령어
하드 링크와는 어떻게 다른가?
cp
로 생성된 사본은 원본과 inode 가 다르기 때문에 서로 독립적인 파일
즉, 원본을 변경하여도 사본에는 영향이 없음
cp
를 사용하여 생성한 파일의 inode 가 원본 파일과 다른 것을 볼 수 있음
또한, cp
사용 시 용량을 차지하게 됨
(하드 링크는 inode 의 번호를 복사하는 것이기 때문에 생성해도 용량을 차지하지 않음)
cp -R(r)
: 하위 디렉토리 항목들도 복사
R: Recursive (재귀) 큰 단위를 작은 단위로 반복적으로 나누면서 문제를 간단하게 만들어 해결하기 위해 사용함
df -h
: 마운트된 디스크 용량 확인
lsblk
: 마운트 되지 않은 것도 포함하여 블록 장치 목록 확인
lsblk -f
: 파일 시스템도 포함하여 확인
fdisk -l
: 파티션 조작 명령어
마운트
논리적으로 나눠준 파티션을 OS에 논리적으로 연결/올려줌 (이름 매핑)
파티션된 디스크 공간이 물리적으로 어디에 위치해있는지 우리는 모르기 때문에 논리적으로 이름을 붙여줘야 함
서로 다른 파일시스템에서 링크 생성
하드 링크는 생성이 불가
심볼릭 링크는 생성 가능
mv
는 파일 위치 변경 뿐만 아니라 파일 이름 변경 이라는 기능도 가짐