Linux가 df에서 차단됨

Linux가 df에서 차단됨

외장 하드 드라이브에 문제가 있습니다. 손상되거나 손상되기 시작하는 것이 걱정됩니다 :S.

내가 사용하는 응용 프로그램에서통계 파일 시스템이 외장 하드 드라이브에 대한 정보를 검색합니다.

const char *mountPoint = "/media/hdd";
struct statfs s;
statfs(mountPoint, &s);

그러나 때때로 응용 프로그램 로그에서 전체 Linux 시스템이 차단되었다는 사실을 발견했습니다(사실 특정 이벤트가 적절한 시간에 등록되지 않았기 때문에). 나는 이러한 "중요한" 순간 중 하나에 "df" 명령을 입력하여 이를 직접 알아차렸습니다. 결과적으로 행이 표시되는 데 몇 초가 걸리는 HDD 파티션을 제외하고 모든 파티션이 올바르게 표시됩니다.

또한 HDD는 다음과 같이 포맷됩니다.NTFS나는 사용하고있다NTFS-3G그것을 운영하기 위해.

...마지막으로 dmesg에서 다음 문제를 발견했습니다.

klogd: page allocation failure: order:0, mode:0x20
CPU: 0 PID: 1660 Comm: klogd Not tainted 3.12.20-smp #6
Hardware name: PhoenixAward 945GS/945GS, BIOS 6.00 PG 02/03/2015
[...]
Call Trace:
[...]
[<f866806e>] e1000_alloc_rx_buffers+0x18e/0x1e0 [e1000e]
[<c1a30387>] ? napi_gro_receive+0x67/0x90
[<f8666200>] e1000_clean_rx_irq+0x220/0x340 [e1000e]
[<f866cc5b>] e1000e_poll+0x7b/0x2e0 [e1000e]
[...]

마운트된 장치 정보를 얻는 비차단 방법이 있는지 궁금합니다. 이 경우 장치의 전체 크기와 여유 디스크 공간 또는 사용된 디스크 공간이 필요합니다.

아마도 이 질문은 "df" 또는 볼륨 데이터 액세스와 엄격하게 관련되어 있지는 않지만 Linux 운영 체제 기능과 더 관련이 있을 수 있습니다.메모리 할당.

어떤 도움이라도 대단히 감사하겠습니다. 미리 감사드립니다.

답변1

장치 매개변수를 추출하고 이를 스레드/프로세스에 할당하는 논리를 작성합니다. 상위 프로세스의 작업자 스레드/프로세스를 모니터링하고 중단된 경우 적절한 시간 초과 후 종료합니다.

관련 정보