마운트가 실패 할 때 루트 시스템이 가득 차는 것을 방지하는 가장 좋은 방법은 무엇입니까?


16

우리는 내부 웹 서버 (가상화, ReviewBoard를 호스팅하지만 매우 관련성이 없음)를 가지고 있으며 NFS 마운트 실패로 인해 /가 채워지는 비교적 일관된 실패 모드를 가지고 있습니다. 솔루션이 다른 배포판에 의존하는 경우 Distro는 우분투입니다 (구하지 마십시오)는 구현 속도가 느립니다.

/ mnt / backup /으로 백업을 수행 중이며 다른 시스템에 대한 NFS 마운트로 간주됩니다. 불행히도 마운트가 실패하거나 끊어지면 루트 파일 시스템에서 백업이 수행됩니다. 이는 상상할 수 있듯이 /가 가득 찼을 때까지 걸리지 않으며 서비스가 실패하기 시작합니다.

여러 가지 가능한 해결책이 논의되었습니다.

  1. / mnt / backups를 모니터링하고 루트가 아닌지 확인하십시오. 아마도 크론 작업 일 것입니다.

  2. / mnt / protected / backups를 사용하고 작은 파일 시스템에 / protected를 먼저 마운트하십시오. 아마도 로컬 파일에 루프 마운트되어 실패 가능성이 훨씬 낮습니다.

  3. Chmod a-rwx / mnt / backups (루트 파일 시스템 마운트 지점). 보호 된 감독 위에 장착하는 것이 효과가 있을지 확실하지 않습니다.

  4. 마운트 된 트리에서 "백업"이라는 디렉토리를 작성한 다음 "ln-s / mnt / backup / Backups / Backups"소프트 링크를 작성하십시오. 로컬 트리에 하위 디렉토리가 없기 때문에 / mnt / backup을 마운트하지 않으면 백업에 / Backups를 사용할 수 없습니다.

  5. 백업 스크립트에 디렉토리가 올바르게 마운트되었는지 점검하십시오.

이러한 접근 방식, 찬반 양론 또는 사람들이 루트 파일 시스템을 이러한 유형의 불쾌 함으로부터 보호하는 표준 방법으로 사용하는 추가 기술에 대한 피드백에 관심이 있습니다.

답변:


13

5 번-계속하기 전에 백업 스크립트에 테스트하여 디렉토리가 마운트되었는지 확인하십시오. 마운트를 사용할 수 없거나 존재하지 않으면 스크립트가 실패합니다. 또는 백업을 실행하기 전에 물건이 마운트되었는지 확인할 수 있습니다.

mountpoint지정된 디렉토리가 마운트 포인트인지 확인 하는 명령을 시도하십시오 .

mountpoint -q /mnt/backups || mount /mnt/backups


흠, 나는 || echo "/ mnt / backups 마운트에 실패했습니다."2> & 1 또는 아마도 존재합니다. 어쨌든 감사합니다!!!
피터

22

가장 오류가없는 해결책은 마운트 지점을 쓸 수 없도록 만드는 것입니다. 이것이 귀하의 솔루션 # 3입니다. 그러나 수행해야 할 추가 단계가 하나 있습니다. chattr +i /mnt/backups. 권한이 없어도 root는 여전히 디렉토리에 쓸 수 있기 때문입니다. 로 chattr +i(세트 불변 플래그)조차 루트에 쓸 수 있습니다. 마운트가 마운트되면 권한은 로컬 디렉토리가 아닌 원격 디렉토리의 권한이므로 중요하지 않습니다.


1
그것은 매우 깔끔한 트릭입니다- 'chattr'을 사용하는 것을 결코 생각하지 않았습니다
warren

1
모든 마운트 지점에서이 기술을 사용합니다.
3dinfluence

1
나는 encfs퓨즈 파일 시스템으로 이것을 시도했다 . 그것은 오류가 있습니다 :fusermount: user has no write access to mountpoint
CTRL-ALT-delor

이것이 내가 일반적으로 사용하는 솔루션이며, 그것이 받아 들여야 할 답변이라고 생각합니다.
shodanshok

3

ewwhite가 말한 것. 또한 기본 시스템 상태에 대한 추가 모니터링은 나쁜 생각이 아닙니다.

Monit과 같은 것이 남은 공간을 확인할 수 있습니다 . 시스템 모니터링을 완전히보고 싶다면 Nagios를 볼 수 있지만 Monit은 가벼우 며 기본 사항을 수행합니다.

Ubuntu를 사용하고 있기 때문에 Monit은 이미 저장소에 있으므로 "sudo apt-get install monit"을 수행 한 다음 구성 파일을보고 올바른 위치로 경고를 보내고 올바른 서비스를 모니터링하도록 지시 할 수 있습니다. 다음은 간단한 튜토리얼 입니다.


1

다음은 cron 작업으로 실행할 수있는 하나의 라이너입니다. 문제의 마운트가 fstab에 있다고 가정합니다.

if mountpoint -q /mnt ; then : ; else mount /mnt ; fi

0

장기적인 해결책 : 우분투 (RH 중심) 에서이 작업을 수행하는 방법을 모르거나 가치가있는 경우 (단 하나의 기계 만있는 경우) 확실하지 않지만 많은 해 동안 우리에게 효과가 있었던 방법은 별도의 논리를 만드는 것입니다 볼륨, 파일 시스템, 심지어 서버 시스템의 볼륨 그룹. 따라서 표준 관행에 따라 /, / tmp에 대한 LVM 논리 볼륨을 만듭니다. / usr, / usr / local, / opt, / home, / var, 스왑 공간 및 / boot 용 별도 파티션. 이 방법을 사용하면 파일 시스템이 시스템을 채우고 비활성화하기가 더욱 어려워집니다. 실제로이 접근 방식은 / 파일 시스템을 채우는 것이 거의 불가능합니다. 물론 / tmp, / var을 지켜봐야합니다. 데이터를 보관해야하는 경우 완전히 다른 볼륨 그룹을 생성합니다. 이 접근법에는 다른 이점도 있습니다. 파일 시스템을 자유롭게 확장하고, 이동하고, 새로운 시스템을 만드는 등


마운트에 실패한 경우 파일 시스템이 가득 차는 것을 방지하는 솔루션은 더 많은 마운트를 추가하는 것입니까? 뭐?
Patrick
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.