에 대한 자세한 이해의 리눅스는 Inode 예를 들어
리눅스와 다른 유닉스는 운영 체제의 일관성을 유지하여 치료하는 것으로 파일(심지어는 하드웨어 장치). 키보드,마우스,프린터,모니터,하드 디스크,프로세스,심지어는 디렉토리로 처리된 파일은 리눅스에서. 일반 파일에 포함된 텍스트와 같은 데이터(텍스트 파일),음악,비디오(멀티미디어 파일)등이 있습니다.
이외의 다른 정기적 데이터,거기에 몇 가지 다른 데이터에 대해 이와 같은 파일을 자신의 크기는,소유권,권한 타임스탬프 등등. 파일에 대한이 메타 데이터는 inode(인덱스 노드)로 알려진 데이터 구조로 관리됩니다.
Linux 에서 inode 는 무엇입니까?
모든 리눅스 파일이나 디렉토리(기술적인 관점에서 볼 수 없 그들 사이에 차이가)는 inode,이 inode 모두 포함 파일의 메타데이터(즉,모두 관리하는 데 필요한 데이터를 읽는 파일에 저장된 inode).
예를 들어,inode 의 목록을 포함하는 모든 블록에서 파일이 저장되고,소유자 정보를 파일에 대한 권한과 다른 모든 속성에 대한 설정 파일입니다.
Inode 제한은 파일 시스템 당이며 파일 시스템 생성 시간에 결정됩니다. 파일 시스템에 따라 최대 디렉토리 크기가 달라 지므로 정확한 제한이 다릅니다.
더 나은 성능을 위해 만들 디렉토리를 작은 정렬하여 파일로 하위 디렉토리는 오히려 하나 큰 디렉토리에 있습니다.
inode 번호는 무엇입니까?
Inode 번호는 인덱스 번호라고도합니다. Inode 는 생성되는 동안 파일 및 디렉토리에 할당 된 고유 번호입니다. 아이 노드 번호는 전체 파일 시스템에 고유합니다.
inode 는 ext3 또는 ext4 와 같은 전통적인 Unix 스타일 파일 시스템의 데이터 구조입니다. 파일 및 디렉토리의 속성을 저장합니다.
Linux ext3 또는 ext4 와 같은 확장 파일 시스템은 inode 테이블이라고하는 이러한 inode 의 배열을 유지합니다. 이 테이블에는 해당 파일 시스템의 모든 파일 목록이 포함되어 있습니다. Inode 테이블의 개별 inodes 에는 inode number 라는 고유 번호(해당 파일 시스템에 고유 함)가 있습니다.
다음 정보는 inode 에 저장됩니다.
- 파일 형식:일반 파일,디렉토리,파이프 등
- 해당 파일에 대한 권한: 읽기,쓰기,실행
- 링크를 계산:수의 하드 링크에 상대적인 inode
- 사용자 ID:의 소유자는 파일
- 그룹 ID:그룹 소유자
- 크기의 파일 또는 주/보조 번호의 경우에는 일부 특별한 파일
- 시간 스탬프:에 대한 액세스 시간,변경 시간과(inode) 시간을 변경
- 속성을 변경할 수 없’예를 들어
- 액세스 제어 목록에 대한 사용 권한 특별한 사용자/그룹
- 링크하여 파일의 위치
- 기타 메타데이터는 파일에 대
주는 inode 하지 않는 저장하는 파일의 이름이지만 그 내용만 있습니다.
는 방법을 확인하는 inode 리눅스에서
하려는 경우에는 inode, 에 ext 파일 시스템을 사용할 수 있는 명령을 아래의 속성을 확인하는 파일 시스템과 파일에 사용 됩니다.
a.파일 데이터 정보 표시
stat 명령을 사용하여 파일 또는 디렉토리에 inode 데이터를 표시 할 수 있습니다.
다음과 같이 파일의 이름을 표시해야합니다:
통계 출력은 파일의 다양한 타임 스탬프,소유권 및 권한 및 저장 위치를 알려줍니다. 파일의 데이터는 디스크 블록에 보관되며 이는 inode 의 stat 명령 출력에 표시됩니다.
선택할 수 있습니다만 나열하는 아이노드의 숫자를 가진 파일을--format
옵션은 아래와 같이
# stat --format=%i hello530461
b. 인쇄 색인 번호의 파
ls 명령을 사용하여 목록은 파일과 디렉토리 정보입니다. Ls 가있는-i
옵션은 각 파일의 inode 번호를 표시합니다. 결합할 수 있습니다 그것과 함께-l
옵션 목록 정보에서 세부 사항
# ls -iltotal 140984520170 dr-xrw-rw- 2 linoadmin linoadmin 4096 Mar 9 2013 asciiquarium_1.1263206 -rwxr-xr-x 1 linoadmin linoadmin 15436 Mar 9 2013 asciiquarium.tar.gz519187 drwxr----- 2 root root 4096 Apr 13 01:35-rwSr--r-- 1 root root 5747 Apr 25 01:45 bootstrap655799 drwxr-xr-x 2 root root 4096 May 16 17:46 course528927 drwxr-xr-x 3 root root 4096 Apr 29 00:29 environments
첫 번째 열에는 inode 번호입니다. 표시할 수 있습니다 특정한 파일에 inode 아래와 같이
# ls -i continue.sh 519450 continue.sh
c. 표시 파일시스템 inode 공간 정보
기본적으로,df 명령 요약 사용할 수 있으며 사용되는 디스크 공간을 차지합니다. 할 수 있는 대신 보고서에서 사용되고 아이노드에 의해 전달-i
--inodes
옵션을 선택합니다.
이 정보에 도움이 될 수 있다면 분할은 매우 많은 작은 파일을 고갈시킬 수있는 사용할 수 있는 inode 보다 빨리 그들은 고갈 가능한 디스크 공간입니다.
d. 목록의 내용이 파일시스템 수퍼
사용할 수 있는tune2fs -l
명령을 표시합 관련된 모든 정보를 inode.
# tune2fs -l /dev/sda6 | grep inodeFilesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isizeFree inodes: 2224350First inode: 11Journal inode: 8First orphan inode: 1575905Journal backup: inode blocks
e. 조작하는 파일시스템 메타 데이터
당신이 볼 수있는 내용의 아이노드에 있는 Ext4 파일 시스템으로 debugfs 명령입니다. 파일 시스템 디버거에서 사용할 수 있는 stat 명령을 사용하여 inode 의 내용을 표시해야 합니다. 완료되면 exit 를 사용하여 debugfs 환경을 닫습니다.
debugfs 에서 작업하는 동안 파일 시스템의 파일에 액세스 할 수 없는지 확인하십시오. 고려해야 할 다시 마운트한 파일 시스템을 사용하여mount -o remount /yourfilesystem
사용할 수 있습 debugfs 취소를 사용하여 파일의 inode 나타내는 파일
아이노드 구조에 대한 directory
위에 명시된 바와 같이 디렉토리 리눅스에서는 또한 파일로 처리됩니다. 디렉토리는 특별한 파일에 매핑하는 파일 이름을 링크(이 매핑은 소위 디렉토리 항목 또는 dentry). 그래서 우리가 말할 때는 디렉토리에 파일이 들어와 다른 디렉토리에,우리는 것을 의미하는 이 디렉터리를 매핑하러 파일과 디렉터리(디렉토리에 있는 특별한 파일은,그래서 그들은 또한 매핑을 그들의 inode 번호)를 알려 그들의 inode 숫자입니다.
는 이유입니다 디렉토리를 잡을 수가 없어는 두 파일과 동일한 이름이기 때문에,그것은 수도 중 하나 이름을 가진 두 개의 서로 다른 아이노드 번호입니다.
# ls -ld test/drwxr-xr-x 3 root root 4096 Apr 13 01:43 test/
으로 파일은 매핑된 그 아이노드에 의해 그 부모 디렉토리,그때는 어떻게 최상위 디렉터리(i.e./ directory
)매핑을 inode? /
디렉토리의 inode 번호는 고정되어 있으며 항상 2 입니다.
Linux 의 링크 및 인덱스 번호
ls -l
의 출력에서 권한 및 소유자 이전의 열은 링크 수입니다. 링크 수는 파일에 대한 하드 링크 수입니다. 하드 링크를 이해하려면 링크로 시작합니다. 링크는 다른 파일에 대한 포인터입니다.
리눅스에서 세계 두 가지 유형의 링크가 존재합니다:
니다. 심볼릭 링크(또는 소프트 링크)
심볼릭 링크 별도의 파일의 내용을 지점을 연결하는 파일입니다. 심볼릭 링크를 만들려면-s
옵션과 함께 ln 명령을 사용하십시오. Ln 명령을 사용할 때는 먼저 원본 파일의 이름을 참조한 다음 만들려는 링크의 이름을 참조하는지 확인하십시오.여기서’filesync’는’에 대한 심볼릭 링크입니다.sync.sh’.지름길로 생각하십시오. ‘Filesync’를 편집하는 것은 원본 파일을 직접 편집하는 것과 같지만 실제로 일어나는 일입니다. 원본 파일을 삭제하거나 이동하면 링크가 끊어지고’filesync’파일을 더 이상 사용할 수 없습니다.
ls -l
명령은 결과 파일이 심볼릭 링크임을 보여줍니다. 이 문자로 표시 l 에서 첫 번째 위치의ls -l
출력에 의해 또한 화살표의 끝에서 목록을 나타내는 파일의 이름은 참조.
# ls -l filesync lrwxrwxrwx 1 root root 20 Apr 7 06:08 filesync -> /home/bobbin/sync.sh
심볼릭 링크의 내용은 대상 파일의 이름만입니다. 심볼릭 링크의 사용 권한이 완전히 열려 있음을 알 수 있습니다. 심볼릭 링크와 원본 파일을 비교할 때 사용 권한이 관리되지 않기 때문에 그 사이에 명확한 차이가 있음을 알 수 있습니다.
원본 파일은 이름을 직접 연결되어 있 inode 및 심볼릭 링크를 참조하는 이름입니다. 심볼릭 링크의 크기는 심볼릭 링크에서 다른 정보를 사용할 수 없기 때문에 참조하는 파일 이름의 바이트 수입니다.
b. 하드 링크
의 아이디어를 얻으려면 어떤 대가,그것은 중요하다는 것을 이해하의 신원을 파일은 해당 아이노드 수지의 이름입니다. 하드 링크는 아이 노드를 참조하는 이름입니다. 즉,’file1’에’file2’라는 하드 링크가있는 경우이 두 파일은 동일한 inode 를 참조합니다. 따라서 파일에 대한 하드 링크를 만들 때 실제로 할 일은 inode 에 새 이름을 추가하는 것입니다.이렇게하려면 옵션없이 ln 명령을 사용하십시오.
# ls -l /home/bobbin/sync.sh -rw-r----- 1 root root 5 Apr 7 06:09 /home/bobbin/sync.sh
# ln /home/bobbin/sync.sh synchro
이제 두 비교할 파일
에 대한 흥미로운 점은 하드 링크가 있는 사이에는 차이가 없는 원본 파일과 링크:그들은 단지 두 가지 이름을 연결 같은 inode.언급했듯이 소프트 링크와 달리 하드 링크는 특별한 파일이 아닙니다. 이제 링크 수는 파일이 하드 링크 된 숫자입니다. 따라서 위 그림에서 볼 수 있듯이 하드 링크를 만든 후 링크 수가 증가합니다. 이러한 하드 링크에는 두 가지 제한이 있습니다:
- 디렉토리는 하드 링크 할 수 없습니다. 리눅스는 디렉토리의 비순환 트리 구조를 유지하기 위해이 허용하지 않습니다.
- 파일 시스템 전체에서 하드 링크를 만들 수 없습니다. 모두 파일에 있어야 합니다 같은 파일시스템이기 때문에,다른 파일 시스템이 다른 독립적인 아이노드 테이블(두 개의 파일이 다른 파일시스템,하지만 같은 inode 수 다를 것이다).
Linux 에서 하드 링크를 찾는 방법
inode 번호를 가리키는 모든 파일 이름을 검색 할 수 있습니다. 는 것을 의미를 검색할 수 있습니다 열심히 연결하기 때문에 그것이 유일한 유형의 링크를 시간을 가질 수 있습니다 몇몇 파일명을 가리키는 동일한 콘텐츠(inode). 당신이 그것을 할 수있는-inum
옵션을 찾을 명령은 아래와 같이
# find / -inum 517333/home/bobbin/sync.sh/root/synchro
이와 함께,당신은 알 수 있는 파일 이름 지점 데이터 정보,검색의 모든 하드 링크에 상대적으로 특정 아이노드 번호
리눅스 운영 파일의 관계는 inode
의 대부분은 작업(예:복사본) 에서 수행한 소프트 링크에 영향을 미칠 것입니다 실제 연결된 파일의 예외(rm 또는 mv 명령을 제거합니다(또는 이동)청 링크체)
여기에 몇 가지 파일의 작업에서는 inode 재생 중요한 역할:
니다. 파일 복사
파일을 복사하면 새로운 inode 가있는 새 파일이 생성됩니다.
# cp myfile ..
# ls -li myfile ../myfile2501 -rw------- 1 raghu raghu 36 Jun 25 20:12 myfile3746 -rw------- 1 raghu raghu 36 Jan 11 12:05 ../myfile
b. 이동 파일
이동할 경우 파일시스템에서,mv 명령어로 진행됩 cp 위의 명령을 제외하고,원본 파일에서 제거됩니다. 하지만 이동하는 경우 내에서 파일시스템,아이노드 변경되지는 않지만 디렉토리핑의 아이노드이 변경되면,실제 데이터 하드 디스크에서(내용물의 파일)를 이동하지 않습니다.
# ls -li samplefile.txt2497 -rw------- 1 raghu raghu 22 Jun 25 20:12 samplefile.txt
이제 파일을 이동 및 결과를 확인
# mv samplefile.txt ..
# ls -li ../samplefile.txt2497 -rw------- 1 raghu raghu 22 Jun 25 20:12 ../samplefile.txt
c. 파일을 제거
경우 rm 명령을 실행하고,먼저 확인 링크를 수의 파일입니다. 링크 수가1
보다 크면 해당 디렉토리 항목을 제거하고 링크 수를 줄입니다. 여전히 데이터가 있으며 inode 도 영향을받지 않습니다. 을 때 링크를 계산은1
,아이노드에서 삭제된 inode 테이블,아이노드 번호가 무료로,데이터 블록에는 이 파일을 점유하고 추가되어 무료 데이터 블록 목록입니다.
# ls -li myfile myfile.hardlink2501 -rw------- 2 raghu raghu 36 Jun 25 2012 myfile2501 -rw------- 2 raghu raghu 36 Jun 25 2012 myfile.hardlink
의 파일을 삭제하고 그 결과를 확인합
# rm myfile.hardlink
# ls -li myfile2501 -rw------- 1 raghu raghu 36 Jun 25 2012 myfile
당신이 볼 수있는 아이 노드이 감소합니다.