“Cp -R --reflink = always” neden bir btrfs dosya sisteminde standart bir kopya gerçekleştiriyor?


12

Btrfs Yazarken Kopyala'yı destekler. Bir dizini klonlamak için bu özelliği kullanmaya çalıştım:

cp -R --reflink=always foo_directory foo_directory.mirror

Komutun neredeyse anında bitmesini bekledim (a gibi btrfs subvolume snapshot), ancak cpkomut yavaş, standart bir kopya yapıyor gibi görünüyor.

Man sayfasına göre, --reflink=alwaysYazarken Kopyala'yı zorunlu kılmam bekleniyordu :

--Reflink [= always] belirtildiğinde, veri bloklarının yalnızca değiştirildiğinde kopyalandığı hafif bir kopya gerçekleştirin. Bu mümkün değilse kopya başarısız olur veya --reflink = auto belirtilirse, standart bir kopyaya geri dönün.

Sorular:

  • Neden --reflink=alwaysişe yaramadığını biliyor musunuz ?
  • Bunun yerine hangi seçenekleri (veya diğer komutları) kullanmalıyım?

Yanıtlar:


20

cp --reflink=alwaysneredeyse kesinlikle doğru çalışıyor. Eğer olmasaydı, bir hata alırdınız. Tasarım gereği, --reflink=alwaysve arasındaki fark budur --reflink=auto. Hata şöyle görünür:

# Filesystem that does not support the feature at all
cp: failed to clone `xx' from `yy': Inappropriate ioctl for device

# Filesystem that does support it, but copy across filesystems
cp: failed to clone `xx' from `yy': Invalid cross-device link

Çok sayıda küçük dosya içeren bir dizin yapısı mı kopyalıyorsunuz? Bu durumda, cpyine de her dizini oluşturmak ve her dosyayı açmak ve kapatmak gerekir, bu yüzden aksine, zaman alacaktır btrfs subvolume snapshot. Bu büyük olasılıkla işlemi gerçekleştirmek için gereken süreyi açıklar.


3
Evet, birçoğu küçük metin dosyaları olan çok sayıda dosya içerir. Cp'nin hala her dosyayı işlemesi gerektiğini bilmiyordum. Teşekkürler, anlamadığım kısım buydu. Sanırım kullanım durumumda, yazılabilir bir anlık görüntü oluşturmak daha iyi.
Philipp Claßen

1
Evet, eğer bir anlık görüntü oluşturabilirsen, o zaman git. cp --reflink=alwaysklonlamaya çalıştığınız şey bir alt hacmin kökü olmadığında hala kullanışlı olabilir, çünkü alt btrfs subvolume snapshothacimlerin bazı bölümlerinde değil, yalnızca alt hacimlerde çalışır.
Celada
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.