Chà, nó thực sự phụ thuộc vào cách bạn chỉ đọc hồ bơi. Và không, đó không phải là một trò đùa.
Đầu tiên, một chút thuật ngữ: trong ZFS, bạn nhập một nhóm và tùy ý gắn các hệ thống tệp (bất kỳ) trong đó. Bạn có thể nhập một nhóm mà không cần gắn bất kỳ hệ thống tệp nào bằng cách chuyển -N
đến zpool import
và sau đó gắn kết bất kỳ hệ thống tệp mong muốn nào bằng cách sử dụng zfs mount
. .
ZFS không phải là một fan hâm mộ lớn của truy cập chỉ đọc thực sự. Ví dụ: nếu ZFS phát hiện ra lỗi có thể sửa chữa, tôi tin rằng nó sẽ sửa lỗi và ghi dữ liệu đã sửa vào đĩa ngay cả khi bạn nhập nhóm dưới dạng chỉ đọc. Tôi hiểu rằng, trong parFS ZFS, "chỉ đọc" chỉ áp dụng cho trạng thái hiển thị của người dùng của nhóm và bộ dữ liệu của nó. Mặt khác, nếu bạn tạo một bản sao nhị phân của đĩa vào một tệp (hoặc bộ tệp), làm cho các tệp đó thực sự chỉ đọc và cố gắng nhập nhóm từ đó, ZFS sẽ không thể nhập tệp hồ bơi ở tất cả cho dù bạn cố gắng thế nào. Nếu bạn làm cho các tập tin có thể ghi, nó sẽ hoạt động tốt. (Tôi thực sự đã thử điều này chỉ một vài tuần trước, mặc dù sử dụng zvol và ZFS đã từ chối kịch liệtđể nhập hồ bơi. Khi tôi đặt zvol thành đọc / ghi thay vì chỉ đọc, nhóm đã nhập tốt.) Các hệ thống tệp khác như (trên Linux) ext4 và có lẽ các hệ thống khác xử lý tình huống này một cách duyên dáng, nhưng ZFS lại chùn bước.
Nếu bạn không may mắn và không cài đặt RAM ECC trong hệ thống nơi bạn đang nhập nhóm, thì ZFS cố gắng sửa bất kỳ lỗi nào mà nó gặp có thể thực sự làm mọi thứ tồi tệ hơn , mặc dù ý kiến khác nhau về việc đây có thực sự là rủi ro thực sự không trong thực tế. Cá nhân tôi cho rằng bất kỳ dữ liệu nào tôi quan tâm đủ để bảo vệ với ZFS và ảnh chụp nhanh và dự phòng cấp độ lưu trữ và sao lưu và cũng không xứng đáng được bảo vệ bởi RAM ECC, nhưng nhiều PC không có RAM ECC.
Vì vậy, bạn có thể nhập các hồ bơi trong chế độ read-only, với một gốc thay thế cụ thể để giữ cho nó khỏi giẫm lên bất cứ điều gì khác là ngón chân, nhưng bạn cần phải lưu ý rằng nó không nhất thiết phải thực sự chỉ đọc trong một cảm giác pháp y. (Tuy nhiên, nó sẽ đảm bảo rằng bạn không vô tình thay đổi bất cứ điều gì trong nhóm.) Để thực hiện nhập chỉ đọc, giả sử rằng nhóm được đặt tên tank
và (các) nút thiết bị đã có sẵn /dev
, bạn sẽ sử dụng một lệnh như:
# zpool import tank -d /dev -o readonly=on -R /mnt/someplace
Điều này sẽ nhìn vào /dev
bất cứ điều gì cầm một ZFS hồ bơi với tên tank
, nhập nó, tạm thời thiết lập thuộc tính hồ bơi readonly
để on
(có nghĩa là tất cả các ghi do người dùng tạo sẽ bị từ chối) và tạm thời thiết lập của nó altroot
sở hữu đến /mnt/someplace
. (Các giá trị thuộc tính này là "tạm thời" theo nghĩa là chúng không được duy trì trong đĩa như các giá trị thuộc tính hiện tại, vì vậy nếu bạn xuất và nhập lại nhóm mà không có chúng, các giá trị sẽ trở lại bình thường. có thể được ghi vào lịch sử nhóm, mặc dù một khi nhóm được nhập, bạn có thể xem bằngzpool history tank
nếu bạn rất có khuynh hướng.) Khi nhóm được nhập, bạn sẽ thấy các tệp của mình ở dưới / mnt / someplace và có quyền truy cập bình thường, chỉ đọc vào chúng, bao gồm mọi ảnh chụp nhanh đã được thực hiện trên bộ dữ liệu trong nhóm.
Cho ví dụ của bạn, tôi nghi ngờ rằng bạn sẽ sử dụng một cái gì đó dọc theo dòng:
# zpool import zroot02 -d /dev -o readonly=on -R /mnt/my-fun-mountpoint
Khi bạn đã hoàn tất, hãy nhớ xuất sạch hồ bơi:
# zpool export tank
hoặc có lẽ
# zpool export zroot02
Điều đó sẽ ngắt kết nối tất cả các hệ thống tệp và các bộ dữ liệu khác trong nhóm, xóa tất cả các bộ đệm (đến mức bất kỳ nhu cầu nào được đặt ở vị trí đầu tiên), đánh dấu nhóm là không được nhập trên tất cả các thiết bị cấu thành và thực hiện bất kỳ nhiệm vụ vệ sinh cần thiết nào khác để đảm bảo rằng hồ bơi có thể được chuyển đến một hệ thống khác một cách an toàn và được nhập vào đó sau đó.