Yah, itu benar-benar tergantung pada seberapa read-only Anda ingin kolam itu. Dan tidak, itu bukan lelucon.
Pertama, sedikit terminologi: di ZFS, Anda mengimpor kumpulan, dan secara opsional memasang sistem file (apa saja) di dalamnya. Anda dapat mengimpor kumpulan tanpa memasang sistem file apa pun dengan meneruskan -N
ke zpool import
dan kemudian memasang sistem file yang diinginkan menggunakan zfs mount
. (Ini adalah skenario yang benar-benar valid jika, misalnya, Anda ingin mengakses hanya satu sistem file dari banyak, atau jika Anda ingin melakukan sesuatu yang menyerupai scrub off-line dari kumpulan.)
ZFS bukan penggemar berat akses hanya-baca. Misalnya, jika ZFS mendeteksi kesalahan yang dapat diperbaiki, saya yakin ZFS akan memperbaiki kesalahan dan menulis data yang diperbaiki ke disk bahkan jika Anda mengimpor kumpulan sebagai hanya baca. Pemahaman saya adalah bahwa, di ZFS parlace, "read-only" hanya berlaku untuk status kumpulan pengguna yang terlihat dan kumpulan datanya. Jika, di sisi lain, Anda membuat salinan biner dari disk ke file (atau kumpulan file), membuat file-file itu benar-benar hanya baca, dan mencoba mengimpor kumpulan dari sana, ZFS tidak akan dapat mengimpor Pool sama sekali tidak peduli seberapa keras Anda mencoba. Jika Anda membuat file dapat ditulis, itu akan berfungsi dengan baik. (Saya benar-benar mencoba ini hanya beberapa minggu yang lalu, meskipun menggunakan zvol, dan ZFS dengan keras menolaknyauntuk mengimpor kolam. Ketika saya mengatur zvol untuk membaca / menulis alih-alih hanya-baca, kolam mengimpor baik-baik saja.) Sistem file lain seperti (di Linux) ext4 dan mungkin yang lain menangani situasi ini dengan anggun, tetapi ZFS menolak.
Jika Anda kurang beruntung, dan tidak memiliki ECC RAM yang terpasang di sistem tempat Anda mengimpor kumpulan, maka ZFS yang mencoba untuk memperbaiki kesalahan yang ditemui mungkin malah memperburuk keadaan , meskipun pendapat berbeda mengenai apakah ini sebenarnya risiko nyata. dalam praktek. Secara pribadi saya berpendapat bahwa data apa pun yang saya pedulikan cukup untuk melindungi dengan ZFS dan snapshot serta cadangan dan cadangan tingkat penyimpanan dan yang lainnya layak mendapatkan perlindungan yang ditawarkan oleh RAM ECC juga, tetapi banyak PC tidak memiliki RAM ECC.
Jadi, Anda dapat mengimpor kumpulan dalam mode read-only, dengan root alternatif khusus untuk mencegahnya menginjak jari kaki orang lain, tetapi Anda harus menyadari bahwa itu tidak harus benar - benar hanya baca-saja dalam arti forensik. (Akan, bagaimanapun, memastikan bahwa Anda tidak secara tidak sengaja mengubah apa pun di kumpulan.) Untuk melakukan impor hanya baca, dengan asumsi bahwa kumpulan tersebut dinamai tank
dan bahwa simpul perangkat tersedia /dev
, Anda akan gunakan perintah seperti:
# zpool import tank -d /dev -o readonly=on -R /mnt/someplace
Ini akan terlihat di /dev
untuk apa pun memegang ZFS pool dengan nama tank
, impor, sementara pengaturan properti kolam renang readonly
untuk on
(yang berarti bahwa semua menulis diprakarsai pengguna akan ditolak) dan untuk sementara pengaturan yang altroot
properti untuk /mnt/someplace
. (Nilai properti ini "sementara" dalam arti bahwa mereka tidak bertahan ke disk sebagai nilai properti saat ini, jadi jika Anda mengekspor dan mengimpor kembali kumpulan tanpa mereka, nilai-nilai akan kembali normal. Mereka mungkin mungkin dituliskan ke histori pool, yang setelah pool diimpor, Anda dapat melihatnyazpool history tank
jika Anda cenderung.) Setelah pool diimpor, Anda akan melihat file Anda di bawah / mnt / suatu tempat dan memiliki akses normal, hanya-baca, termasuk snapshot yang sudah dibuat pada dataset di pool.
Diberikan contoh Anda, saya menduga Anda akan menggunakan sesuatu di sepanjang baris:
# zpool import zroot02 -d /dev -o readonly=on -R /mnt/my-fun-mountpoint
Setelah selesai, jangan lupa untuk mengekspor kolam secara bersih:
# zpool export tank
atau mungkin
# zpool export zroot02
Itu akan meng-unmount semua sistem file dan set data lainnya di dalam pool, menyiram semua buffer (sejauh mana kebutuhan membilas di tempat pertama), menandai pool sebagai tidak diimpor pada semua perangkat konstituen, dan melakukan tugas-tugas rumah tangga lain yang diperlukan untuk memastikan bahwa kolam dapat dengan aman dipindahkan ke sistem yang berbeda dan diimpor ke sana nanti.