2 poin oleh GN⁺ 2024-03-13 | 1 komentar | Bagikan ke WhatsApp

Mengkloning Laptop dengan NVME TCP

  • Baru-baru ini membeli laptop baru dan perlu menyiapkannya untuk digunakan.
  • Tidak punya motivasi untuk mengulang langkah-langkah yang sudah umum diketahui.
  • Atas saran rekan kerja, mempertimbangkan cara menyalin disk lama ke laptop baru.

Pertanyaan tentang proses kloning

  • Tidak punya alat untuk membuka laptop lama dan menghubungkan disk baru melalui USB.
  • Menggunakan enkripsi seluruh disk, dan laptop lama memakai NVME 512GB, sedangkan laptop baru memakai NVME 1TB.
  • Tidak terbiasa mengubah ukuran partisi LUKS.

Saran dari rekan kerja

  • Disarankan menggunakan NVME over TCP untuk membagikan disk melalui jaringan dan melakukan penyalinan seluruh disk.
  • Langkah-langkah yang disarankan adalah sebagai berikut:
    • Mengekspor disk dari laptop lama menggunakan nvmet-tcp.
    • Melakukan penyalinan disk ke laptop baru.
    • Mengubah ukuran partisi agar menggunakan seluruh kapasitas 1TB.
    • Mengubah ukuran LUKS.
    • Terakhir, mengubah ukuran disk root BTRFS.

Mengekspor disk melalui NVME TCP

  • Disarankan bahwa cara termudah adalah menggunakan systemd-storagetm.service.
  • Sebagai gantinya, kedua laptop di-boot dengan GRML rescue CD dan dilakukan langkah untuk mengekspor disk NVME menggunakan modul nvmet-tcp.

Menyalin disk

  • Menggunakan perintah dd untuk menyalin disk root ke laptop baru.
  • Karena laptop baru tidak memiliki port Ethernet, hanya bisa menggunakan Wi-Fi, dan menyalin seluruh 512GB memakan waktu sekitar 7 jam 30 menit.
  • Kecepatan penyalinan sekitar 18-20MB/s.

Mengubah ukuran partisi dan kontainer LUKS

  • Saat menjalankan parted, terdeteksi bahwa tabel partisi tidak cocok dengan ukuran disk dan diminta untuk memperbaikinya.
  • Menginstal cloud-guest-utils lalu menggunakan growpart untuk memperluas partisi hingga 1TB.
  • Menggunakan cryptsetup-resize untuk memperbesar ukuran kontainer LUKS.
  • Setelah login ke sistem, ukuran file system BTRFS diubah.

Kesimpulan

  • Satu-satunya keuntungan dari proses ini adalah laptop baru bisa terasa sama persis seperti saat menggunakan laptop lama.
  • Menyiapkan laptop baru biasanya memakan waktu 1–2 minggu, tetapi dalam kasus ini waktu tersebut bisa dihemat.
  • Ada keuntungan tambahan berupa mempelajari cara mengekspor disk menggunakan NVME over TCP.

Opini GN⁺

  • Mengkloning laptop dengan NVME over TCP menawarkan cara yang efisien untuk memindahkan lingkungan sistem yang ada ke perangkat keras baru dengan cepat.
  • Teknik ini bisa menarik bagi administrator sistem atau pengembang karena dapat menghemat waktu dan meminimalkan kesalahan konfigurasi.
  • Namun, metode ini sangat bergantung pada kecepatan jaringan, dan jika hanya menggunakan Wi-Fi, waktu yang dibutuhkan bisa cukup lama, sehingga hal ini menjadi kekurangan yang perlu dipertimbangkan.
  • Ada alat seperti Clonezilla atau Acronis yang menyediakan fungsi serupa, tetapi NVME over TCP memiliki keunggulan unik berupa akses disk langsung melalui jaringan.
  • Saat menerapkan teknik ini, diperlukan pengetahuan yang memadai tentang konfigurasi jaringan, penanganan disk terenkripsi, dan pengubahan ukuran file system.

