ZFS dosya sistemini bir havuzdan diğerine taşıma


18

Ben kök rpool ek olarak bir depolama alanı ile bir Solaris 10 U8 sunucusu genişletiyorum.

Belirli ZFS dosya sistemlerini bu yeni depolama havuzuna taşımak için en etkili / basit / güvenilir yol nedir?

Çevrimiçi olarak yapılabilir mi veya önce bu havuzları kullanarak hizmetleri kapatmalı mıyım?

Yanıtlar:


15

Hizmetlerin devre dışı bırakılması hakkındaki soru temel olarak hizmetlerin kendilerine bağlıdır:

  • Taşımayı planladığınız dosya sistemine etkin bir şekilde mi yazıyorlar?
  • Saklamak istediğiniz kalıcı verileri saklıyorlar mı?

Her durumda, bir ZFS dosya sistemi göndermek uzun sürebilir. Çoğu zaman çevrimiçi olarak hizmet sunarak hizmetin kullanılamamasını en aza indirmek mümkündür:

  • anlık görüntü oluştur
  • bu anlık görüntüyü daha önce önerilen şekilde gönderin, ancak tüm hizmetleri etkin tutarken
  • fs diğer havuzda alındığında, o dosya sistemi için kritik hizmet sınırlarını devre dışı bırakın. Değişiklikler daha sonra yine de silineceğinden, hedef havuzdaki yeni dosya sisteminin değiştirilmediğinden emin olun.
  • ikinci bir anlık görüntü oluşturma (örn. anlık görüntü2)
  • ikinci anlık görüntüyü aşamalı olarak gönderin, bu önceki aktarımdan çok daha hızlı olacaktır. Örneğin:

    zfs gönderme -i rpool / dosya sistemi @ anlık görüntü rpool / dosya sistemi @ anlık görüntü2 | zfs -F hedef havuzu / dosya sistemi alır

  • bittiğinde, dosya sistemi bağlama noktasını eski veri kümesinden yenisine taşıyın. Örneğin:

    zfs set mountpoint=/application/directory.old rpool/filesystem
    

    zfs set mountpoint = / uygulama / dizin hedefi / dosya sistemi

Bunu gerçekleştirmek için hiçbir işlemin bağlı olmadığından emin olmanız gerekir /application/filesystem(örneğin: dosyalara erişme veya geçerli dizini olarak alma).

  • hizmetleri yeniden etkinleştirdiğinizde işleminiz tamamlanmış demektir.

10

Bunun çevrimiçi olarak gerçekleştirilebileceğini düşünmüyorum, ancak işlemim gerekli hizmetleri kapatmak, anlık görüntü almak ve geçişi yapmak için zfs send / receini kullanmak olacaktır. Gibi bir şey:

zfs send rpool/filesystem@snapshot | zfs receive destinationpool/filesystem

Düzenle:

"Boru görünümü" komutunu (pv) yüklerseniz, aktarımın durumunu aşağıdakilerle izleyebilirsiniz:

zfs send rpool/filesystem@snapshot | pv | zfs receive destinationpool/filesystem

10

Jlliagre'nin söylediklerinin çoğunu tekrarlıyorum, ancak azalan dosya sistemleri için eklemelerle. (Çoğunlukla unuttuğumda bir referansım var.)

Alt dosya sistemleriniz varsa -r, zfs anlık görüntü komutundaki bayrağı ve komuttaki -rveya -Rişaretini kullanmak istersiniz zfs send. Büyük harf -Rtüm özellikleri , anlık görüntüleri ve klonları taşır .

Bir havuzun tamamını taşımak için:

zfs snapshot -r sourcepool@moving
zfs send -R sourcepool@moving | zfs receive -F destpool

daha kısa bir geçiş süresi için değişiklikleri senkronize etmek için kapatma uygulamaları, kapatma samba, nfs

zfs snapshot -r sourcepool@moving2
zfs send -Ri sourcepool@moving sourcepool@moving2 | zfs receive -F destpool

Taşıma için birden çok aracı anlık görüntü oluşturuyorsanız, zfs send -Ianahtarla ilgili kılavuz sayfasını okuyun .


3
Deneylerimde, tam komut şöyle görünüyordu: zfs send -R Pool0 @ moving | zfs -dF Pool1 alır
TinkerTank

4

Ayrıca, boru hattında "mbuffer" gibi bir araç kullanmanın bazı faydalarını da bulacaksınız; görünüşe göre ZFS gönderme / recv performansı, her iki uç da çoğunlukla verileri sürekli olarak aktarabiliyorsa ve mbuffer (veya benzer bir şey) olmadan, birinin diğerini sürekli engellediği bir ping-pong efekti elde ederseniz.


Bunun çok eski bir soru olduğunu (5 yıldan fazla) ve cevabınızın bu eski soruya bir şey eklemenin olası olmadığını unutmayın.
Catherine MacInnes

1
Bu harika bir tavsiye ve havuz hareketleri için de kullanıyorum.
Dan Buhler
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.