Bazı dosyaların / dizinlerin inek kopyalarını yapmaya çalışıyorum, ancak bildiğim birkaç yoldan hepsi en uygun görünmüyor.
Örneğin, btrfs cp --reflink=auto
, dosyaların hızlı bir şekilde inek kopyalarını oluşturarak kullanılabilir .
Ne denedim:
- Symlinks: İyi değil. Dosya yeniden adlandırıldı, bağlantı koptu.
- Hardlinks: Daha iyi, ama yine de iyi değil. Bir dosyada yapılan değişiklikler diğerini değiştirecek ve diğer dosyanın değiştirilmesini istemiyorum.
- Veri kümesinin anlık görüntüsünü oluşturun, sonra anlık görüntüyü klonlayın: Bu işe yarayabilir, ancak iyi olmayabilir. Genellikle tüm veri kümesinin bir kopyasını veya kopyaların başka bir veri kümesi gibi davranmasını istemiyorum. Sonra klon / enstantane / orijinal arasında ebeveyn / çocuk ilişkileri var, ki anladığım kadarıyla zor, kırılması imkansız değil.
zfs send/receive
Veri kümesini kullanarak ve etkinleştirilmiş yinelemeyi kullanarak , veri kümesini yeni bir veri kümesine çoğaltın: Bu, bir klon kullanmanın üst / alt ilişkilerini önler, ancak yine de gereksiz yere başka bir veri kümesi oluşturur ve yine de% 100 okunması gereken dosyalarda yer alan yavaşlıktan muzdarip ve bloklar yazılı yerine tekrar başvurdu.- Dosyaları kopyalayın ve yinelenenleri kaldırma işleminin işini yapmasına izin verin: Bu, ancak dosyaların% 100 okunması ve daha sonra bloklar yazmak yerine yeniden başvurulması gerektiği için yavaştır.
Zfs gönderme / alma ve fiziksel olarak kopyalama veya rsyncing yavaşlığı daha da kötüleşir çünkü çoğu şey sıkıştırılmış olarak saklanır ve okuma sırasında sıkıştırılmış, daha sonra yinelenen bloklara başvurmak için tekilleştirmeden önce sıkıştırılmış olmalıdır.
Tüm araştırmalarımda, btrfs'deki --reflink'in basitliğine benzeyen hiçbir şey bulamadım.
Peki, ZFS'de inek kopyaları oluşturmanın bir yolu var mı? Yoksa “fiziksel olarak” kopyalama ve tekilleştirme işleminin tek gerçek seçenek olmasını sağlıyor mu?