1 komentar

 
GN⁺ 2024-03-13
Komentar Hacker News
  • Dalam skenario penulis, tidak ada keuntungan menggunakan NVMe/TCP. Karena hanya memakai dd untuk melakukan penyalinan blok serial, I/O paralel tidak bisa dimanfaatkan. Perintah-perintah yang rumit itu bisa diganti dengan netcat yang sederhana.

    • Di laptop tujuan, gunakan $ nc -l -p 1234 | dd of=/dev/nvme0nX bs=1M.
    • Di laptop sumber, gunakan $ nc x.x.x.x 1234 </dev/nvme0nX.
    • Di sisi tujuan, dd melakukan buffering pada operasi tulis sehingga lebih cepat dan efisien. Jika menambahkan gzip/gunzip di sisi sumber/tujuan, seluruh proses bisa jauh lebih cepat bila disk tidak terisi penuh. Ini adalah cara favorit untuk membuat image PC lewat jaringan. Sebaiknya berikan opsi --fast pada gzip, atau ganti dengan lz4/unlz4 yang lebih cepat. Saya baru-baru ini memakainya saat membuat image laptop Windows baru dengan NVMe 1TB; lewat GigE butuh sekitar 20 menit, dan image hasilnya berukuran 20GB. Biasanya saya menyimpan image lz4 ini sebagai cadangan, lalu memulihkannya beberapa tahun kemudian dengan unlz4 | dd saat laptop akan didonasikan. Sangat praktis.
    • Saya tidak tahu soal modul kernel Linux nvme-tcp, tetapi setiap hari selalu belajar hal baru. Kegunaan modul ini lebih cocok untuk me-mount filesystem pada NVMe jarak jauh daripada mengaksesnya secara mentah dengan dd.
    • Di Linux, ukuran maksimum buffer pipe adalah 64kB, jadi argumen dd bs=X secara teknis tidak perlu lebih besar dari itu. Namun, bs=1M juga tidak merugikan (karena pembacaan 64kB akan dibuffer sampai mencapai 1MB) dan tetap berguna di masa depan bila ukuran pipe meningkat. Beberapa versi netcat punya opsi untuk mengontrol ukuran blok input dan output, sehingga kebutuhan memakai dd bs=X berkurang, tetapi pada disk pemulihan sistem biasanya yang tersedia adalah biner netcat tanpa opsi tersebut.
  • Menggunakan nbdkit dan nbdcopy jauh lebih sederhana.

    • nbdkit file /dev/nvme0n1
    • nbdcopy nbd://otherlaptop localfile
  • Saat harus menyiapkan laptop baru, menggunakan kabel USB-C untuk transfer 10Gb/s ternyata berguna. Selain itu, satu-satunya opsi lain hanyalah WiFi.

    • Saat kedua komputer dihubungkan, jaringan ad-hoc akan terbentuk dan transfer bisa dilakukan dengan rsync. Tautannya tampak sudah jenuh, jadi memakai protokol lain sepertinya tidak ada gunanya.
  • Baru-baru ini saya harus menyalin sekitar 200GB file lewat WiFi. Saya memakai rsync agar tidak perlu mulai dari awal jika koneksi putus, tetapi tetap memakan waktu setidaknya 6 jam. Saya penasaran apakah ada cara yang lebih baik.

    • Jaminan apa yang didapat dari metode dd? Apakah perlu membandingkan md5 dari perangkat blok hasilnya?
  • Saya tidak mengerti kenapa penulis tidak mem-pipe btrfs lewat jaringan. Buat dulu snapshot btrfs, lalu gunakan btrfs send => nc => network => nc => btrfs receive agar hanya blok yang sedang digunakan yang ditransfer.

  • Saat memindahkan laptop sebelumnya, saya menjalankan installer yang menggabungkan dd dan nc di kedua sisi. Kalau tidak salah ingat, saya juga menambahkan gzip agar transfer lebih cepat.

    • Laptop baru tidak punya port ethernet, jadi kompresi mungkin memberi sedikit peningkatan kecepatan dan kemungkinan lebih cepat daripada metode penulis.
  • Dengan Clonezilla, Anda bisa menyalin hanya blok data yang benar-benar terpakai dan menyesuaikan partisi secara otomatis. Saya selalu memakai cara ini.

    • Biasanya saya melepas disk NVMe dari laptop lalu memasukkannya ke dock berkecepatan tinggi.
  • Sudah puluhan tahun saya sebenarnya tidak lagi "menginstal" OS; saya cukup menyalin file dan menyesuaikannya sesuai kebutuhan. Biasanya ini juga jadi kesempatan untuk membuat filesystem baru dan memperbarui tipe/parameter filesystem (misalnya ukuran blok), enkripsi, dan sebagainya, lalu mentransfer file dengan rsync.

    • Meski begitu, bagi orang yang suka merencanakan semuanya, pendekatan yang lebih deklaratif seperti NixOS mungkin lebih baik. Di sana Anda cukup menyalin konfigurasinya lalu memasang ulang semuanya secara otomatis.
  • Tidak ada penyebutan tentang FDT (Fast Data Transfer).

    • Sayangnya ini adalah perangkat lunak luar biasa yang ditulis dalam Java (dari sisi performa transfer). Opsi CLI-nya tidak intuitif, tetapi ini adalah transfer tercepat yang pernah saya lihat.
    • Saking cepatnya, kadang seluruh jaringan lokal bisa tersedot jika kecepatannya tidak dibatasi secara artifisial.
    • Dengan opsi -limit <rate>, kecepatan transfer bisa dibatasi ke laju tertentu. Sufiks K(KiloBytes/s), M(MegaBytes/s), G(GigaBytes/s) dapat digunakan.
    • Ini menyebabkan fragmentasi file di sisi tujuan, tetapi pada praktiknya tidak terlalu penting bagi siapa pun.