Cóż, to naprawdę zależy od tego, jak chcesz, aby pula była tylko do odczytu. I nie, to nie żart.
Najpierw trochę terminologii: w ZFS importujesz pulę i opcjonalnie montujesz w niej (dowolne) systemy plików. Można importować basen bez montowania żadnych systemów plików przekazując -N
do zpool import
, a następnie później zamontować dowolne systemy plików użyciu zfs mount
. (Jest to całkowicie poprawny scenariusz, jeśli na przykład chcesz uzyskać dostęp tylko do jednego systemu plików spośród wielu lub jeśli chcesz zrobić coś przypominającego szorowanie puli w trybie offline.)
ZFS nie jest wielkim fanem dostępu tylko do odczytu. Na przykład, jeśli ZFS wykryje błąd, który jest w stanie naprawić, uważam, że naprawi błąd i zapisze naprawione dane na dysku, nawet jeśli zaimportujesz pulę jako tylko do odczytu. Rozumiem, że w systemie ZFS „tylko do odczytu” dotyczy tylko widocznego dla użytkownika stanu puli i jej zestawów danych. Jeśli z drugiej strony utworzysz kopię binarną dysku do pliku (lub zestawu plików), sprawisz, że te pliki będą naprawdę tylko do odczytu i spróbujesz zaimportować stamtąd stamtąd, ZFS nie będzie mógł zaimportować gromadzić w ogóle, bez względu na to, jak bardzo się starasz. Jeśli sprawisz, że pliki będą zapisywane, będzie działać poprawnie. (Właściwie próbowałem tego zaledwie kilka tygodni temu, chociaż używając Zvola, a ZFS gwałtownie odmówiłaby zaimportować pulę. Kiedy ustawiłem zvol na odczyt / zapis zamiast tylko do odczytu, pula zaimportowała się dobrze.) Inne systemy plików, takie jak (w Linuksie) ext4 i prawdopodobnie inne poradzą sobie z tą sytuacją nieco wdzięcznie, ale ZFS się zawiesza.
Jeśli masz pecha i nie masz zainstalowanej pamięci ECC RAM w systemie, w którym importujesz pulę, wówczas próba naprawienia napotkanych błędów przez ZFS może pogorszyć sytuację , choć opinie różnią się, czy jest to realne ryzyko w praktyce. Osobiście jestem zdania, że wszelkie dane, na których mi zależy, do ochrony za pomocą ZFS i migawek oraz nadmiarowości i kopii zapasowych na poziomie pamięci masowej i kopii zapasowych, a także zasługuje na ochronę oferowaną przez pamięć RAM ECC, ale wiele komputerów nie ma pamięci ECC RAM.
Tak, można importować z basenu w trybie tylko do odczytu, ze szczególnym alternatywnym korzenia, aby zapobiec jego natrafienia na coś innego palce, ale trzeba mieć świadomość, że niekoniecznie jest to naprawdę tylko do odczytu w sensie kryminalistycznych. (Zapewni to jednak, że nie zmienisz przypadkowo niczego w puli.) Aby wykonać import tylko do odczytu, zakładając, że pula jest nazwana tank
i węzły urządzenia są dostępne /dev
, należy użyj polecenia takiego jak:
# zpool import tank -d /dev -o readonly=on -R /mnt/someplace
Spowoduje to wyszukanie /dev
wszystkiego, co zawiera pulę ZFS o nazwie tank
, zaimportuje ją, tymczasowo ustawi właściwość puli readonly
na on
(co oznacza, że wszystkie zapisy zainicjowane przez użytkownika zostaną odrzucone) i tymczasowo ustawi jej altroot
właściwość na /mnt/someplace
. (Te wartości właściwości są „tymczasowe” w tym sensie, że nie są utrwalane na dyskach jako bieżące wartości właściwości, więc jeśli eksportujesz i ponownie importujesz pulę bez nich, wartości wrócą do normy. Mogą one być może zostaną zapisane w historii puli, którą można importować po zaimportowaniu pulizpool history tank
jeśli masz na to ochotę.) Po zaimportowaniu puli zobaczysz swoje pliki w / mnt / someplace i będziesz mieć do nich normalny dostęp tylko do odczytu, w tym wszelkie migawki, które zostały już utworzone w zestawach danych w puli.
Biorąc pod uwagę twój przykład, podejrzewam, że użyłbyś czegoś podobnego do:
# zpool import zroot02 -d /dev -o readonly=on -R /mnt/my-fun-mountpoint
Po zakończeniu pamiętaj o czystym wyeksportowaniu puli:
# zpool export tank
a może
# zpool export zroot02
Spowoduje to odmontowanie wszystkich systemów plików i innych zestawów danych w puli, opróżnienie wszystkich buforów (w zakresie, w jakim przede wszystkim należy opróżnić), oznaczenie puli jako niezaimportowanej na wszystkich urządzeniach składowych i wykonanie innych niezbędnych zadań porządkowych w celu zapewnienia że pulę można bezpiecznie przenieść do innego systemu i zaimportować tam później.