두 개의 다른 서버 (iSCSI vloume)에서 ext4 파일 시스템으로 동일한 디스크를 마운트하면 디스크의 데이터가 손상 될 수 있음을 알고 있습니다. 내 질문은 서버 중 하나가 디스크를 읽기 전용으로 마운트하고 다른 서버는 읽기 / 쓰기로 마운트하면 차이가 있습니까?
OCFS2 또는 이와 유사한 것을 사용할 수 있으며 NFS로 디스크를 내보내 다른 서버에 액세스 할 수 있다는 것을 알고 있지만 제안한 설정이 작동하는지 알고 싶습니다.
두 개의 다른 서버 (iSCSI vloume)에서 ext4 파일 시스템으로 동일한 디스크를 마운트하면 디스크의 데이터가 손상 될 수 있음을 알고 있습니다. 내 질문은 서버 중 하나가 디스크를 읽기 전용으로 마운트하고 다른 서버는 읽기 / 쓰기로 마운트하면 차이가 있습니까?
OCFS2 또는 이와 유사한 것을 사용할 수 있으며 NFS로 디스크를 내보내 다른 서버에 액세스 할 수 있다는 것을 알고 있지만 제안한 설정이 작동하는지 알고 싶습니다.
답변:
아니요. 캐싱으로 인해 읽기 전용 클라이언트에 일관된 결과를 제공하지 않습니다. 확실히 설계된 것은 아닙니다. IO 오류가 애플리케이션으로 리턴 될 것으로 예상 할 수 있습니다. 코드에는 여전히 많은 수의 감독이있을 수 있는데, 이로 인해 커널 충돌이 발생하거나 프로세스가 사용하는 메모리가 손상 될 수 있습니다.
그러나 가장 중요한 것은 ext4가 읽기 전용 마운트에서도 저널을 재생한다는 것입니다. 따라서 읽기 전용 마운트는 여전히 기본 블록 장치에 씁니다. 두 마운트가 모두 읽기 전용 이더라도 안전하지 않습니다 . :).
blockdev --setro /dev/sda1 .
sudo mount -t ext4 -o ro,loop,noload /dev/vda /mnt/ digital-forensics.sans.org/blog/2011/06/14/...을
이것은 데이터 손상을 피할 것이지만 아마도 당신이 원하는 것이 아닐 것입니다. 다른 노드에서 볼륨을 읽기 전용으로 마운트하는 데 아무런 문제가 없었습니다. 일반적으로 "예기치 않은 프리 아이 노드를 던지는 ro 노드에서 어떤 것이 일치하지 않더라도 / var / log / messages에 e2fsck"등을 실행하십시오. 중요하지 않은 파일 시스템 ( "/ opt / mySpecialmount")에 대해 예상치 못한 일이 발생하는 경우 일반적으로 Linux는 볼륨을 읽기 전용으로 마운트합니다 (여기서 이미 있습니다). 캐싱의 효과에 대해 걱정이된다면 drop_caches / vfs_cache_pressure 체제를 시도해 볼 수 있습니다.
저널 재생을 피하려면 마운트 인수에 "noload"를 추가하고 errors = remount-ro와 함께 수행하십시오 (주의 측면에서 오류가 발생 함).
즉, 읽기 전용으로 마운트해도 괜찮다면 다른 노드에 대한 참조 일 가능성이 큽니다.이 경우 NFS 또는 smbfs가 문제를 해결하고 ext3 /보다 약간 더 동시성을 위해 설계되었습니다 4입니다. 성능이 필요한 경우 클러스터 된 파일 시스템을 살펴볼 수 있습니다 (관리 오버 헤드가 조금 더 많지만 성능이 실제로 필요한 경우가 있습니다).
man mount. 파일에서 일치하지 않는 데이터를 감지 및 / 또는 견딜 수있는 응용 프로그램이 있다고 생각할 수 있지만 지금까지 이러한 경고는 언급하지 않았습니다. :)