여기서 이중화는 Active-Active일 경우이다. 2대 이상의 서버에서 하나의 스토리지를 공유해서 검색 서비스를 할 경우 무엇이 문제가 될수 있는가? 한대의 서버에서만 색인하고 다른 서버에서는 검색할 경우 문제가 발생할까? 이 상황에서 발생할 수 있는 일들에 대해서 생각해보자.
1. OS에서 데이터를 Write하는 원리
OS에서 데이터를 디스크에 쓸때 바로 디스크로 데이터가 가는 것이 아니라 중간에 메모리에 쌓였다가 디스크로 보내진다. 그래서 갑작스런 시스템 종료로 파일이 깨질 수 있다.
2. A,B 두대의 장비가 같은 디스크를 NFS로 공유할 경우 A 장비에서 Write한 데이터가 B 장비에서 인식하는 과정을 생각해보자.
A장비의 메모리 - A장비의 버퍼 - NAS 장비의 Write Cache - NAS 장비의 디스크 - NAS 장비의 Read Cache - B장비의 Read Cache
3. 이렇게 복잡한 과정을 거쳐야 B 장비에서 A 장비의 변화를 알 수 있다. 이 시간이 짧을것 같으나 실제 측정해본 결과 3초정도 걸렸다. 이 긴 시간동안 A장비와 B장비는 데이터 동기가 안된다는 것이다. 이런 문제가 있다면 여러장비에서 같은 파일을 Write하면 문제가 생길 것이다. 그런데 현재 봉착한 문제는 한쪽만 Write하고 다른쪽에서는 Read만 한다는 것이다. 이경우라면 문제가 안 생길것이라 판단된다.
4. 과연 Read만 하면 Write는 하지 않는 것인가? 또는 inode단위로 lock을 거는 것일까?
자 그럼 Read System Call에 대해서 세부적으로 알아보자. 그럼 답이 나올 것이다.