Background
<code style="margin-right: 0.15em;margin-left: 0.15em;padding-right: 0.3em;padding-left: 0.3em;font-size: 0.85em;font-family: Consolas, Inconsolata, Courier, monospace;white-space: pre-wrap;border-width: 1px;border-style: solid;border-color: rgb(234, 234, 234);background-color: rgb(248, 248, 248);border-radius: 3px;display: inline;"><span style="font-size: 15px;">df</span>
df 명령을 사용하여 디스크 사용량을 확인했는데 디스크가 꽉 찼음을 확인했습니다. -bash-4.2$ df -ThFilesystem Type Size Used Avail Use% Mounted on/dev/vda1 ext4 30G 30G 0 100% /devtmpfs devtmpfs 489M 0 489M 0% /devtmpfs tmpfs 497M 0 497M 0% /dev/shmtmpfs tmpfs 497M 50M 447M 11% /runtmpfs tmpfs 497M 0 497M 0% /sys/fs/cgroup
2. du 명령을 실행하여 각 디렉토리의 디스크 사용량을 확인하고, 각 디렉토리의 파일 크기를 합산하여 디스크가 비어 있고, 공간이 10G 이상임을 확인합니다. 설명할 수 없을 정도로 누락되었습니다.
-bash-4.2$ du -h --max-depth=1 /home16M /home/logs11G /home/serverdog11G /home
🎜
<span style="font-size: 15px;">lsof</span>
命令显示打开已删除的文件。将有问题的进程重启(或,清空),磁盘空间就会得到释放。-bash-4.2# lsof | grep deletemysqld 2470 mysql 4u REG 253,1 0 523577 /var/tmp/ibfTeQFn (deleted)mysqld 2470 mysql 5u REG 253,1 0 523579 /var/tmp/ibaHcIdW (deleted)mysqld 2470 mysql 6u REG 253,1 0 523581 /var/tmp/ibLjiALu (deleted)mysqld 2470 mysql 7u REG 253,1 0 523585 /var/tmp/ibCFnzTB (deleted)mysqld 2470 mysql 11u REG 253,1 0 523587 /var/tmp/ibCjuqva (deleted)
什么是虚拟文件系统(VFS:virtual filesystem)?
什么是通用文件模型?
超级块对象(superblock object)
索引节点对象(inode object)
文件对象(file object)
目录项对象(dentry object)
文件的概念
文件的表达
内存表达
磁盘表达
目录树的构建
소프트 링크와 하드 링크
파일 및 디스크 관리
색인 상태
파일 및 프로세스 관리
-
작업:
열기 및 삭제
가상 파일 시스템
공통 파일 모델
슈퍼블록 객체
메모리: 파일 시스템이 설치될 때 생성되며, 파일 시스템에 대한 관련 정보를 저장합니다.
디스크: 슈퍼블록에 저장된 정보에 해당합니다. disk 파일 시스템 제어 블록(filesystem control block)
Inode 객체(inode 객체)
Memory : 접근 시 생성, 특정 파일에 대한 일반 정보를 저장(
inode 结构
)
Disk : 디스크의 저장소에 해당 파일 제어
각 inode 객체에는 파일 시스템의 파일을 고유하게 식별하는 inode 번호가 있습니다
파일 객체(file object)
Memory: 파일이 열릴 때 생성되며, 열린 파일과 프로세스 간의 상호 작용에 대한 정보를 저장합니다(
파일 구조) <code style="margin-right: 0.15em;margin-left: 0.15em;padding-right: 0.3em;padding-left: 0.3em;font-size: 0.85em;font-family: Consolas, Inconsolata, Courier, monospace;white-space: pre-wrap;border-width: 1px;border-style: solid;border-color: rgb(234, 234, 234);background-color: rgb(248, 248, 248);border-radius: 3px;display: inline;">file 结构
)
打开文件信息,仅当进程访问文件期间存在于内核内存中。
目录项对象(dentry object)
内存:目录项一旦被读入内存,VFS就会将其转换成
dentry 结构
열린 파일 정보는 프로세스가 파일에 접근하는 동안에만 커널 메모리에 존재합니다.
Dentry 객체
Memory: 디렉토리 항목이 메모리로 읽혀지면 VFS는 이를 덴트리 구조
디렉토리 항목 개체 디스크: 특정 파일 시스템은 특정 방식으로 디스크에 저장됩니다.
start_kernel vfs_caches_init mnt_init init_rootfs // 注册rootfs文件系统 init_mount_tree // 挂载rootfs文件系统 … rest_init kernel_thread(kernel_init, NULL, CLONE_FS);
软链接 vs 硬链接
<span style="font-size: 15px;color: rgb(68, 68, 68);">i_nlink</span>
字段为零时,说明没有硬链接指向该文件。文件 & 进程管理
* "in_use" - valid inode, i_count > 0, i_nlink > 0* "dirty" - as "in_use" but also dirty* "unused" - valid inode, i_count = 0
<code style="margin-right: 0.15em;margin-left: 0.15em;padding-right: 0.3em;padding-left: 0.3em;font-size: 0.85em;font-family: Consolas, Inconsolata, Courier, monospace;white-space: pre-wrap;border-width: 1px;border-style: solid;border-color: rgb(234, 234, 234);background-color: rgb(248, 248, 248);border-radius: 3px;display: inline;"><span style="font-size: 15px;">open()</span>
和 <span style="font-size: 15px;">close()</span>
操作建立和销毁文件对象,文件对象通过索引节点提供的 <span style="font-size: 15px;">iget</span>
和 <span style="font-size: 15px;">iput</span>
更新索引节点的i_count字段,以完成使用计数。open 操作使得 i_count 加一, close 操作使得 i_count 减一。在 close 操作时判断索引节点是否释放,如果 i_count = 0,则意味着不再有进程引用,将会从内存释放。文件 & 磁盘管理
文件与磁盘管理联系最紧密的操作,莫过于<span style="font-size: 15px;">touch</span>
和<span style="font-size: 15px;">rm</span>
open() 및
🎜close( )🎜
🎜 작업은 파일 개체를 생성하고 삭제합니다. 파일 개체는 인덱스 노드 🎜🎜iget🎜
🎜 및 🎜 🎜iput🎜
🎜 인덱스 노드의 i_count 필드를 업데이트하여 사용 횟수를 완료합니다. open 연산은 i_count를 1만큼 증가시키고, close 연산은 i_count를 1만큼 감소시킵니다. 닫기 작업 중에 인덱스 노드가 해제되는지 확인합니다. i_count = 0이면 더 이상 프로세스 참조가 없으며 메모리에서 해제된다는 의미입니다. 🎜🎜파일 및 디스크 관리🎜
🎜파일 디스크 관리와 가장 밀접하게 관련된 작업은 🎜🎜touch🎜
🎜 및 🎜🎜rm🎜
🎜 작업, 특히 후자가 가장 중요합니다. strace(또는 dtruss)를 사용하여 rm🎜🎜의 실제 시스템 호출을 확인하세요.
# dtruss rm tmp...geteuid(0x0, 0x0, 0x0) = 0 0ioctl(0x0, 0x4004667A, 0x7FFEE06F09C4) = 0 0lstat64("tmp\0", 0x7FFEE06F0968, 0x0) = 0 0access("tmp\0", 0x2, 0x0) = 0 0unlink("tmp\0", 0x0, 0x0) = 0 0
可以发现 rm 实际是通过 unlink 完成的。unlink代表删除目录项,以及减少其索引节点的计数。由通用文件模型可知,父目录本身同样是一个文件,也就意味着目录项是其文件数据的一部分。删除目录项等价于从父目录的文件中删除数据,也就意味着首先要打开父目录的文件。那么,删除操作即可理解为:
删除命令(一个进程)使用 open 操作获得父目录文件对象
通过
<span style="font-size: 15px;color: rgb(68, 68, 68);">iget</span>
增加 目录文件的索引节点对象计数读取目录文件数据
将目录文件数据转化为目录项对象
由于目录项包含文件的索引节点,类似的,需要通过 iget 增加文件的索引节点对象计数
删除目录的目录项
减少文件索引节点对象的硬链接计数i_nlink
通过
<span style="font-size: 15px;color: rgb(68, 68, 68);">iput</span>
结束对文件索引节点对象的操作,使用计数 i_count 减一判断i_count是否为零,如果为零,则释放内存
然后,判断i_nlink是否为零,如果为零,则释放磁盘空间
通过 iput 结束对目录索引节点对象的操作。
요약
발생한 문제를 되돌아보면 실제로 두 가지 관점에서 이해할 수 있습니다.
인덱스 및 데이터
캐싱 전략
운영 체제는 Write back 전략을 사용하므로 메모리가 먼저 해제되어야만 디스크가 해제될 수 있다는 의미입니다.
왜 lsof인가?
위 내용은 lsof로 시작하여 Linux 가상 파일 시스템에 대한 심층적인 이해를 얻으세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

