Geçerli veya harici dosya sistemini hızlandırmak / değiştirmeksizin harici ZFS dosya sistemi nasıl monte edilir


11

Dosya sistemi (zroot01) olarak kök üzerinde ZFS kullanarak FreeBSD 10.2 kullanıyorum . Geçici olarak bağlanmak, salt okunur okumak istediğim başka bir FreeBSD 10.2 sisteminden (zroot02) ZFS dosya sistemine sahip harici bir sabit diskim var , bu yüzden bazı dosyaları ondan alabilir, daha sonra bağlantısını kesebilirim. Ben yok clobber harici ZFS sistemi istiyor ya da benim geçerli dosya sisteminin yerini, ne de dış veri ya değişmiş / bozuk istersiniz.

Ne yapmaya çalıştığımı göstermek için, UFS kullanıyor olsaydım böyle bir şey yapardım:

mount -t ufs -o ro /dev/ada0s2 /mnt/my-fun-mountpoint

... nerede /dev/ada0s2Harici sürücünün bölümüdür ve /mnt/my-fun-mountpointiçindedir /mntMevcut işletim sistemi dizininde.

Tüm arama ve kılavuz sayfa okumaları bunu yapmak için çok net bir yöntem sağlamamıştır. Ne cevap vermedi benim şimdiki dosya sistemini ele geçiriyor ve tamir edilemeyecek biçimde bozulmasını sona erdi bulmak - Açıkçası sonuç aradığım değil. Bunu bir süre önce denedim, bu yüzden maalesef hangi komutları denediğimi hatırlamıyorum.

Lütfen bunun nasıl yapılacağı konusunda açık bir rehberlik sağlayabilir misiniz? Yardımınız için şimdiden teşekkür ederim.

Yanıtlar:


13

Aslında, havuzun ne kadar salt okunur olmasını istediğinize bağlıdır . Ve hayır, bu bir şaka değil.

İlk olarak, terminoloji biraz: ZFS de, sen içe bir havuz ve isteğe monte içindeki (herhangi bir) dosya sistemlerini. Herhangi bir dosya sistemini bağlamadan havuzu -Nkullanarak zpool importve daha sonra kullanarak istediğiniz dosya sistemlerini bağlayarak içe aktarabilirsiniz zfs mount. (Örneğin, birçoğundan yalnızca bir dosya sistemine erişmek istiyorsanız veya havuzun çevrimdışı bir fırçalamasını andıran bir şey yapmak istiyorsanız, bu tamamen geçerli bir senaryodur.)

