시스템 튜토리얼 리눅스 Linux 파일 시스템 작동 방식: 인덱스 노드와 디렉터리 항목의 모든 항목은 파일입니다.

Linux 파일 시스템 작동 방식: 인덱스 노드와 디렉터리 항목의 모든 항목은 파일입니다.

Apr 03, 2024 am 09:16 AM
linux python 표준 라이브러리

Linux 파일 시스템 작동 방식인덱스 노드 및 디렉터리 항목

리눅스의 모든 것은 파일이다. 일반 파일, 디렉터리, 블록 장치, 소켓, 파이프도 통합 파일 시스템을 통해 관리되어야 한다.

Linux는 각 파일에 인덱스 노드와 디렉토리 항목이라는 두 가지 데이터 구조를 할당합니다. 이는 주로 파일의 메타 정보와 디렉토리 구조를 기록하는 데 사용됩니다.

인덱스 노드는 각 파일의 유일한 식별자입니다. 디렉토리 항목은 파일 시스템의 트리 구조를 유지합니다. 이는 간단히 말해서 파일로 이해될 수 있습니다. 여러 이름을 가질 수 있습니다.

하드 링크를 통해 파일에 대해 생성된 별칭은 다른 디렉터리 항목에 해당합니다. 이러한 디렉터리 항목은 기본적으로 여전히 동일한 파일에 연결되어 있으므로 해당 인덱스 노드는 동일합니다.

C 디스크의 가장 작은 단위는 트랙(512B)입니다. 하지만 각각의 읽기 및 쓰기 용량이 너무 작아 효율성이 매우 낮습니다. 따라서 파일 시스템은 연속적인 트랙을 논리 블록으로 구성합니다. 매번 논리 블록은 데이터를 관리하는 최소 단위로 사용됩니다. 4KB는 연속 8트랙으로 구성된다.

두 가지 주의 사항:

linux 文件系统优化_优化文件系统的管理_优化文件系统NTFS的管理

가상 파일 시스템

디렉터리 항목, 인덱스 노드, 논리 블록 및 슈퍼 블록은 Linux 파일 시스템의 네 가지 주요 요소를 구성합니다. 다양한 파일 시스템을 지원하기 위해 Linux는 사용자 프로세스와 파일 시스템 사이에 가상 파일 시스템 VFS라는 구체적인 계층을 도입합니다.

VFS는 모든 파일 시스템에서 지원되는 데이터 구조 및 표준 소켓 세트를 정의합니다.

파일 시스템 I/O

I/O 분류: 버퍼링된 I/O와 버퍼링되지 않은 I/O, 직접 및 간접 I/O, 차단 및 비차단 I/O, 동기 및 비동기 I/O.

优化文件系统NTFS的管理_优化文件系统的管理_linux 文件系统优化

공간이 부족합니다. df가 C 드라이브를 확인해보니 남은 공간이 많이 남아있습니다

파일 데이터뿐만 아니라 인덱스 노드도 C 드라이브의 공간을 차지하지만 다음 명령을 사용하세요.

df-i

C 드라이브에 inode가 부족하고 공간이 충분한 경우 작은 파일이 너무 많아서 발생할 수 있습니다. 이 문제는 작은 파일을 삭제하거나 충분한 인덱스 노드가 있는 다른 C 드라이브에 연결하여 해결할 수 있습니다.

커널은 Slab 메커니즘을 사용하여 디렉토리 항목 및 인덱스 노드의 캐시를 관리합니다. /proc/meminfo는 Slab의 전체 크기만 제공합니다. 각 Slab 캐시에 대해 /proc/slabinfo도 확인해야 합니다.

优化文件系统的管理_优化文件系统NTFS的管理_linux 文件系统优化

스토리지 시스템 I/O 작동 원리:

스토리지 시스템의 I/O는 일반적으로 전체 시스템에서 가장 느린 링크입니다. 따라서 Linux는 다양한 캐싱 메커니즘을 사용하여 I/O 효율성을 최적화합니다. 예를 들어, 파일 액세스 성능을 최적화하기 위해 페이지 캐시, 인덱스 노드 캐시, 디렉토리 엔트리 캐시 등 다양한 캐싱 메커니즘을 사용하여 상위 계층 블록 장치에 대한 직접 호출을 줄입니다. 마찬가지로 블록 장치의 액세스 효율성을 최적화하기 위해 버퍼를 사용하여 블록 장치 데이터를 캐시합니다.

