Linux RAM/TMP, FS의 남은 공간

Linux RAM/TMP, FS의 남은 공간

최근에 저는 Parted Magic Live CD를 실행할 때 발생하는 많은 특이한 현상이 RAM 기반 파일 시스템의 공간 부족으로 인해 발생한다고 믿게 되었습니다. 즉, 다음과 같습니다.

  • 폴더 내용이 사라졌다가 나중에 다시 나타납니다.
  • Mount-gtk마운트된 개별 드라이브 표시 안 함/제거 허용(bash mount명령이 정상적으로 실행 중인 경우)
  • Firefox가 정지된 후 GUI가 정지되는 것처럼 보입니다.
  • 브라우저를 완전히 닫을 때마다 브라우저가 충돌하는 것처럼 내 Firefox 세션이 다시 시작됩니다.
  • 지난 x분 동안의 Firefox 세션 기록이 손실되었습니다.
  • 사운드/클립보드 리디렉션이 간헐적으로 작동하지 않음rdesktop
  • Conky주기적 충돌

...상태 데이터를 저장할 공간이 없다는 SpaceFM의 경고에도 불구하고 아직 공간이 없습니다.그리고이러한 문제 중 일부는 특정 파일을 파일 시스템 밖으로 이동한 후에만 사라집니다.

문제는 (적어도) 파일 ​​시스템 왼쪽에 있는 "공간"에 어떻게 집중해야 할지 잘 모르겠습니다(참고: , 또는 의 출력에는 파티션에 대한 항목이 없습니다) /. m 맞습니다) 파일 시스템 공간은 시스템 메모리와 아무 관련이 없습니다. 모니터링해 왔습니다.) 시작 시 크기를 늘리는 방법은 무엇입니까?dffdisk -lmountconky

돕다?

PS는 이 질문이 다음과 같은 태그로 가장 잘 태그되었다고 생각했습니다.,(또는...어떤 것이 사용되고 있는지 식별하는 방법을 모릅니다) 그리고태그와 비슷하지만 아쉽게도 태그가 없는 것 같습니다. 커뮤니티가 하나 또는 전부를 만들고 싶지 않다면 다른 사람들이 적합하다고 생각하는 다른 태그를 자유롭게 제안하십시오.

답변1

기본적으로 tmpfs 램디스크는 다음을 사용하도록 설정됩니다.최고시스템에서 사용 가능한 RAM의 절반(표준 비PAE 32비트 커널은 VGA 카드와 같은 장치에서 사용하는 주소 공간을 제외하고 최대 4GB까지 주소를 지정할 수 있습니다.)

방금 가상 머신에서 Parted Magic 2013 08 01을 시작하고 4GB RAM을 할당했습니다. Rootfs는 총 2GB이고 약 444KB를 사용하므로 PM은 기본값인 tmpfs를 사용합니다. 1GB의 RAM만 사용하여 VM을 재부팅하면 루트 tmpfs에 504MB만 사용할 수 있습니다. 커널은 일부를 사용하므로 전체 RAM의 절반보다 약간 적습니다.

또한 /tmp 및 /run을 동일한 크기의 tmpfs로 마운트합니다. 이러한 파일 시스템은 추가 공간이 아니며, rootfs 및 실행 중인 프로그램과 동일한 RAM 풀을 사용합니다(즉, 1GB RAM이 있는 시스템에서는 1GB보다 약간 적음).

(그런데 df/etc/mtab을 삭제하고 /proc/mounts에 대한 심볼릭 링크로 교체하기 전까지는 실행되지 않습니다.)

기억해야 할 중요한 점은 tmpfs와 실행 중인 모든 프로그램은 동일한 시스템 메모리를 공유한다는 것입니다. 따라서 tmpfs를 가득 채우면 프로그램을 실행하는 데 사용할 수 있는 RAM의 양이 줄어들고, RAM을 많이 사용하는 프로그램을 실행하면 tmpfs에 사용 가능한 RAM의 양이 줄어듭니다.

당신은 둘 다 하고 있는 것 같습니다. 디스크를 로그 파일로 채우고 있습니다.그리고Firefox, X, rdesktop을 실행 중입니다. 모두 RAM을 많이 사용하는 경향이 있습니다. Unix 시스템은 rootfs가 가득 차면 잘 반응하지 않으며 RAM이 부족해지기 시작하면 Linux 커널의 OOM(메모리 부족) 작업이 일부 RAM을 확보하기 위해 프로세스를 무작위로 종료하기 시작합니다.

이러한 요인 중 어느 하나라도 이상하고 예측할 수 없는 문제를 일으킬 수 있습니다. 이 둘을 결합하면 문제가 불가피해집니다.

다른 사람들이 제안했듯이 저는 이런 방식으로 Live CD(Parted Magic 또는 기타)를 사용하지 말 것을 강력히 권합니다. 그것들은 이것을 위해 설계되지 않았으며 당신이 하고 있는 일은 거의 확실하게 문제를 일으킬 것입니다. 즉, Don't Do That, Then!.

대신 하드 드라이브를 다시 파티션하고 작은 배포판을 설치하고 가상 머신에서 Linux 배포판을 실행하거나 tmpfs를 /root로 사용하지 않고 USB 스틱에 설치 및 실행되는 배포판을 찾으십시오. 즉, USB 스틱을 루트로 사용하십시오. 파일 시스템(이것은 tmpfs에서 실행하는 것보다 훨씬 느립니다. 아니요, 그러한 작업에 대해서는 알지 못합니다). 또는 USB 플래시 드라이브 대신 USB 하드 드라이브를 사용하십시오.

그런데, 시스템의 RAM 용량은 얼마이며, 어떤 버전의 Parted Magic을 실행하고 있습니까?

답변2