ZFS gerçekten salt okunur erişimin büyük bir hayranı değil. Örneğin, ZFS onarabileceği bir hata algılarsa , havuzu salt okunur olarak içe aktarsanız bile hatayı onaracak ve onarılan verileri diske yazacağına inanıyorum . Anladığım kadarıyla, ZFS parlace'da "salt okunur" yalnızca havuzun ve veri kümelerinin kullanıcı tarafından görülebilir durumu için geçerlidir . Öte yandan, diskin ikili bir kopyasını bir dosyaya (veya dosya kümesine) yaparsanız, bu dosyaları gerçekten salt okunur yaparsanız ve havuzu oradan içe aktarmaya çalışırsanız, ZFS, ne kadar zor olursa olsun havuz hiç. Dosyaları yazılabilir yaparsanız, düzgün çalışır. (Aslında bunu sadece birkaç hafta önce denedim, zvol kullanıyor olsa da ve ZFS şiddetle reddettihavuzu almak için. Zvol'u salt okunur yerine okuma / yazma olarak ayarladığımda, havuz iyi içeri aktarıldı.) (Linux'ta) ext4 ve muhtemelen diğerleri gibi diğer dosya sistemleri bu durumu biraz zarif bir şekilde ele alıyor, ancak ZFS balks.

Eğer şanssız varsa ve ECC RAM yoksa sen havuzu ithal ediyoruz sistemde yüklü, o zaman aslında belki saptadığı hataları gidermeye çalışıyor 'zfs işleri daha kötü hale rağmen, görüşler farklı bu aslında gerçek bir risk olup olmadığı uygulamada. Şahsen, ZFS ve anlık görüntüler ve depolama düzeyinde yedeklilik ve yedeklemelerle korumak için yeterince önem verdiğim ve ECC RAM tarafından sunulan korumayı hak etmeyen her türlü verinin de ECC RAM'i olmadığını düşünüyorum.

Bu nedenle, havuzu başka bir şeyin ayak parmaklarına basmasını önlemek için belirli bir alternatif kökle salt okunur modda içe aktarabilirsiniz, ancak bunun adli anlamda gerçekten salt okunur olmadığını bilmeniz gerekir . (Ancak, havuzdaki herhangi bir şeyi yanlışlıkla değiştirmemenizi sağlar.) Havuzun adlandırıldığını tankve aygıt düğümünün / düğümlerinin kullanılabilir olduğunu varsayarak, salt okunur bir içe aktarma yapmak için /dev, aşağıdaki gibi bir komut kullanın:

# zpool import tank -d /dev -o readonly=on -R /mnt/someplace

Bu görüneceğini /devbir ZFS adıyla havuzu tutan şey için tankgeçici havuz özelliğini ayarlayarak, içe, readonlykarşı on(bütün kullanıcı tarafından başlatılan yazma reddedilecektir o hangi vasıta) ve geçici olarak ayarlanması altrootiçin özellik /mnt/someplace. (Bu özellik değerleri, geçerli özellik değerleri olarak disklere kalıcı olmamaları bakımından "geçicidir", bu nedenle havuzu onlarsız dışarı aktarıp yeniden alırsanız, değerler normale döner. muhtemelen havuz geçmişine yazılmalıdır, hangi havuz alındıktan sonrazpool history tank Eğer havuz içe aktarıldıktan sonra, dosyalarınızı / mnt / somewhere altında görür ve havuzdaki veri kümelerinde zaten yapılmış olan anlık görüntüler de dahil olmak üzere normal, salt okunur erişime sahip olursunuz.

Örneğiniz göz önüne alındığında, aşağıdakiler boyunca bir şey kullanacağınızdan şüpheleniyorum:

# zpool import zroot02 -d /dev -o readonly=on -R /mnt/my-fun-mountpoint

İşiniz bittiğinde, havuzu temiz bir şekilde dışa aktarmayı unutmayın:

# zpool export tank

ya da belki

# zpool export zroot02

Bu, havuzdaki tüm dosya sistemlerini ve diğer veri kümelerini çıkarır, tüm arabellekleri temizler (her şeyden önce yıkama ihtiyacı olduğu ölçüde), havuzu tüm kurucu cihazlara aktarılmadı olarak işaretler ve sağlamak için gerekli diğer temizlik görevlerini yerine getirir. havuzun güvenli bir şekilde farklı bir sisteme taşınması ve daha sonra oraya aktarılması.


1
Üçüncü paragrafınızda neyi belirttiğinizden gerçekten eminseniz, BSD ZFS uygulamasında bir hata olur. ZFS havuzu salt okunur içe aktarımı, gerçekten salt okunur olacak şekilde tasarlanmıştır; yani, havuz geçmişi de dahil olmak üzere hiçbir veri veya meta veri yazmaya veya düzeltmeye çalışmaz. Görmek Arc.stillopensolaris.org/txt/PSARC_2010_306.txt
jlliagre

1
Ben @jlliagre oldukça emin, ama belki başka ZFS uygulanması bağlamında olmuştur. Yine de neden bu kadar temel bir açıdan farklılık göstereceklerini anlamıyorum; Tüm açık kaynaklı ZFS uygulamalarının soyunu Sun'a kadar izleyen önemli miktarda kod paylaştığına inanıyorum. Bunun için bir tür test ortamı kurabilir ve bir sopayla poke edebilirim, sonra ne olduğunu görün, ancak bunu yapmak için zaman ayırmadan önce biraz zaman alacak.
bir CVn
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.