!["mbuffer -T"는 어떻게 작동하나요?](https://linux55.com/image/146301/%22mbuffer%20-T%22%EB%8A%94%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%EC%9E%91%EB%8F%99%ED%95%98%EB%82%98%EC%9A%94%3F.png)
현재 테이프에 백업하고 mbuffer
다음 사이에서 버퍼 역할을 하려고 합니다.
tar --acls -c /var/test | mbuffer -m 8G -P 100% -R 100M | dd of=/dev/nst0 bs=256k
하지만 약 10~20번 정도는 여전히 버퍼가 비어 있습니다. 그래서 다음 명령을 통해 파일 기반 버퍼를 사용하고 싶습니다.
tar --acls -c /var/test | mbuffer -m 60G -T /srv/testbuffer -P 100% -R 100M | dd of=/dev/nst0 bs=256k
제가 이해한 바에 따르면 이 옵션은 -T
주어진 위치에 파일을 생성하고 이를 읽기/쓰기 버퍼로 사용합니다.
그러나 파일이 생성되지 않으며 한 시스템에서는 mbuffer
중단됩니다.
- 내가 뭐 놓친 거 없니?
mbuffer
파일이 특별한 방법으로 생성되었나요 ?mbuffer
다른 디렉토리에 파일을 생성하시겠습니까 ?mbuffer
스왑이 어떤 방식으로 확장/사용됩니까 ?
mbuffer
( )의 소스 코드를 읽어보니 settings.c
비아 크기만큼의 공간이 할당되어 있습니다 mbuffer
.tmpfile
malloc()
이는 인수 없이 사용하는 것처럼 여전히 동일한 양의 RAM이 필요하거나 최소한 스왑이 필요하다는 의미입니까 -T
?
답변1
생성된 파일이 없습니다.
mbuffer -m 60G -T /srv/testbuffer
파일을 생성하고 연 다음 즉시 연결을 해제하세요. 파일 설명자를 확인하면 /proc/<PID of mbuffer>/fd
다음 포인터를 찾을 수 있습니다.
/srv/testbuffer (deleted)
이것은 임시 파일에 대한 상당히 표준적인 트릭입니다. 어떤 이유로든 종료 되면 mbuffer
(잔인하게 종료되더라도) 파일 시스템은 결국 공간을 확보하게 됩니다(최악의 경우 정전 또는 커널 패닉: 그 이후에는 fsck
나중에). 완전히 사용되지 않거나 폐기된 파일은 디스크 공간을 영원히 차지하지 않습니다.
한 시스템에서는
mbuffer
그냥 멈춥니다.
이 도구는 데이터 버퍼링이라는 주요 작업을 시작하기 전에 실제로 디스크 공간을 예약합니다 fallocate
(예를 들어 스파스 파일을 생성하는 것이 아니라) . truncate
대용량 파일을 할당하는 데 시간이 걸릴 수 있습니다. 이 지연은 파일 시스템 유형, 조각화 가능성 등에 따라 달라집니다.
이는 인수 없이 사용하는 것처럼 여전히 동일한 양의 RAM이 필요하거나 최소한 스왑이 필요하다는 의미입니까
-T
?
아니요. 선택한 경로(귀하의 경우)에 적합한 파일 시스템에 파일이 있지만 /srv/testbuffer
경로가 더 이상 존재하지 않습니다. (참고: 경로가 동일한 새 파일은 inode 번호가 다른 별도의 파일이 됩니다.)