반응형

1. tmpfs

tmpfs는 저장 장치를 대신해 메모리를 사용하는 메모리 기반의 파일 시스템입니다. 이 파일 시스템은 휘발성 파일 시스템으로, tmpfs에 저장된 데이터는 컴퓨터가 꺼지면 모두 사라집니다. 저장 장치에 접근할 필요가 없기 때문에 접근 속도가 매우 빠릅니다.

tmpfs의 주요 특징

  • 기본적인 용도로 tmpfs는 다양한 상황에서 사용됩니다. 예를 들어, 메모리를 효율적으로 관리하기 위해 많이 사용됩니다.
  • mount | grep ^tmpfs 명령어를 사용하면 현재 시스템에 마운트된 tmpfs 정보를 확인할 수 있습니다.
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,size=4096k,nr_inodes=1024,mode=755)

/sys/fs/cgroup은 control group 기능인데요, 프로세스와 자원의 제어 및 관리하는 데 사용됩니다.

 

ro: 읽기 전용으로 마운트됨.

nosuid: 이 파일 시스템에 있는 파일이 set-user-ID와 set-group-ID 비트를 갖는 것을 방지함.

nodev: 이 파일 시스템에서 장치 파일을 사용할 수 없도록 설정함.

noexec: 이 파일 시스템에서 실행 파일을 실행할 수 없도록 설정함.

size=4096k: 파일 시스템의 최대 크기는 4MB로 제한됨.

nr_inodes=1024: 최대 1024개의 inode(파일)를 생성할 수 있도록 제한됨.

mode=755: 디렉토리의 접근 권한이 설정됨 (소유자는 읽기/쓰기/실행, 다른 사용자들은 읽기/실행 가능).

 

tmpfs와 메모리 사용

  • free 명령어에서 shared 필드 값에는 tmpfs에서 실제로 사용된 메모리 용량이 포함됩니다.
  • 예를 들어, free -h 명령어의 결과는 다음과 같습니다.
 
total used free shared buff/cache available 
Mem: 30Gi 659Mi 29Gi 3.0Mi 521Mi 29Gi 
Swap: 8.0Gi 0B 8.0Gi

여기서 shared 값은 tmpfs와 같은 공유 메모리에서 사용된 용량을 나타냅니다.

tmpfs 생성 및 사용 예시

  1. tmpfs 생성
    • 다음 명령어를 사용하여 1GB 크기의 tmpfs를 생성할 수 있습니다.
    • sudo mount -t tmpfs tmpfs /mnt -o size=1G
  2. tmpfs 마운트 확인
    • mount | grep /mnt 명령어로 tmpfs가 제대로 마운트되었는지 확인할 수 있습니다.
    • tmpfs on /mnt type tmpfs (rw,relatime,size=1048576k)
  3. 메모리 사용 확인
    • free -h 명령어를 사용하면 tmpfs로 인해 사용된 메모리 크기를 확인할 수 있습니다.
total used free shared buff/cache available 
Mem: 30Gi 678Mi 29Gi 103Mi 528Mi 29Gi 
Swap: 8.0Gi 0B 8.0Gi

 

추가 실습 : tmpfs에 데이터 기록

  • dd 명령어를 사용하여 tmpfs에 파일을 기록하면 shared 값이 증가합니다.
    sudo dd if=/dev/zero of=/mnt/testfile bs=100M count=1
  • 이후 free -h 명령어로 메모리 사용 상태를 확인하면 다음과 같이 shared 필드의 값이 증가한 것을 볼 수 있습니다.
    total used free shared buff/cache available Mem: 30Gi 687Mi 29Gi 103Mi 628Mi 29Gi Swap: 8.0Gi 0B 8.0Gi

     

    그럼 count를 10회로 설정한다면 어떻게 될까요?

    1G로 설정해놨으나 1003M로 1024M 이내이므로 에러가 나지 않습니다.

    11회부터 에러가 나는 형태입니다.

tmpfs는 메모리를 활용한 파일 시스템으로, 저장 장치에 접근할 필요 없이 빠르게 데이터를 처리할 수 있습니다.

단, 컴퓨터가 꺼지면 데이터가 사라지기 때문에 주로 일시적인 데이터 저장이나 캐시용으로 많이 사용됩니다!

 

2. procfs, sysfs

procfssysfs는 리눅스 시스템에서 중요한 역할을 하는 가상 파일 시스템입니다.

이 파일 시스템들은 실제로 디스크에 저장된 파일이 아니라, 커널 메모리에 존재하는 정보를 파일 형식으로 표현하는 방식입니다.

procfs: 프로세스 정보 관리 파일 시스템

  • procfs는 시스템에서 실행 중인 프로세스와 관련된 정보를 얻기 위한 파일 시스템으로, 보통 /proc 디렉터리에 마운트됩니다.
  • 시스템의 다양한 동작 상태와 프로세스 정보를 파일 형태로 제공하며, 이 파일들은 디스크에 존재하는 것이 아니라 커널 메모리에서 동작합니다.

/proc 하위 파일 예시

  1. /proc/cpuinfo: 시스템 CPU 관련 정보
  2. /proc/diskstat: 저장 장치 관련 정보
  3. /proc/meminfo: 시스템 메모리 관련 정보
  4. /proc/sys/: 커널의 튜닝 파라미터 (sysctl 명령어와 1:1로 매칭)

/proc/<pid> 하위 파일 예시

  • /proc/<pid>/maps: 해당 프로세스의 메모리 맵
  • /proc/<pid>/cmdline: 프로세스 실행 명령어
  • /proc/<pid>/stat: 프로세스 상태, 우선순위, 사용 메모리 등

예시 명령어

  • 현재 실행 중인 셸의 프로세스 정보 확인
     
    cat /proc/$$/cmdline

sysfs: 커널 관련 정보 관리 파일 시스템

  • sysfs는 procfs 외에도 커널이 관리하는 시스템 하드웨어와 관련된 정보들을 제공하는 파일 시스템입니다.
    보통 /sys 디렉터리에 마운트됩니다.
  • sysfs는 시스템의 블록 장치, 네트워크 인터페이스, 커널 모듈과 같은 다양한 하드웨어 정보를 제공합니다.

/sys 하위 파일 예시

  1. /sys/block/: 각 블록 장치에 대한 정보
  2. /sys/class/: 장치 정보를 클래스별로 구분해 제공
  3. /sys/module/: 커널 모듈 관련 파라미터 및 정보

procfs와 sysfs의 차이점

  • procfs는 주로 프로세스와 시스템의 런타임 정보를 제공하며, 커널이 직접 관리하는 메모리 공간에서 동작합니다.
  • sysfs는 하드웨어와 관련된 정보들을 관리하며, procfs가 아닌 커널 관련 정보를 제공할 때 사용됩니다.

이 두 파일 시스템은 시스템 상태를 모니터링하고 하드웨어와 관련된 정보를 얻는 데 필수적인 역할을 하며, 다양한 명령어를 통해 유용하게 활용할 수 있습니다.

 

반응형

'IT 기술 > 리눅스' 카테고리의 다른 글

[보안] 리눅스 - 부트로더 보안  (0) 2024.09.10
[리눅스] 기본 명령어  (0) 2024.09.10
[리눅스] NFS, FUSE  (1) 2024.09.10
[리눅스] 파일시스템 #2  (1) 2024.09.10
[리눅스] 파일시스템 #1  (0) 2024.09.10

+ Recent posts