파일 시스템이 nfs에 마운트된 경우 Linux를 사용하여 파일 시스템의 실제 블록 크기 정보에 어떻게 액세스할 수 있습니까?

파일 시스템이 nfs에 마운트된 경우 Linux를 사용하여 파일 시스템의 실제 블록 크기 정보에 어떻게 액세스할 수 있습니까?

Centos 6.5 및 Solaris 5 시스템이 있습니다. statvfs의 f_frsize 멤버에서 파일 시스템 블록 크기에 대한 정보를 얻으려고 합니다. 처음에는 Centos에서 시도했지만 파일 시스템을 nfs에 마운트하면 32768 또는 65536과 같은 값을 얻습니다. 이 값은 블록 크기가 아닌 nfs 블록 크기라고 생각합니다.

Sun Solaris에서 동일한 nfs 파일 시스템에 대한 블록 크기 정보를 얻으려고 하면 1024와 같은 값을 얻습니다.

그렇다면 Solaris와 Linux에서 statvfs를 호출할 때 왜 블록 크기(f_frsize)가 다르게 나타나는 걸까요?

이 nfs 블록 크기 대신 nfs 파일 시스템의 f_frsize 정보를 얻는 방법이 있습니까? 내가 원하는 것이 가능한지는 모르겠지만 이에 대해 더 알고 싶습니다.

감사해요

답변1

내 문제에 대한 해결책을 찾았습니다. 이것은 단순히 수학 문제입니다! 숫자가 달라도 동일한 결과가 나올 수 있습니다. 따라서 f_frsize 멤버는 Linux와 Solaris 간에 서로 다른 값을 갖습니다. 그러나 두 운영 체제 모두에서 f_frsize를 사용하여 블록을 바이트로 변환할 때 공식은 다음에서 가져오기 때문에 중요하지 않습니다.여기:

static unsigned long kscale(unsigned long b, unsigned long bs)
{
     return (b * (unsigned long long) bs + 1024/2) / 1024;
}

두 운영 체제 모두에서 df 명령을 사용하면 동일한 결과를 얻습니다. 따라서 실제 질문은 없습니다. 단지 내 상상일 뿐입니다 :) 죄송합니다.

관련 정보