centos 6에서 centos 7로 여러 디렉터리를 복사하고 있는데 소스 시스템의 파일 시스템은 NFS이고 대상 시스템의 파일 시스템은 NFS4입니다. 대상 시스템의 디렉터리 크기가 더 작다는 것을 알았습니다. 이게 정상인가요? 왜 이런 일이 발생합니까?
답변1
NFS는 실제로 파일 시스템 유형이 아닙니다. 파일과 디렉터리를 공유하기 위한 네트워크 프로토콜이지만 NFS 클라이언트는 파일 시스템처럼 커널(나머지 부분)에 연결됩니다. 기본적으로 NFS 클라이언트는 파일 시스템 드라이버인 것처럼 가장하지만 실제 파일 시스템은 서버 커널에서 지원하는 모든 파일 시스템 유형을 사용하여 NFS 서버에 상주합니다.
RHEL/CentOS 6 및 7에는 기본 파일 시스템 유형이 다릅니다. RHEL/CentOS 6 시스템은 ext4
파일 시스템을 사용할 수 있지만 RHEL/CentOS 7 시스템은 xfs
.
다양한 파일 시스템 유형은 다양한 메타데이터 구조를 사용하므로 디렉터리에 정확히 동일한 파일이 포함되어 있어도 디렉터리 크기가 다를 수 있습니다.
ext4
또한 다음 과 같은 일부 ls -ld
파일 시스템 에서는 단일 디렉터리에 많은 수의 파일을 쓰는 경우 파일 시스템은 자동으로 디렉터리 메타데이터에 더 많은 공간을 할당합니다. 그러나 파일을 삭제할 때 곧 디렉터리에 쓸 수 있다고 가정하면 이러한 할당이 항상 즉시 해제되는 것은 아닙니다. 다시 목록화했습니다. 이는 부분적으로는 성능 최적화이고 부분적으로는 디렉터리 메타데이터 조각화를 최소화하기 위한 것입니다.
e2fsck -D
극단적인 경우에는 파일 시스템 에서 "디렉터리 최적화" 작업을 실행 하거나 ext4
(마운트 해제 필요) 유지하려는 모든 항목을 간단히 이동하는 등 현재 보유하고 있는 파일 수와 일치하도록 디렉터리를 명시적으로 축소할 수 있습니다. 하나의 새 디렉터리, 이전 디렉터리를 삭제하고 새 디렉터리의 이름을 이전 디렉터리와 동일하게 바꿉니다. 예를 들어, 오작동하는 프로그램이 일반적으로 몇 개의 파일만 포함하는 디렉터리에 수만 개의 파일을 삽입하는 경우 후자의 접근 방식이 편리할 수 있습니다.