2 puan yazan GN⁺ 2024-03-13 | 1 yorum | WhatsApp'ta paylaş

NVME TCP ile dizüstü bilgisayar klonlama

  • Yakın zamanda yeni bir dizüstü bilgisayar satın aldım ve kullanım için ayarlamam gerekiyordu.
  • Daha önce bilinen adımları tekrar etme konusunda hiç hevesim yoktu.
  • Bir çalışma arkadaşımın önerisiyle, mevcut diski yeni dizüstü bilgisayara kopyalama yöntemini değerlendirdim.

Klonlama süreciyle ilgili sorular

  • Mevcut dizüstü bilgisayarı açıp yeni diski USB ile bağlayacak bir aracım yoktu.
  • Tam disk şifrelemesi kullanıyorum; mevcut dizüstü bilgisayarda 512GB, yenisinde ise 1TB NVME bulunuyor.
  • LUKS bölümünü yeniden boyutlandırma konusunda deneyimli değilim.

Çalışma arkadaşımın önerisi

  • Diski ağ üzerinden paylaşmak ve tam disk kopyası almak için NVME over TCP kullanmamı önerdi.
  • Önerilen adımlar şunlardı:
    • Mevcut dizüstü bilgisayarda nvmet-tcp kullanarak diski dışa aktarmak.
    • Yeni dizüstü bilgisayara disk kopyasını gerçekleştirmek.
    • Bölümü 1TB alanın tamamını kullanacak şekilde yeniden boyutlandırmak.
    • LUKS boyutunu yeniden ayarlamak.
    • Son olarak BTRFS kök diskinin boyutunu yeniden ayarlamak.

NVME TCP ile diski dışa aktarma

  • Bunun için en kolay yol olarak systemd-storagetm.service kullanılması önerildi.
  • Ancak bunun yerine her iki dizüstü bilgisayarı da GRML rescue CD ile başlatıp nvmet-tcp modülünü kullanarak NVME diski dışa aktarma adımlarını uyguladım.

Disk kopyalama

  • Kök diski yeni dizüstü bilgisayara kopyalamak için dd komutunu kullandım.
  • Yeni dizüstü bilgisayarda Ethernet portu olmadığı için yalnızca Wi‑Fi kullanmak zorunda kaldım ve 512GB verinin tamamını kopyalamak yaklaşık 7,5 saat sürdü.
  • Kopyalama hızı yaklaşık 18-20MB/s idi.

Bölüm ve LUKS kapsayıcısını yeniden boyutlandırma

  • parted çalıştırıldığında, bölüm tablosunun disk boyutuyla eşleşmediğini algıladı ve düzeltme istedi.
  • cloud-guest-utils paketini kurup growpart kullanarak bölümü 1TB'a kadar genişlettim.
  • cryptsetup-resize ile LUKS kapsayıcısının boyutunu artırdım.
  • Sistemde oturum açtıktan sonra BTRFS dosya sistemini yeniden boyutlandırdım.

Sonuç

  • Bu sürecin tek avantajı, yeni dizüstü bilgisayarı kullanırken eski dizüstü bilgisayardaki deneyimin aynısını hissettirmesi.
  • Normalde yeni bir dizüstü bilgisayarı ayarlamak 1-2 hafta sürüyor, ancak bu durumda o zamandan tasarruf edilebildi.
  • Ek bir avantaj olarak, NVME over TCP ile diski dışa aktarmayı öğrenmiş oldum.

GN⁺ görüşü

  • NVME over TCP ile dizüstü bilgisayar klonlama, mevcut sistem ortamını yeni donanıma hızla taşımak için verimli bir yöntem sunuyor.
  • Bu teknoloji, sistem yöneticileri ve geliştiriciler için zaman kazandıran ve yapılandırma hatalarını azaltabilen ilgi çekici bir yaklaşım olabilir.
  • Ancak ağ hızına büyük ölçüde bağımlıdır; yalnızca Wi‑Fi kullanıldığında ciddi zaman alabilmesi dikkate alınması gereken bir dezavantajdır.
  • Benzer işlevler sunan Clonezilla veya Acronis gibi araçlar bulunsa da, NVME over TCP ağ üzerinden doğrudan disk erişimi sağlamasıyla kendine özgü bir avantaj sunar.
  • Bu tekniği uygularken ağ yapılandırması, şifreli disklerin işlenmesi ve dosya sistemi yeniden boyutlandırma konularında yeterli bilgiye sahip olmak gerekir.

