Udostępnij pliki porównania bez prawa zapisu.
Agenty źródłowy i docelowy eksportują wybrane katalogi przez NFS. Serwer Compare montuje oba zasoby tylko do odczytu, korzystając ze ścieżek i adresów dobranych przez administratora do danego środowiska.
Architektura
Każdy agent udostępnia własny katalog. Ścieżki po stronie źródła i celu mogą być całkowicie różne; serwer Compare potrzebuje jedynie dwóch oddzielnych punktów montowania i prawa odczytu.
Eksportuje katalog z plikami źródłowymi i zezwala hostowi Compare na dostęp przez NFS.
Eksportuje własny katalog niezależnie od ścieżki i nazwy używanej przez agenta źródłowego.
Montuje oba eksporty jako oddzielne katalogi lokalne i odczytuje pliki bez ich modyfikowania.
Wartości zależne od środowiska
Zastąp <HOST_AGENTA_ZRODLOWEGO>, <HOST_AGENTA_DOCELOWEGO>, <KATALOG_EKSPORTU_ZRODLA> i <KATALOG_EKSPORTU_CELU> wartościami właściwymi dla środowiska.
Zastąp <PUNKT_MONTOWANIA_ZRODLA> i <PUNKT_MONTOWANIA_CELU> dwoma oddzielnymi katalogami lokalnymi wybranymi przez administratora.
Brak narzuconej struktury Eksporty źródła i celu nie muszą mieć takich samych nazw ani lokalizacji.
Brak stałych adresów Użyj adresów IP lub rozwiązywalnych nazw hostów właściwych dla wdrożenia.
Jedna zasada spójności Każda zdalna ścieżka eksportu musi odpowiadać poleceniu mount i wpisowi fstab.
Konfiguracja serwerów agentów
Instalacja serwera NFS
Ubuntu/Debian:
sudo apt update
sudo apt install -y nfs-kernel-server
Systemy zgodne z RHEL:
sudo dnf install -y nfs-utils
Przygotowanie eksportowanych katalogów
Uruchom odpowiednie polecenie na każdym agencie:
sudo mkdir -p <KATALOG_EKSPORTU_ZRODLA>
sudo mkdir -p <KATALOG_EKSPORTU_CELU>
Ustaw właściciela i prawa dla lokalnego procesu tworzącego i zarządzającego plikami:
sudo chown -R <USER>:<GROUP> <KATALOG_EKSPORTU>
sudo chmod 0770 <KATALOG_EKSPORTU>
Konfiguracja /etc/exports
Na każdym agencie użyj jednego wpisu i zastąp placeholdery wartościami środowiska:
<KATALOG_EKSPORTU_ZRODLA> <HOST_SERWERA_COMPARE>(ro,sync,no_subtree_check)
<KATALOG_EKSPORTU_CELU> <HOST_SERWERA_COMPARE>(ro,sync,no_subtree_check)
Przykład pojedynczego eksportu:
/home/docker/compare_agent/compare-shared devkk.goldenore.com(ro,sync,no_subtree_check)
Udostępnia katalog tylko do odczytu. Host Compare może otwierać i czytać pliki, ale nie może ich tworzyć, zmieniać, przemianowywać ani usuwać przez NFS.
Wymaga zakończenia lokalnej obsługi zapisu przez serwer NFS przed potwierdzeniem żądania. Przy kliencie tylko do odczytu utrzymuje również bezpieczne, jawne zachowanie eksportu na wypadek późniejszego rozszerzenia reguł dostępu.
Wyłącza sprawdzanie poddrzewa dla plików wewnątrz eksportowanego katalogu. Ogranicza problemy ze stale file handle i walidacją ścieżek podczas przenoszenia lub zmiany nazw plików.
Zastosuj eksporty i uruchom usługę:
sudo exportfs -rav
sudo exportfs -v
sudo systemctl enable --now nfs-kernel-server
W systemach zgodnych z RHEL uruchom zamiast tego usługę nfs-server.
Konfiguracja serwera Compare
Instalacja klienta NFS
Ubuntu/Debian:
sudo apt update
sudo apt install -y nfs-common
Systemy zgodne z RHEL:
sudo dnf install -y nfs-utils
Przygotowanie i montowanie katalogów
sudo mkdir -p <PUNKT_MONTOWANIA_ZRODLA>
sudo mkdir -p <PUNKT_MONTOWANIA_CELU>
Przed zmianą konfiguracji odmontuj poprzednie zasoby:
sudo umount <PUNKT_MONTOWANIA_ZRODLA>
sudo umount <PUNKT_MONTOWANIA_CELU>
Zamontuj eksporty źródła i celu:
sudo mount -t nfs4 -o ro,hard,vers=4.2,proto=tcp,timeo=60,retrans=2,actimeo=0,lookupcache=none \
<HOST_AGENTA_ZRODLOWEGO>:<KATALOG_EKSPORTU_ZRODLA> \
<PUNKT_MONTOWANIA_ZRODLA>
sudo mount -t nfs4 -o ro,hard,vers=4.2,proto=tcp,timeo=60,retrans=2,actimeo=0,lookupcache=none \
<HOST_AGENTA_DOCELOWEGO>:<KATALOG_EKSPORTU_CELU> \
<PUNKT_MONTOWANIA_CELU>
Parametry montowania
Zestaw opcji preferuje spójność odczytu i natychmiastową widoczność plików. Ceną jest możliwość oczekiwania podczas awarii serwera oraz większy ruch metadanych po wyłączeniu cache.
Poleca programowi mount użycie klienta NFS w wersji 4. Wybiera mechanizm montowania NFSv4, zanim zostaną przetworzone pozostałe opcje połączenia.
Montuje zdalny katalog bez prawa tworzenia, modyfikowania, zmiany nazw i usuwania plików. Compare otrzymuje wyłącznie dostęp potrzebny do odczytu plików porównania.
Ponawia przerwaną operację NFS aż do odpowiedzi serwera. Zapobiega przekazaniu Compare niepełnego odczytu, ale proces może oczekiwać, gdy serwer NFS lub sieć są niedostępne.
Wymusza NFS 4.2 zamiast automatycznego negocjowania wersji. Zapewnia przewidywalną konfigurację protokołu i wymaga obsługi tej wersji przez klienta oraz serwer.
Przesyła żądania NFS przez TCP. TCP zapewnia uporządkowane i niezawodne dostarczanie danych, odpowiednie dla odczytu plików porównania przez sieć.
Ustawia początkowy timeout żądania NFS po TCP na 6 sekund. Wartość podawana jest w dziesiątych częściach sekundy. Określa moment rozpoczęcia ponawiania, a nie całkowity czas do przerwania operacji.
Po dwóch retransmisjach klient raportuje, że serwer NFS nie odpowiada. Ponieważ używany jest hard mount, operacja nadal oczekuje i jest ponawiana zamiast zwrócić Compare niepełny wynik.
Ustawia czasy cache atrybutów plików i katalogów na zero. Rozmiar, czas modyfikacji, prawa i inne metadane są widoczne natychmiast, kosztem większej liczby zapytań do serwera NFS.
Wyłącza pozytywny i negatywny cache wpisów katalogowych. Nowe, usunięte i przemianowane pliki są za każdym razem wyszukiwane na serwerze NFS, co poprawia widoczność kosztem dodatkowego ruchu.
Trwałe montowanie
Dodaj oba zasoby do /etc/fstab, aby mogły zostać zamontowane po restarcie:
<HOST_AGENTA_ZRODLOWEGO>:<KATALOG_EKSPORTU_ZRODLA> <PUNKT_MONTOWANIA_ZRODLA> nfs4 ro,hard,vers=4.2,proto=tcp,timeo=60,retrans=2,actimeo=0,lookupcache=none,_netdev,nofail,x-systemd.automount 0 0
<HOST_AGENTA_DOCELOWEGO>:<KATALOG_EKSPORTU_CELU> <PUNKT_MONTOWANIA_CELU> nfs4 ro,hard,vers=4.2,proto=tcp,timeo=60,retrans=2,actimeo=0,lookupcache=none,_netdev,nofail,x-systemd.automount 0 0
Oznacza montowanie jako zależne od sieci, dzięki czemu system nie traktuje go jak lokalnego systemu plików podczas uruchamiania i wyłączania.
Pozwala kontynuować uruchamianie systemu, gdy agent albo jego eksport NFS jest tymczasowo niedostępny.
Tworzy jednostkę automount systemd i montuje NFS przy pierwszym dostępie do ścieżki, ograniczając problemy z kolejnością startu usług.
Sprawdź wpisy bez restartowania serwera:
sudo mount -a
Weryfikacja
Sprawdź, czy obie ścieżki są montowaniami NFS oraz czy efektywna konfiguracja zawiera tryb tylko do odczytu.
findmnt <PUNKT_MONTOWANIA_ZRODLA>
findmnt <PUNKT_MONTOWANIA_CELU>
nfsstat -mUruchom sprawdzenie jako ten sam użytkownik systemowy, który uruchamia Compare.
ls -la <PUNKT_MONTOWANIA_ZRODLA>
ls -la <PUNKT_MONTOWANIA_CELU>
head -n 1 <PUNKT_MONTOWANIA_ZRODLA>/<ISTNIEJACY_PLIK_ZRODLOWY>
head -n 1 <PUNKT_MONTOWANIA_CELU>/<ISTNIEJACY_PLIK_DOCELOWY>