c 드라이브 성능 지표

사용량은 I/O 크기가 아닌 I/O 유무만 고려합니다. 즉, 사용량이 100%일 때 C 드라이브는 여전히 새로운 I/O 요청을 받아들일 수 있습니다

특정 지표를 단독으로 비교할 수는 없지만 데이터베이스의 무작위 읽기-쓰기에서 읽기-쓰기 비율, I/O 유형(임의 또는 연속) 및 I/O 크기를 결합하여 종합적으로 분석해야 합니다. 작은 파일 등 임베디드 Linux를 사용하는 더 많은 시나리오에서 IOPS는 시스템의 전체 성능을 더 잘 반영할 수 있습니다. 멀티미디어와 같이 순차적인 읽기 및 쓰기가 더 많은 시나리오에서는 처리량이 시스템의 전체 성능을 더 잘 반영할 수 있습니다.

优化文件系统的管理_优化文件系统NTFS的管理_linux 文件系统优化

이러한 "미친 로깅" 시나리오가 발생하면 iostat, strace, lsof 및 기타 도구를 사용하여 로깅 프로세스를 찾고 해당 로그 파일을 찾은 다음 애플리케이션 소켓을 통해 로그 수준을 조정하여 문제를 해결할 수 있습니다. 애플리케이션이 로그 수준을 동적으로 조정할 수 없는 경우 구성을 적용하려면 애플리케이션의 구성을 변경하고 애플리케이션을 다시 시작해야 할 수도 있습니다.

strace가 이 프로세스를 추적하지만 쓰기 시스템 호출을 감지하지 못하는 이유는 무엇입니까?

파일 쓰기는 하위 스레드에 의해 수행되므로 모든 strace 추적 프로세스에는 쓰기 시스템 호출이 표시되지 않습니다. pstree를 통해 프로세스의 스레드 정보를 본 다음 strace를 사용하여 strace-fppid를 통해 모든 스레드를 추적할 수 있습니다.

느린 쿼리 분석

top과 iostat는 시스템의 CPU와 C 드라이브 사용량을 분석하여 C 드라이브의 I/O 딜레마를 발견했습니다. 그런 다음 pidstat를 사용하여 문제가 mysqld에 의해 발생했음을 확인했습니다. 그런 다음 strace와 lsof

linux 파일 시스템 최적화

를 사용하여 mysqld가 읽고 있는 파일을 찾았습니다. 동시에 파일명과 경로를 통해 mysqld가 운영하고 있는 데이터베이스와 데이터 테이블을 알아냈다. 이 정보를 토대로 우리는 이것이 인덱스를 사용하지 않아 발생하는 쿼리 속도 저하 문제라는 것을 확인했습니다.

优化文件系统的管理_优化文件系统NTFS的管理_linux 文件系统优化데이터 서비스를 중지하면 IO 문제가 사라집니다. 이유는 무엇입니까?

케이스 애플리케이션에서 접근하는 데이터 테이블은 MyISAM 엔진을 기반으로 하며, MyISAM의 특징은 비디오 메모리에 인덱스만 캐시하고 데이터를 캐시하지 않는다는 점입니다. 따라서 쿼리 문장에서 인덱스를 사용할 수 없는 경우 데이터베이스 파일에서 데이터 테이블을 비디오 메모리로 읽어와 처리해야 합니다.

dataservice는 지속적으로 파일 캐시를 해제하므로 mysql이 C 드라이브 캐시에 의존하지 않게 됩니다.

Redis는 먼저 top과 iostat를 사용해 시스템의 CPU, 메모리, C드라이브 사용량을 분석했는데, 시스템 리소스에 딜레마가 없다는 사실을 발견했습니다. 더 자세히 분석하려면 시스템과 애플리케이션의 작동 방식을 어느 정도 이해해야 합니다. 예를 들어 내일의 경우에는 C 디스크 I/O에 딜레마가 없더라도 Redis의 원칙에 따르면 캐시를 쿼리할 때 C 디스크 I/O 쓰기 작업이 많아지면 안 됩니다. 이러한 사고방식에 따라 우리는 pidstat, strace, lsof 및 nsenter와 같은 일련의 도구를 계속 사용하여 두 가지 잠재적인 문제를 발견했습니다. 하나는 Redis의 불합리한 구성이고 다른 하나는 Python 애플리케이션의 Redis 남용이었습니다. I/O 벤치마크 테스트 도구

fio(flexibleI/OTester)