1 yorum

 
GN⁺ 2024-03-13
Hacker News yorumu
  • Yazarın senaryosunda NVMe/TCP kullanmanın bir avantajı yok. Sadece dd ile seri blok kopyalama yapıldığı için eşzamanlı I/O'dan yararlanılamıyor. Karmaşık komutlar basit netcat ile değiştirilebilir.

    • Hedef dizüstü bilgisayarda $ nc -l -p 1234 | dd of=/dev/nvme0nX bs=1M kullanın.
    • Kaynak dizüstü bilgisayarda $ nc x.x.x.x 1234 </dev/nvme0nX kullanın.
    • Hedefte dd, yazma işlemlerini tamponlayarak işi daha hızlı ve verimli hale getirir. Kaynak/hedef tarafına gzip/gunzip eklenirse, disk tamamen dolu değilse tüm işlem çok daha hızlı olur. Bu, ağ üzerinden PC imajı almanın en sevdiğim yolu. gzip için --fast seçeneğini vermek ya da daha hızlı lz4/unlz4 ile değiştirmek iyi olur. Kısa süre önce 1TB NVMe içeren yeni bir Windows dizüstü bilgisayarı imajlarken bunu kullandım; GigE üzerinden yaklaşık 20 dakika sürdü ve ortaya çıkan imaj 20GB oldu. Genelde bu lz4 imajını yedekliyorum ve birkaç yıl sonra dizüstü bilgisayarı bağışlarken unlz4 | dd ile geri yüklüyorum. Çok kullanışlı.
    • Linux çekirdek modülü nvme-tcpyi bilmiyordum ama insan her gün yeni bir şey öğreniyor. Bu modülün faydası, dd ile ham erişim yapmaktan çok uzak NVMe üzerinde bir dosya sistemini mount etmekte.
    • Linux'ta azami pipe tampon boyutu 64kB olduğundan dd bs=X argümanının teknik olarak bundan büyük olmasına gerek yok. Yine de bs=1M zararlı değil (64kB okumaları 1MB olana kadar tamponlar) ve pipe boyutu büyürse gelecekte de işe yarar. Bazı netcat sürümlerinde giriş ve çıkış blok boyutunu kontrol eden seçenekler var; bu da dd bs=X kullanma ihtiyacını azaltıyor. Ama sistem kurtarma disklerinde genelde bu seçeneklere sahip olmayan netcat ikilisi kullanılıyor.
  • nbdkit ve nbdcopy kullanmak çok daha basit.

    • nbdkit file /dev/nvme0n1
    • nbdcopy nbd://otherlaptop localfile
  • Yeni dizüstü bilgisayarı kurmam gerektiğinde, USB-C kablosuyla 10Gb/s aktarım yapabilmek faydalı oldu. Diğer seçenek olarak yalnızca WiFi vardı.

    • Bilgisayarları bağlayınca ad-hoc ağ oluşuyor ve rsync ile aktarım yapılabiliyor. Bağlantı zaten tam kapasite çalışıyor gibi göründüğünden başka bir protokol kullanmanın anlamı yok.
  • Kısa süre önce WiFi üzerinden yaklaşık 200GB dosya kopyalamam gerekti. Bağlantı koparsa baştan başlamamak için rsync kullandım ama yine de en az 6 saat sürdü. Daha iyi bir yöntem olup olmadığını merak ediyorum.

    • dd yöntemiyle ne tür bir garanti elde ediliyor? Ortaya çıkan blok düzeyi aygıtın md5 değerini karşılaştırmak mı gerekir?
  • Yazarın neden ağ üzerinden btrfs pipe etmediğini anlayamıyorum. Önce bir btrfs snapshot'ı oluşturup ardından btrfs send => nc => network => nc => btrfs receive ile yalnızca kullanımda olan bloklar aktarılabilirdi.

  • Daha önce dizüstü bilgisayar aktarırken iki tarafta da dd ve nc birleştiren kurulum aracı çalıştırdım. Hatırladığım kadarıyla aktarımı hızlandırmak için gzip de eklemiştim.

    • Yeni dizüstü bilgisayarda Ethernet portu yoktu; bu yüzden sıkıştırma biraz hız kazandırmış olabilir ve yazarın yönteminden daha hızlı olmuş olabilir.
  • Clonezilla kullanırsanız yalnızca gerçek veri bloklarını kopyalar ve bölümleri otomatik olarak ayarlayabilir.

    • Ben hep bu yöntemi kullanıyorum.
    • Genelde NVMe diski dizüstü bilgisayardan çıkarıp yüksek hızlı bir dock'a takıyorum.
  • On yıllardır fiilen bir işletim sistemi "kurmadım"; dosyaları kopyalayıp gerektiği kadar ayarlıyorum. Genelde bunu yeni bir dosya sistemi oluşturup dosya sistemi türü/parametreleri (ör. blok boyutu), şifreleme vb. şeyleri güncellemek için bir fırsat olarak kullanıyor ve dosyaları rsync ile aktarıyorum.

    • Yine de planlı hareket eden biri için NixOS gibi daha deklaratif bir yaklaşım daha iyi olabilir. Burada yalnızca yapılandırmayı kopyalayıp sonra her şeyi otomatik olarak yeniden kurabilirsiniz.
  • FDT'den (Fast Data Transfer) hiç bahsedilmemiş.

    • Ne yazık ki Java ile yazılmış, ama aktarım performansı açısından olağanüstü bir yazılım. CLI seçenekleri pek sezgisel değil ama gördüğüm en hızlı aktarım bu.
    • O kadar hızlı ki, hızını yapay olarak sınırlamazsanız bazen tüm yerel ağı meşgul ediyor.
    • -limit <rate> seçeneğiyle aktarım hızını belirtilen değerde sınırlayabilirsiniz. Sonek olarak K(KiloBytes/s), M(MegaBytes/s), G(GigaBytes/s) kullanılabilir.
    • Hedefte dosya parçalanmasına yol açıyor ama pratikte bunun kimse için bir önemi yok.