Linux inode는 운영 체제에서 파일을 식별하는 데 사용되는 특성 설명입니다. Linux 시스템은 각 파일에 inode 번호를 할당하며 이 번호는 파일과 관련된 일부 메타 정보를 고유하게 사용할 수 있습니다. 파일을 식별합니다.
이 튜토리얼의 운영 환경: linux5.9.8 시스템, Dell G3 컴퓨터.
리눅스 inode란 무엇인가요?
Linux 운영 체제의 inode를 이해하기 위해 먼저 Linux 운영 체제의 파일에 대해 이야기해 보겠습니다. Linux 운영 체제의 경우 [모든 것이 파일입니다]. 파일은 저장 매체(여기서는 물리적 디스크, 메모리, 플래시 메모리 등을 나타냄)와 독립적으로 존재할 수 없습니다. 모든 운영 체제의 파일은 항상 저장 매체를 처리합니다.
예를 들어 파일을 읽을 때 파일을 디스크에서 메모리로 로드해야 합니다. 파일 작업이 완료되면 파일이 디스크에 저장됩니다. 글쎄요, 파일을 디스크에 저장해야 하는데, 디스크의 용량 제한이 있다는 것은 디스크에 저장할 수 있는 물리적 파일의 개수가 제한되어 있다는 뜻입니다.
이 관점을 이해하셨다면 축하합니다. 일반적으로 inode가 무엇을 하는지 아실 것입니다.
네, 아이노드는 운영 체제에서 파일을 식별하는 데 사용되는 특징적인 설명이며, 운영 체제의 아이노드는 끝이 없습니다. 일반적으로 운영 체제를 설치한 후에는 시스템의 아이노드 수가 결정됩니다(단, inode 수를 동적으로 수정할 수 있습니다.
sysctl -a를 통해 시스템의 inode 수를 쿼리할 수 있습니다.
[root@server ~]# sysctl -a | grep inode fs.inode-nr = 70212 21785
위와 같이 fs.inode-nr의 70212는 현재 운영 체제에서 할당된 inode 수를 식별하며, 21785는 이전 운영 체제에 남아 있는 사용 가능한 inode 수를 나타냅니다.
방금 말했듯이 inode는 사용되는 기능입니다. 파일을 식별하는 이유는 무엇입니까?
Linux 시스템은 각 파일에 inode 번호를 할당합니다. 이 번호는 파일과 관련된 일부 메타 정보를 기록하는 데 사용됩니다.
ls -i
[root@server ~]# ls -i logrotate.man 8986710 logrotate.man
를 통해 모든 파일의 inode 번호를 볼 수 있으며, 파일의 메타 정보를 보려면 stat {filename}
[root@server ~]# stat logrotate.man 文件:"logrotate.man" 大小:18033 块:40 IO 块:4096 普通文件 设备:fd00h/64768d Inode:8986710 硬链接:1 权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root) 环境:unconfined_u:object_r:admin_home_t:s0 最近访问:2021-11-25 03:20:39.497330998 -0500 最近更改:2021-11-24 04:38:17.781399647 -0500 最近改动:2021-11-24 04:38:17.797398907 -0500 创建时间:-
위와 같이 파일의 inode 정보를 사용해야 합니다. . 여기에는 다음이 포함됩니다.
크기: 18033: 파일의 바이트 수. 이 파일이 차지하는 디스크 공간은 18033 Bytes
Block: 40: 사용된 블록(데이터 블록)입니다. 이 파일은 40개의 물리적 블록을 사용합니다.
권한: (0644/-rw-r--r--) Uid: (0/ root) Gid: (0/ root): 파일 권한 및 그룹 정보. 이 파일은 권한 0644가 있는 일반 파일입니다. 사용자와 그룹 모두 루트
마지막 방문: 2021-11-25 03:20:39.497330998 -0500: 즉, atime(파일에 마지막으로 액세스한 시간)
최신 변경 : 2021-11-24 04:38:17.781399647 -0500 : mtime (파일이 마지막으로 수정된 시간)
최신 변경 : 2021-11-24 04:38:17.797398907 -0500 : ctime (파일(권한, 그룹)이 마지막으로 변경되었을 때)
사실 방금 전달한 logrotate.man 통계에는 필드 하드 링크도 포함되어 있습니다: 1.
inode 정보에 하드링크가 나타나는 이유는 무엇인가요?
일반적으로 운영 체제에서는 하나의 파일이 하나의 inode에 해당하지만 하드 링크 파일에는 이 규칙이 적용되지 않습니다. Linux 운영 체제에서는 여러 파일이 동일한 inode 번호를 가리킬 수 있기 때문입니다.
하드 링크 시나리오에서는 다른 파일 이름을 사용하여 동일한 파일의 내용에 액세스할 수 있으며, 파일 내용, 속성 등에 대한 수정 사항이 다른 파일로 전송됩니다. 그러나 링크된 파일을 삭제해도 다른 파일에 대한 액세스에는 영향을 미치지 않습니다.
예를 들어 logrotate.man이라는 하드링크 파일을 생성해 보세요
[root@server ~]# ln logrotate.man logrotate.man.1 [root@server ~]# ls -i logrotate.man* 8986710 logrotate.man 8986710 logrotate.man.1 # 可以看到,建立了硬链接的文件共用了同一个 inode 编号 [root@server ~]# stat logrotate.man 文件:"logrotate.man" 大小:18033 块:40 IO 块:4096 普通文件 设备:fd00h/64768d Inode:8986710 硬链接:2 权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root) 环境:unconfined_u:object_r:admin_home_t:s0 最近访问:2021-11-25 03:20:39.497330998 -0500 最近更改:2021-11-24 04:38:17.781399647 -0500 最近改动:2021-12-05 01:22:05.716611059 -0500 创建时间:-
하드링크를 설정한 후 stat를 보면 하드링크 개수가 2개가 되었음을 알 수 있습니다.
이때, 원본 링크 파일을 삭제하고 링크된 파일의 내용을 봅니다
[root@server ~]# rm -rf logrotate.man [root@server ~]# tail -n 1 logrotate.man.1 Linux Wed Nov 5 2002 LOGROTATE(8) [root@server ~]# stat logrotate.man.1 文件:"logrotate.man.1" 大小:18033 块:40 IO 块:4096 普通文件 设备:fd00h/64768d Inode:8986710 硬链接:1 权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root) 环境:unconfined_u:object_r:admin_home_t:s0 最近访问:2021-12-05 01:25:50.701384256 -0500 最近更改:2021-11-24 04:38:17.781399647 -0500 最近改动:2021-12-05 01:25:41.544800473 -0500 创建时间:-
하드 링크의 원본 파일을 삭제한 후, 링크된 파일의 내용을 성공적으로 읽을 수 있습니다. 하드 링크의 수가 다시 1이 됩니다.
이런 상황이 발생하는 이유는 하드 링크가 실제로 파일에 인덱스를 추가하고 이 인덱스가 파일의 inode 번호를 가리키기 때문입니다. 하드 링크 수가 1보다 크면 파일 자체에 하드 링크가 여러 개 있다는 의미입니다. 하드 링크 수가 0이 되면 운영 체제에는 더 이상 inode를 가리키는 파일이 없습니다. 즉, 운영 체제는 inode를 재활용합니다.
실제로 파일이 삭제될 때마다 파일에 대한 하드 링크 수가 하나씩 줄어듭니다. 파일의 하드 링크 수가 0에 도달하면 운영 체제에서 해당 파일을 완전히 지웁니다.
마지막으로 정상적인 상황에서는 운영 체제에서 할당한 inode 수는 완전히 충분하지만 일부 프로그램이나 사람의 사고로 인해 운영 체제의 inode가 오버플로될 수 있습니다. df -ih를 사용하면 시스템 아래의 inode를 볼 수 있습니다. 적시에 대응 조치를 취하기 위해 파티션을 사용합니다.
[root@server ~]# df -ih 文件系统 Inode 已用(I) 可用(I) 已用(I)% 挂载点 devtmpfs 121K 390 121K 1% /dev tmpfs 124K 1 124K 1% /dev/shm tmpfs 124K 522 124K 1% /run tmpfs 124K 16 124K 1% /sys/fs/cgroup /dev/mapper/centos-root 4.0M 129K 3.9M 4% / /dev/vda1 512K 332 512K 1% /boot tmpfs 124K 1 124K 1% /run/user/0
추천 학습: "linux 비디오 튜토리얼"
위 내용은 리눅스 아이노드란 무엇인가의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!