Cara tercepat untuk mengubah disk berformat ext4 ke LVM dengan ext4?

12

Saat ini saya sedang melakukan cp -aRuntuk menyalin data dari disk saya yang diformat ext4 1TB (99% penuh) ke disk LVM-dengan-ext4-on-it yang baru. Itu berlangsung selamanya.

Apakah ada cara untuk mencoba "mengubah" disk pada tempatnya? Saya menggunakan EC2 sehingga pencadangan membutuhkan waktu beberapa menit.

Atau sebagai alternatif, apakah ada cara yang mungkin lebih cepat daripada cplangsung menyalin sistem file ext4 ke disk LVM?

Maks
sumber

Jawaban:

22

Saya menulis blok (née lvmify) yang melakukan konversi ini di tempat. Ia bekerja dengan mengecilkan filesystem sedikit, memindahkan awal filesystem ke akhir partisi, dan menyalin superblock LVM (pra-konfigurasi dengan PV / LV / VG tepat) di tempatnya.

Gabriel
sumber
ini terdengar sangat menarik! Saya berpikir untuk mencadangkan 500GB ke partisi lain (yang sudah lvm) hanya untuk mencobanya!
Aquarius Power
1
@ Gabriel, apakah ini akan bekerja pada live fs? Maksud saya, apakah saya perlu meng-unmount FS, dan kemudian melakukannya di tempat, atau bahkan akan bekerja pada ar / w mount root FS?
Gavriel
1
@AmrMostafa: "Pretty" solid? Saya memiliki hal ini tentang sistem file saya, saya membutuhkan mereka untuk menjadi batu padat ... :-)
TJ Crowder
3
Pengguna Ubuntu Trusty + akan merasa sulit untuk menginstal python 3.3 yang diperlukan .. hanya 3,4 tersedia dan blok belum diperbarui sejak Des 2014: /
bksunday
1
Terlepas dari kenyataan bahwa itu diperbarui 5 telinga yang lalu, itu berhasil. Dikonfirmasi pada NVMe SSD, skema partisi GPT. Catatan: lebih baik gunakan Python 3.6.
tosh
2

Saya tidak yakin tentang cara mengkonversi disk langsung, tetapi saya pikir rsync akan menjadi cara yang lebih baik dan lebih aman untuk menyalin data Anda. Ini akan memungkinkan Anda untuk melanjutkan dan menjaga data tetap utuh jika transfer berhenti.

Saya memang menemukan proses serupa diselesaikan oleh seseorang menambahkan drive eksternal ke sistem lokal mereka sebagai LVM. Tidak ada banyak informasi, tetapi saya pikir itu sudah cukup untuk memulai:

"Jadi hari ini saya menemukan yang luar biasa yaitu LVM. Menginstal Debian, saya memilih" LVM - Gunakan seluruh disk ". Tetapi drive utama adalah drive laptop 5200rpm yang kecil dan lambat. Hari ini saya memasukkan drive 1,5TB cadangan saya dan boot. Dicari sistem pada drive yang lebih besar lebih cepat ini sebagai gantinya.

Pendekatan LVM: tambahkan / dev / sdc ke grup volume, lalu jalankan "pvmove / dev / sda". Ini memindahkan semua data dari sda ke drive lain (hanya sdc tersedia). Tidak perlu reboot, tidak perlu melepas. Sementara saya menulis ini, data sedang dipindahkan.

Kemudian, lakukan "vgreduce megatron / dev / sda" untuk menghapus drive lambat dari grup volume dan voila. Data dipindahkan. (megatron adalah nama grup volume dan komputer saya). Ini mungkin berita lama bagi banyak orang, tetapi saya hanya berpikir ini sangat keren :) "

Memang ini dilakukan secara lokal, tapi saya pikir dengan penelitian tambahan, Anda mungkin bisa menyelesaikan ini.

sumber

bmurtagh
sumber
2

Tidak ada metode untuk melakukan konversi LVM "on the fly".

LVM sebenarnya berada di bawah sistem file Anda untuk memperluasnya di beberapa perangkat fisik, atau strip atau mirror itu, dll. Langkah terakhir dalam membuat volume logis adalah meletakkan sistem file di atasnya. Berikut adalah contoh dari RHEL6.

Yang perlu Anda lakukan adalah membuat cadangan atau mengarsipkan data pada perangkat itu, lalu hancurkan sistem file yang ada, buat volume logis, dan pasang kembali sistem file di atas. Jika ini adalah sistem file root pada OS linux, pertimbangkan untuk melakukan instalasi ulang. Mungkin lebih cepat.

Untuk salinan yang lebih cepat, saya suka dd, tetapi saya tidak sering menggunakannya. Melakukan kesalahan dengan dditu berbahaya. Satu hal yang dapat Anda coba adalah tar czv <source fs> | (cd <destination fs>; tar x)yang akan mentransfer file tar terkompresi dengan cepat.

Semoga berhasil!

dafydd
sumber
1
Menggunakan kompresi dalam operasi tar tidak masuk akal sama sekali. Satu-satunya tempat data akan dikompresi adalah di memori karena disalurkan; itu kemudian segera dikompresi lagi sebelum ditulis ke disk. Hanya sekarang, operasi menghasilkan beban CPU beberapa kali lebih banyak karena itu mengompresi dan tanpa kompresi, sia-sia, dengan cepat. Juga, untuk operasi apa pun yang melibatkan seluruh sistem file ini, Anda setidaknya tar cSf - | tar xvpf - ingin menangani file & izin yang jarang. Mungkin --selinuxjuga (jika volume tujuan selanjutnya akan menggantikan sumber).
FeRD
Itu poin yang bagus jika perangkat sumber dan tujuan Anda berada di host yang sama atau jika Anda tidak memiliki siklus CPU untuk cadangan. Itu adalah poin untuk dipertimbangkan kasus per kasus. Saya suka switch "S" dan "p" dan argumen "--selinux".
dafydd
Mmm, well, jika ada orang yang mengkloning sistem file dengan mem-pip-kan operasi tar on-the-fly melalui tautan jaringan, maka (a) mereka lebih berani daripada saya, tetapi (b) Anda mungkin TIDAK mau -pkecuali tuan rumah berbagi nama pengguna / UID (meskipun halaman manual mengingatkan saya bahwa itu -padalah default untuk GNU tar ketika dijalankan sebagai root), dan --selinuxpenuh dengan bahaya yang lebih besar - mungkin lebih baik untuk hanya melakukan restorecon -Rv(atau -Rp) atas semuanya setelah dipasang di yang benar (final) ) lokasi.
FeRD
dd adalah alat yang tepat untuk operasi ini karena Anda menyalin partisi. dd akan membuat salinan persis pada partisi baru, lalu Anda mengubah fstab untuk memuat dari partisi baru, bukan yang lama. Setelah Anda selesai memindahkan semua partisi dari drive lama, Anda dapat menghancurkan filesystem dan menambahkan drive ke grup disk fisik LVM, dan kemudian menggunakan ruang untuk memperluas partisi seperti yang Anda inginkan.
Xalorous