English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Linux 시스템의 tempfs와/dev/shm

tmpfs는 Linux/Unix 시스템에서 메모리 기반의 파일 시스템, 즉 tmpfs는 메모리나 swap 구역을 파일 저장에 사용한다.

Linux 커널의 VM 하위 시스템은 백그라운드에서 가상 메모리 자원 Virtual Memory를 관리하는 책임을 진다. 즉 RAM과 swap 자원을 투명하게 RAM 페이지를 교환 구역으로 이동하거나 교환 구역에서 RAM 페이지로 이동시킨다. tmpfs 파일 시스템은 VM 하위 시스템의 페이지를 파일 저장에 사용해야 한다. tmpfs는 이 페이지가 교환 구역이거나 RAM에 있는지 모른다; 이 결정을 내리는 것은 VM 하위 시스템의 일입니다. tmpfs 파일 시스템이 알고 있는 것은 그것이 어떤 형태의 가상 메모리를 사용하고 있다는 것입니다.

tmpfs는 메모리 기반인 데다가 속도가 매우 빠르기 때문에, 또한 tmpfs가 사용하는 VM 자원은 동적으로 동작하며, tmpfs에서 파일을 지우면 파일 시스템 드라이버가 동적으로 파일 시스템을 줄이고 VM 자원을 해제합니다. 물론 파일을 생성할 때도 동적으로 VM 자원을 할당합니다. 또한, tmpfs는 영구적이지 않으며, 재시작 후 데이터는 저장되지 않습니다.

/dev/shm은 tmpfs 기반의 장치로, 일부 Linux 배포판에서 /dev/shm은 /run/shm/ 디렉토리의 소프트 링크. 실제로 많은 시스템에서 /run은 tmpsf로 마운트되었습니다. df -T 시스템에서의 디스크 마운트 상태를 확인할 수 있습니다.:

파일 시스템  1K-블록 사용 가능 사용 가능% 마운트 포인트
udev  1859684 4 1859680 1% /dev
tmpfs  374096 1524 372572 1% /run
/dev/sda8 76561456 36029540 36619724 50% /
none   4 0 4 0% /sys/fs/cgroup
none  5120 0 5120 0% /run/lock
none  1870460 27688 1842772 2% /run/shm
none  102400 56 102344 1% /run/user

그렇다면, 우선 이야기해보겠습니다. /run 디렉토리. 지금까지 알고 있는 것처럼, 이 디렉토리는 메모리 기반입니다. 실제로 그 전신은 /var/run 디렉토리가 /run 디렉토리에 저장합니다. 이는 /var/run 파일 시스템은 시스템이 시작되면 즉시 준비되지 않으며, 이전에 시작된 프로세스는 먼저 자신의 실행 정보를 /dev에서/dev도 tmpfs로 구성되어 있으며, 시스템이 시작되면 즉시 사용할 수 있습니다. 하지만 /dev는 디바이스 파일을 저장하기 위해 설계된 것이 아니라, 프로세스가 실행 중인 정보를 저장하기 위해 설계되지 않았기 때문에, 혼란을 피하기 위해/dev에 저장된 프로세스 정보 파일은 "."로 시작하는 파일로, 모두 숨겨진 폴더입니다. 하지만 그럼에도 불구하고, 폴더의 수가 많아지면서/dev는 점점 더 혼란스러워지고, 따라서 대체 방안이 도입되었습니다. 그것은 /run. 실제로 많은 시스템에서 /var/run 디렉토리는 여전히 존재하지만, 그것은 /run 디렉토리의 소프트 링크.

/var/run 디렉토리에는 시스템이 시작된 이후로 시스템 정보를 설명하는 파일이 주로 저장됩니다. 가장 일반적인 사용은 데몬 프로세스가 자신의 pid를 이 디렉토리에 저장하는 것입니다.:

/dev/shm/ Shared memory 라는 의미의 Linux에서 매우 유용한 디렉토리입니다. 그것은 공유 메모리라는 의미입니다. 메모리에 있기 때문에 모든 시스템 프로세스가 이 디렉토리를 공유할 수 있습니다. 기본적으로 크기는 메모리의 반으로 설정되어 있습니다. 크기를 변경하려면 mount를 사용하여 관리할 수 있습니다.:

mount -o size=4000M -o nr_inodes=1000000 -o noatime, nodiratime -o remount /dev/shm

영구적으로 적용하려면, /etc/fstab 파일:

tmpfs /dev/shm tmpfs 기본값, size=4G 0 0

이를 통해 /dev/shm은 여러 가지 일을 할 수 있습니다. 여기서 Python의 한 가지 응용 사례를 설명하겠습니다. Python으로 데이터 처리를 할 때, numpy를 사용할 수 있습니다. 데이터 처리를 할 때의 데이터량은 일반적으로 큽니다. 여러 프로세스가 동일한 데이터를 사용해야 할 때 /dev/shm이 사용되는 경우, 즉 공유 메모리 기술을 사용하는 경우입니다. Python은 여러 프로세스 간에 numpy 배열을 공유할 수 있는 제3자 라이브러리인 SharedArray를 제공합니다. SharedArray는 /dev/shm을 사용하며 POSIX 표준을 따르며, 여러 플랫폼과 호환됩니다.

정리

이것이 본 문서의 모든 내용입니다. 본 교본의 내용이 여러분의 학습이나 업무에 도움이 되길 바랍니다. 궁금한 점이 있으면 댓글을 남겨 주세요. 감사합니다.

성명: 본 문서의 내용은 인터넷에서 가져왔으며, 저작권은 원저자에게 있으며, 인터넷 사용자가 자발적으로 기여하고 업로드한 내용입니다. 본 웹사이트는 소유권을 가지지 않으며, 인공적인 편집을 하지 않았으며, 관련 법적 책임도 부담하지 않습니다. 저작권 침해가 의심되는 내용이 있으면 이메일을 보내주시기 바랍니다: notice#oldtoolbag.com에 이메일을 보내서 #을 @으로 변경하고, 관련 증거를 제공하시면, 해당 내용이 확인되면 즉시 해당 내용을 삭제하겠습니다.