Linux의 핵심 구성 요소에는 커널, 쉘, 파일 시스템, 프로세스 관리 및 메모리 관리가 포함됩니다. 1) 커널 관리 시스템 리소스, 2) Shell은 사용자 상호 작용 인터페이스를 제공합니다. 3) 파일 시스템은 여러 형식, 4) 프로세스 관리는 Fork 및 5) 메모리 관리를 통해 가상 메모리 기술을 사용하여 구현됩니다.

Linux 시스템의 핵심 구성 요소에는 커널, 파일 시스템 및 사용자 공간이 포함됩니다. 1. 커널은 하드웨어 리소스를 관리하고 기본 서비스를 제공합니다. 2. 파일 시스템은 데이터 저장 및 구성을 담당합니다. 3. 사용자 공간에서 사용자 프로그램 및 서비스를 실행하십시오.

유지 보수 모드는 단일 사용자 모드 또는 구조 모드를 통해 Linux 시스템에 입력 된 특수 작동 수준이며 시스템 유지 관리 및 수리에 사용됩니다. 1. 유지 보수 모드를 입력하고 "sudosystemctlisolaterscue.target"명령을 사용하십시오. 2. 유지 보수 모드에서는 파일 시스템을 확인하고 수리하고 "FSCK/DEV/SDA1"명령을 사용할 수 있습니다. 3. 고급 사용법에는 루트 사용자 비밀번호 재설정, 파일 시스템을 읽기 및 쓰기 모드로 장착하고 비밀번호 파일을 편집하는 것이 포함됩니다.

