Anlık görüntülerin paylaşım verilerini koruyarak btrfs dosya sistemini farklı bir ortama klonlama


9

Ben btrfs baskın yetenekleri denemeye karar verdim. İle bir btrfs oluşturdum

sudo mkfs.btrfs -m raid10 -d raid10 /dev/sda9 /dev/sdb9 /dev/sdc9 /dev/sdd9

Şimdi varolan btrfs bölümümü klonlamak istiyorum, (linux-raid'in üstünde oturuyor). basit bir kullanamazsınız cp -a, çünkü (korumak istediğim) 40'tan fazla anlık görüntü tabanlı yedekleme var ve birden fazla kez yedekleyebileceğim tüm depolama alanlarını aşırı doldurdum.

Şimdiye kadar iki seçenek görebiliyorum:

partclone.btrfs -s /path/to/original/fs -o /dev/sda9 -b

ve sanırım benim de btrfs balance start /dev/sda9

ve

do: cp -adepolamaya sığacak kadar artımlı olarak kopyalayın ve daha sonra bedupdosyaları çoğaltmak ve döngü oluşturmak için kullanın.

Tercih edilen (en iyi uygulama) yöntem nedir? İlkini çok tercih ederim; çok daha az zaman almalı. Ya da belki bu prosedürlerden herhangi birinde kötü bir "gotcha" var (btrfs'nin deneysel olduğu gerçeğinin yanında)


İlk soru sadece söz konusu değil; Ancak harika bir araç, partclone.btrfsaçıkçası çok cihazlı dosya sistemlerini desteklemiyor. :-(

Yanıtlar:


7

Benzer bir soruyu 2 yıl önce sordum .

Ancak benim durumumda, raid0'a sadece tek bir cihaz kopyalamayı planlıyordum.

Sonunda bir çözüm buldum . O zaman raid0'dan raid10'a dönüşemediniz, ancak çekirdek 3.3'ten beri şimdi yapabilirsiniz. Böylece bu çözüm sizin için işe yarayabilir.

Bu yaklaşımla ilgili bir sorun, fsuidi kopyalamasıdır. Bu, hem FS'yi hem de kopyasını aynı makineye monte edemeyeceğiniz anlamına gelir. O zaman, fsuidbir FS'nin değiştirilmesi için bir araç yoktu , ama şimdi değişmiş olabilir.

Fikir, yazılabilmesi için orijinal cihazın üstüne bir üzerine yazılır kopyalama katmanı eklemektir, ancak herhangi bir değişiklik daha sonra atabileceğiniz başka bir yerde yapılır. Bu, ek depolama alanına ihtiyacınız olduğu anlamına gelir (örneğin harici bir sürücüde).

Ardından, orijinal yerine bu COW'd FS'yi takın, FS kopyası için aygıtları ekleyin ve COW aygıtını çıkarın.

Yazarken kopyalama için aygıt eşleştiriciyi kullanabilirsiniz.

Yazma alanındaki tek kullanımlık kopya için burada bir döngü cihazı kullanıyorum.

En klonlamak istediğiniz diyelim /dev/sdaüzerine /dev/sd[bcde]:

COW arka mağazasını oluşturun:

truncate -s 100G /media/STORE/snap-store
losetup /dev/loop0 /media/STORE/snap-store

Şimdi monte edilmişse FS kaynağını sökün modprobe -r btrfsve cihazın karışmayacağından emin olmayacağından emin olun.

Ardından COW'd cihazını yapın:

echo "echo 0 $(blockdev --getsize /dev/sda) snapshot /dev/sda /dev/loop0 N 8 | dmsetup create cowed

Şimdi /dev/mapper/cowed, /dev/sdaona yazılan her şeyin sonuçlanacak /dev/loop0ve /dev/sdadokunulmayacağı dışında.

Şimdi monte edebilirsiniz:

mount /dev/mapper/cowed /mnt

Diğer cihazları ekleyin:

btrfs dev add /dev/sd[bcde] /mnt

Ve eskisini kaldırın:

btrfs dev del /dev/mapper/cowed /mnt

Bittiğinde /dev/sda, diğerleriyle aynı fsuid olduğu için btrfshala kapatıp kapatabilir veya fişini çekebilir veya okuyabilirsiniz .

Şimdi, doğru anlarsam, son btrfs-prog'a sahip olduğunuzu varsayarsak, aşağıdakileri yapabilmeniz gerekir:

btrfs balance start -d convert=raid10 /mnt

Baskın'a dönüştürmek için 10. Teorik olarak, bu her veri yığınının en az 2 disk üzerine kopyalandığından emin olmalıdır.

Kesinlikle bellekte olan her şeyden önce döngü cihazlarda bir kukla btrfs üzerinde test yapmanızı ve yanlış aldım (örneğin benim düzenlemeden önce ilk cevap bakın) tavsiye ederim.

Çekirdek 3.6'dan bu yana, btrfs'nin zfs'deki gibi bir gönderme / alma uyguladığını unutmayın. Bu sizin için bir seçenek olabilir.


Harika cevap, teşekkür ederim. Test edeceğim. Şimdi gönderme / alma denemeleri yapıyorum.
Adam Ryczkowski

@ Stéphane Chazelas Gmane bağlantıları öldü (muhtemelen sonsuza dek). Cevabınızı ayarlayabilir misiniz?
Jonas Stein

4

Bir eski Btrfs olun: Stephane'ın fikri ( 's serin neden en o) araçları yerleşik Btrfs yoluyla yapılabilir tohum cihaz aracılığıyla btrfstune -S 1 /dev/device, cihazlar ekleyebilirsiniz tohum cihazı kaldırmak, do btrfs balance start. Bir çekirdek aygıt, yazılabilir bir dosya sisteminin parçası olabilen salt okunur bir aygıttır.


1

@ İgnis tohumlama kullanmak için önerisini takip etmeye çalıştım ama onunla sorunları vardı; tohum cihazını çıkarmaya çalışırken sistem bir hata attı ve bunun üstesinden gelemedim. Sonra (şimdi - btrfs-progs v3.19-64-g19a806f, belki daha önce değil) komutunun olduğunu gördüm:

  btrfs replace start [-Bfr] <srcdev>|<devid> <targetdev> <path>

bu da mevcut btrfs dosya sistemimi (bir LVM mantıksal biriminde olan) yeni bir bölüme bir doddle üzerine kopyalamayı yaptı. Mayıs 2015 itibariyle RAID5 / 6 profilleri için çalışmadığını unutmayın - tam bilgi için kılavuz sayfasına bakın.


1
Asla btrfs replace startyedekleme amacıyla kullanmayın !! Cihaz ağacınızı bozar ve sürücüyü sökülemez hale getirir! Hatalardan kurtulmam imkansızdı, bu yüzden dd -tool ile başka bir blok cihazdan bir görüntü kopyasını geri yükledim. Yalnızca btrfs replaceson sürücü geçişi için kullanın .
Karmus

0

Seçenek 1 - Veri kopyalama ve ardından UUID'yi değiştirme

Kaynak bölümünün bağlantısının kesildiğinden ve otomatikleştirilmeyeceğinden emin olun.

Kullanım ya dd(yavaş, dilsiz) ya dapartclone.btrfs -b -s /dev/src -o /dev/target

btrfstune -uKopyalamadan sonra ve montajdan önce UUID'yi değiştirmek için kullanın .

Veri kaybı uyarısı : Do DEĞİL montaj (auto) deneyin ya aslı veya kopya UUID değiştirildi kadar


Seçenek 2 - btrfs-clone

Ben şahsen denemedim btrfs-clone, ama mevcut bir BTRFS dosya sistemini yenisine klonlamayı, her bir alt cildi sırayla klonlamayı iddia ediyor.

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.