I/O 성능 최적화

앱 최적화

임의 쓰기를 추가 쓰기로 대체하고, 폴링 비용을 줄이고, I/O 쓰기 속도를 높입니다. 캐시된 I/O를 활용Linux 파일 시스템 최적화, 시스템 캐시를 최대한 활용하여 실제 I/O 수를 늘립니다. . 자체 캐싱을 생성하거나 Redis와 같은 외부 캐싱 시스템을 사용합니다. 이러한 방식으로 캐시된 데이터와 수명 주기는 애플리케이션 내에서 제어될 수 있으며, 다른 한편으로는 캐시를 사용하는 다른 애플리케이션이 자체적으로 미치는 영향도 줄일 수 있습니다. C 표준 라이브러리에서 제공하는 fopen, fread 등의 라이브러리 기능은 표준 라이브러리의 캐시를 활용하여 C 드라이브의 동작을 줄입니다. open, read 등의 시스템 콜을 직접 사용할 경우 운영체제에서 제공하는 페이지 캐시와 버퍼만 사용할 수 있고, 동일한 C 디스크 공간을 자주 읽고 써야 하는 경우에는 사용할 수 있는 라이브러리 기능의 캐시가 없습니다. , 읽기/쓰기 대신 mmap을 사용하여 비디오 메모리의 복사본 수를 줄일 수 있습니다. 동기 쓰기가 필요한 시나리오에서는 각 요청을 C 드라이브에 동기적으로 쓰는 대신 쓰기 요청을 병합해 보세요. O_SYNC 대신 fsync()를 사용하여 여러 응용 프로그램에서 동일한 파일을 공유할 수 있습니다. c 드라이브에서 Linux 메모리 관리를 사용할 때 응용 프로그램이 I/O를 완전히 차지하지 않도록 하려면 다음을 사용하는 것이 좋습니다. cgroup의 I/O 하위 시스템을 사용하여 프로세스/프로세스 그룹의 IOPS 및 처리량을 제한할 수 있습니다. CFQ 스케줄러를 사용할 때 ionice를 사용하여 프로세스의 I/O 예약 우선 순위를 조정하고 특히 I/O 우선 순위를 향상시킬 수 있습니다. 핵심 애플리케이션의 ionice는 Idle, Best-effort 및 Realtime의 세 가지 우선 순위 클래스를 지원합니다. 그 중 Best-effort와 Realtime도 각각 0부터 7까지의 레벨을 지원하며, 값이 작을수록 우선순위가 높습니다.

위 내용은 Linux 파일 시스템 작동 방식: 인덱스 노드와 디렉터리 항목의 모든 항목은 파일입니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Centos와 Ubuntu의 차이 Centos와 Ubuntu의 차이 Apr 14, 2025 pm 09:09 PM

Centos와 Ubuntu의 주요 차이점은 다음과 같습니다. Origin (Centos는 Red Hat, Enterprise의 경우, Ubuntu는 Debian에서 시작하여 개인의 경우), 패키지 관리 (Centos는 안정성에 중점을 둡니다. Ubuntu는 APT를 사용하여 APT를 사용합니다), 지원주기 (Ubuntu는 5 년 동안 LTS 지원을 제공합니다), 커뮤니티에 중점을 둔다 (Centos Conciors on ubuntu). 튜토리얼 및 문서), 사용 (Centos는 서버에 편향되어 있으며 Ubuntu는 서버 및 데스크탑에 적합), 다른 차이점에는 설치 단순성 (Centos는 얇음)이 포함됩니다.

PHP 및 Python : 코드 예제 및 비교 PHP 및 Python : 코드 예제 및 비교 Apr 15, 2025 am 12:07 AM

PHP와 Python은 고유 한 장점과 단점이 있으며 선택은 프로젝트 요구와 개인 선호도에 달려 있습니다. 1.PHP는 대규모 웹 애플리케이션의 빠른 개발 및 유지 보수에 적합합니다. 2. Python은 데이터 과학 및 기계 학습 분야를 지배합니다.

Docker 원리에 대한 자세한 설명 Docker 원리에 대한 자세한 설명 Apr 14, 2025 pm 11:57 PM