conkyParted는 오른쪽 상단 모서리에 있는 작은 "헤드업" 디스플레이(분명히 하나라고 함)에 사용 가능한 메모리를 표시합니다. 따라서 이 정보를 얻는 방법에 대해 생각할 필요조차 없습니다. 이미 표시되어 있기 때문입니다. (사용 가능한 메모리로 인해남은 여유 디스크 공간).

Parted Live CD가 새로운 것을 선사합니다.

또는 블록이나 inode가 부족할 수도 있습니다. 다음을 통해 이 정보를 추론할 수 있습니다 stat.

# stat -f /
   File: "/"
   ID: 0        Namelen: 242    Type: aufs
Block Size: 4096     Fundamental block size: 4096
Blocks: Total: 129061   Free: 127337    Available: 127337
Inodes: Total: 129061   Free: 128101

답변3

저와 다른 사람들이 의견에서 말했듯이 Parted Magic을 정규 분포에 사용해서는 안 됩니다. 정규 분포를 위해 설계된 것이 아니므로 문제가 발생할 수밖에 없습니다.

어쨌든, 실행할 수 있는 여유 공간을 확인하기 위해 dfParted Magic OS 사본을 구입하여 테스트하고 싶지 않았지만 dfUbuntu Live CD를 실행하는 가상 머신의 출력은 다음과 같습니다.

여기에 이미지 설명을 입력하세요.

이들 중 대부분은 RAM에 있는 tmpfs 스타일의 것입니다(어차피 실제로 마운트된 파티션은 아닙니다). df사용량은 여전히 ​​정확하게 보고될 수 있습니다. Parted Magic 아래에 항목이 표시되지 않으면 /난해한 이름을 사용하고 있는 것 같습니다. 또 다른 팁은 작업에 잘못된 도구를 사용하고 있다는 것입니다.

답변4

나는 Debian, Ubuntu, Mint, 어쩌면 Fedora와 같은 라이브 CD/DVD/USB 배포판에서 수년 동안 이 문제를 겪었습니다. Overlayfs(현재 Live Mint/Ubuntu에서 사용하는 fstype) 및 tmpfs에서 사용하는 메모리는 free캐시 메모리(및 /proc/meminfo의 Inactive 항목)와 임시 디스크 읽기 캐시에 숨겨져 있으므로 메모리 양이 얼마나 되는지 불분명합니다. "무료"입니다.

나는 dfoverlayfs와 tmpfs가 사용하는 모든 공간을 더한 다음 에서 시작하여 free오해의 소지가 있는 "여유 메모리" 옆에 해당 숫자를 강조 표시했습니다. 모든 치수는 K 단위입니다.

배포판의 라이브 버전이 이를 지원하지 않으면 dfoverlayfs/tmpfs에 대한 정보를 어디서 찾아야 할지 모르겠습니다. mount, /proc/mounts 및 /etc/mtab은 현재 크기와 달리 최대 크기만 표시하거나 크기가 표시되지 않는 것 같습니다 df.

첫 번째는 overlayfs & tmpfs가 사용하는 공간입니다.

overlayfsused=$( df -t overlayfs --total |tail -n 1|tr -s [:space:]|cut -d " " -f 3 )
tmpfsused=$( df -t tmpfs --total|tail -n 1|tr -s [:space:]|cut -d " " -f 3 )
diskused=$(( overlayfsused + tmpfsused ))

참고로, -t of df는 fs의 유형만 표시하고(두 가지를 하나의 df에 넣을 수 있음) tail은 마지막 총계만 ​​제공하며 tr은 공백을 단일 공간으로 압축하여 자르기가 더 쉽도록 오른쪽을 잘라냅니다. 사이드 필드.

여유 메모리를 얻으려면 free출력을 구문 분석하거나(더 쉬울 수 있음) /proc/meminfo에서 읽을 수 있습니다(시도하고 다음과 같이 입력했습니다).

free=$(grep MemFree < /proc/meminfo |tr -s [:space:]|cut -d " " -f 2)
buffers=$(grep Buffers < /proc/meminfo |tr -s [:space:]|cut -d " " -f 2)
cached=$(grep "^Cached" < /proc/meminfo |tr -s [:space:]|cut -d " " -f 2)

그런 다음 이를 모두 종합하여 conky가 1~2분마다 실행할 수 있는 멋진 스크립트 출력을 가정해 보겠습니다.

realfree=$(( free + buffers + cached - diskused ))
echo "$(( realfree / 1024 )) MiB"

realfree가 100M 미만인 경우 경고 메시지 표시, 임시 파일 삭제, 빨간색 경고 소리 등을 고려할 수도 있습니다.

매일 사용하기 위해 라이브 배포판을 사용하는 경우 Ubuntu(및 기타 많은) 라이브 배포판의 요점은 몇 시간 동안 정기적으로 "일일" 사용하기 위해 배포판을 사용해 보고 마음에 드는지 확인하는 것입니다. 많은 온라인 뱅킹 및 보안 인식 기사에서는 특히 안전한 온라인 뱅킹 등을 위해 라이브 배포판 사용을 권장합니다. 라이브 배포판이 실제로 메모리가 부족할 때를 깨닫지 못한다는 사실은 제가 보기에는 버그인 것 같습니다. $HOME 및 /tmp 둘 다 램을 사용하고 최대 크기가 1/2 램이므로 큰 파일을 $HOME 및 /tmp에 복사하면 Live Mint가 충돌할 수 있습니다. 참고로, 현재 Mint는 아마도 /(overlayfs), /dev(devtmpfs?는 4k만 사용하므로 일반적으로 작다고 가정합니다), /tmp, /run/shm에서 사용하는 메모리의 절반을 가지고 있을 것입니다.

관련 정보