유지 보수 모드는 시스템 유지 보수 및 수리에 사용되므로 관리자는 단순화 된 환경에서 작업 할 수 있습니다. 1. 시스템 수리 : 손상된 파일 시스템 및 부트 로더 수리. 2. 비밀번호 재설정 : 루트 사용자 비밀번호를 재설정합니다. 3. 패키지 관리 : 소프트웨어 패키지를 설치, 업데이트 또는 삭제합니다. Grub 구성을 수정하거나 특정 키로 유지 보수 모드를 입력하면 유지 보수 작업을 수행 한 후 안전하게 종료 할 수 있습니다.

Linux 네트워크 구성은 다음 단계를 통해 완료 할 수 있습니다. 1. 네트워크 인터페이스 구성 IP 명령을 사용하여 구성 파일 관리 설정을 일시적으로 설정하거나 편집하십시오. 2. 고정 IP가 필요한 장치에 적합한 정적 IP를 설정합니다. 3. 방화벽을 관리하고 IPTables 또는 방화구 도구를 사용하여 네트워크 트래픽을 제어하십시오.

유지 보수 모드는 Linux 시스템 관리에서 중요한 역할을 수행하여 수리, 업그레이드 및 구성 변경을 돕습니다. 1. 유지 보수 모드를 입력하십시오. 그루브 메뉴를 통해 선택하거나 "sudosystemctlisolaterscue.target"명령을 사용할 수 있습니다. 2. 유지 보수 모드에서는 파일 시스템 수리 및 시스템 업데이트 작업을 수행 할 수 있습니다. 3. 고급 사용법에는 루트 비밀번호 재설정과 같은 작업이 포함됩니다. 4. 유지 보수 모드를 입력하거나 파일 시스템을 마운트 할 수없는 것과 같은 일반적인 오류는 Grub 구성을 확인하고 FSCK 명령을 사용하여 수정할 수 있습니다.

Linux 유지 관리 모드 사용 타이밍 및 이유 : 1) 시스템이 시작될 때 2) 주요 시스템 업데이트 또는 업그레이드를 수행 할 때 3) 파일 시스템 유지 관리를 수행 할 때. 유지 보수 모드는 안전하고 제어 된 환경을 제공하여 운영 안전 및 효율성을 보장하고 사용자에게 미치는 영향을 줄이며 시스템 보안을 향상시킵니다.

Linux의 필수 명령에는 다음이 포함됩니다. 1.LS : 목록 디렉토리 내용; 2.CD : 작업 디렉토리 변경; 3.mkdir : 새 디렉토리 생성; 4.RM : 파일 또는 디렉토리 삭제; 5.CP : 파일 또는 디렉토리 복사; 6.mv : 파일 또는 디렉토리를 이동하거나 바꾸십시오. 이러한 명령은 사용자가 커널과 상호 작용하여 파일 및 시스템을 효율적으로 관리하는 데 도움이됩니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

안전한 시험 브라우저
안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전

드림위버 CS6
시각적 웹 개발 도구

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구
