> 운영 및 유지보수 > 리눅스 운영 및 유지 관리 > 리눅스 아이노드란 무엇인가

리눅스 아이노드란 무엇인가

藏色散人
풀어 주다: 2023-04-20 10:18:21
원래의
2799명이 탐색했습니다.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