Docker는 Linux 커널 기능을 사용하여 효율적이고 고립 된 응용 프로그램 실행 환경을 제공합니다. 작동 원리는 다음과 같습니다. 1. 거울은 읽기 전용 템플릿으로 사용되며, 여기에는 응용 프로그램을 실행하는 데 필요한 모든 것을 포함합니다. 2. Union 파일 시스템 (Unionfs)은 여러 파일 시스템을 스택하고 차이점 만 저장하고 공간을 절약하고 속도를 높입니다. 3. 데몬은 거울과 컨테이너를 관리하고 클라이언트는 상호 작용을 위해 사용합니다. 4. 네임 스페이스 및 CGroup은 컨테이너 격리 및 자원 제한을 구현합니다. 5. 다중 네트워크 모드는 컨테이너 상호 연결을 지원합니다. 이러한 핵심 개념을 이해 함으로써만 Docker를 더 잘 활용할 수 있습니다.

Docker Desktop을 사용하는 방법 Docker Desktop을 사용하는 방법 Apr 15, 2025 am 11:45 AM

Docker Desktop을 사용하는 방법? Docker Desktop은 로컬 머신에서 Docker 컨테이너를 실행하는 도구입니다. 사용 단계는 다음과 같습니다. 1. Docker Desktop 설치; 2. Docker Desktop을 시작하십시오. 3. Docker 이미지를 만듭니다 (Dockerfile 사용); 4. Docker Image 빌드 (Docker 빌드 사용); 5. 도커 컨테이너를 실행하십시오 (Docker Run 사용).

Centos 후해야 할 일은 유지 보수를 중단합니다 Centos 후해야 할 일은 유지 보수를 중단합니다 Apr 14, 2025 pm 08:48 PM

Centos가 중단 된 후 사용자는 다음과 같은 조치를 취할 수 있습니다. Almalinux, Rocky Linux 및 Centos 스트림과 같은 호환되는 분포를 선택하십시오. Red Hat Enterprise Linux, Oracle Linux와 같은 상업 분포로 마이그레이션합니다. Centos 9 Stream : 롤링 분포로 업그레이드하여 최신 기술을 제공합니다. Ubuntu, Debian과 같은 다른 Linux 배포판을 선택하십시오. 컨테이너, 가상 머신 또는 클라우드 플랫폼과 같은 다른 옵션을 평가하십시오.

Python vs. JavaScript : 커뮤니티, 라이브러리 및 리소스 Python vs. JavaScript : 커뮤니티, 라이브러리 및 리소스 Apr 15, 2025 am 12:16 AM

Python과 JavaScript는 커뮤니티, 라이브러리 및 리소스 측면에서 고유 한 장점과 단점이 있습니다. 1) Python 커뮤니티는 친절하고 초보자에게 적합하지만 프론트 엔드 개발 리소스는 JavaScript만큼 풍부하지 않습니다. 2) Python은 데이터 과학 및 기계 학습 라이브러리에서 강력하며 JavaScript는 프론트 엔드 개발 라이브러리 및 프레임 워크에서 더 좋습니다. 3) 둘 다 풍부한 학습 리소스를 가지고 있지만 Python은 공식 문서로 시작하는 데 적합하지만 JavaScript는 MDNWebDocs에서 더 좋습니다. 선택은 프로젝트 요구와 개인적인 이익을 기반으로해야합니다.

Centos를 설치하는 방법 Centos를 설치하는 방법 Apr 14, 2025 pm 09:03 PM

CentOS 설치 단계 : ISO 이미지를 다운로드하고 부팅 가능한 미디어를 실행하십시오. 부팅하고 설치 소스를 선택하십시오. 언어 및 키보드 레이아웃을 선택하십시오. 네트워크 구성; 하드 디스크를 분할; 시스템 시계를 설정하십시오. 루트 사용자를 만듭니다. 소프트웨어 패키지를 선택하십시오. 설치를 시작하십시오. 설치가 완료된 후 하드 디스크에서 다시 시작하고 부팅하십시오.

Docker는 MacVlan을 사용합니다 Docker는 MacVlan을 사용합니다 Apr 15, 2025 am 06:57 AM

Docker의 MacVlan은 컨테이너가 자체 MAC 주소를 가질 수 있도록하는 Linux 커널 모듈로 네트워크 격리, 성능 향상 및 실제 네트워크와의 직접 상호 작용을 가능하게합니다. MacVlan 사용은 다음과 같습니다. 1. 커널 모듈을 설치하십시오. 2. MacVlan 네트워크를 만듭니다. 3. IP 주소 세그먼트 할당; 4. 컨테이너 생성시 MacVlan 네트워크를 지정하십시오. 5. 연결을 확인하십시오.

See all articles