Bagaimana cara mengubah sistem partisi fisik ke LVM?

10

Saya memiliki server dengan Debian yang memiliki 3 partisi fisik yang mencakup semua disk: boot, root y swap. Sekarang saya ingin mengganti partisi itu dengan partisi LVM. Saya tahu cara menginstal Debian dengan LVM di awal, tetapi dalam hal ini saya tidak dapat menginstal sistem di awal karena penyedia memberi saya server dengan akses jarak jauh dan sistem diinstal dengan cara ini.

Bagaimana saya bisa mengubah partisi itu hanya menggunakan koneksi ssh dan mungkin server jarak jauh lainnya tempat menyimpan data sementara?

Daniel Hernández
sumber
2
Catatan untuk pemilih dekat: Ini bukan penipuan dari pertanyaan yang dirujuk karena ada twist di sini: sepenuhnya jauh.
sysadmin1138

Jawaban:

-1

Anda tidak dapat menggantinya di server yang berjalan hanya dengan partisi /, / boot dan <swap>. Satu-satunya cara untuk melakukannya adalah dengan meng-unmount partisi /, mengecilkannya dan membuat partisi LVM baru di akhir, tetapi karena Anda hanya memiliki akses ssh jarak jauh, Anda tidak dapat mengecilkan partisi yang hidup, yang dipasang tanpa korupsi data.

mricon
sumber
3
Dimungkinkan untuk mengubah ukuran sistem file ext3 ketika sedang terpasang: linux.die.net/man/8/ext2online .
200_success
6
Never say never ...
the-wabbit
21

Pembaruan cepat dari sisi saya. Konteks: hari ini saya online server khusus yang diinstal dengan skema partisi fisik bukan LVM. Ada 3 partisi:

/ boot (ext4) - 512M / (ext4) - 730G swap - 8G

Karena sifat tidak memiliki akses konsol, tujuan akhir adalah mengubah partisi root yang ada menjadi LVM.

Mengingat ext4 tidak menyusut, satu-satunya cara adalah menggunakan kembali partisi swap sebagai root sementara. Saya juga memutuskan untuk mengatur root sementara dengan LVM untuk memastikan prosesnya dapat bekerja dengan cara yang benar.

Pertama kali swap berubah:

swapoff -a

Kemudian mengubah ukuran partisi melalui parted (awalnya dimulai dari 742 hingga 750):

parted
resize 3 742 744

dan membuat partisi untuk LVM:

mkpart primary ext2 744 750
set 4 lvm on

Pembuatan sistem file PV / VG / LV / untuk root temp:

pvcreate /dev/sda4
vgcreate VolGroup00 /dev/sda4
lvcreate -L 5.73G -n tmproot VolGroup00
mkfs.ext4 /dev/VolGroup00/tmproot

Langkah selanjutnya adalah menyalin root ke tempat sementara:

mount /dev/VolGroup00/tmproot /media
rsync -ravzxq / /media/

Setelah semuanya ada di sana maka entri untuk sistem file root di / media / etc / fstab harus diubah juga:

/dev/VolGroup00/tmproot /                       ext4    defaults        1 1

Hampir sampai, bagian terakhir dan katakanlah bagian yang paling tidak diinginkan tanpa akses konsol adalah untuk memodifikasi /boot/grub/grub.conf:

entri asli:

title CentOS (2.6.32-279.22.1.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-279.22.1.el6.x86_64 ro root=UUID=e769af21-d9e1-455f-a6a7-7a9c84d8cbea rd_NO_LUKS LANG=en_US.UTF-8  KEYBOARDTYPE=pc KEYTABLE=hu rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_NO_LVM rd_NO_DM rhgb quiet
initrd /initramfs-2.6.32-279.22.1.el6.x86_64.img

entri yang dimodifikasi:

title CentOS (2.6.32-279.22.1.el6.x86_64) LVM
insmod lvm
kernel /vmlinuz-2.6.32-279.22.1.el6.x86_64 ro LANG=en_US.UTF-8  KEYBOARDTYPE=pc KEYTABLE=hu SYSFONT=latarcyrheb-sun16 crashkernel=auto dolvm root=/dev/mapper/VolGroup00-tmproot panic=10 
#rd_NO_DM rd_NO_MD rd_NO_LUKS
initrd /initramfs-2.6.32-279.22.1.el6.x86_64.img

Hanya untuk berada di sisi yang aman: insmod lvm ditambahkan bersama dengan parameter dolvm untuk kernel dan path root juga diubah menjadi root = / dev / mapper / VolGroup00-tmproot. Penting untuk menggunakan / dev / mapper / path saat ini. Sebagai deposit keselamatan saya juga menambahkan parameter panik = 10 dan tidak mengubah entri boot default di header. Alih-alih itu saya pergi untuk mencoba dengan memberitahu grub untuk boot dengan pengaturan baru hanya satu kali dan jika gagal entri asli bisa berfungsi:

grub
savedefault --default=1 --once

Dan akhirnya:

reboot

Itu baik-baik saja bagi saya pada pertama kali jadi saya mengulangi seluruh prosedur dengan membuat grup volume baru di atas partisi root asli dan akhirnya saya mendapatkan root di tempat yang tepat menggunakan LVM.

Semoga ini membantu.

uha
sumber
1
Ini bekerja dengan sangat baik bagi saya untuk mengonversi pengaturan 2 disk raid 1 ke LVM pada raid 1 sepenuhnya jauh (sudah ada beberapa disk cadangan yang sudah diinstal). Di grub2 meskipun cara baru untuk reboot ke entri menu sekali saja adalah mengedit file / etc / default / grub Anda terlebih dahulu untuk memastikan GRUB_DEFAULT = disimpan. Lalu update-grub. Kemudian Anda menjalankan grub-reboot #untuk mengatur item menu yang akan digunakan untuk reboot berikutnya. Lalu Anda bisa reboot.
Casey
Ubuntu (dan debian) memiliki sistem sendiri untuk memodifikasi konfigurasi grub. Memperbarui partisi root di dalamnya dapat dilakukan lebih bersih dengan cara yang ditentukan di sini: unix.stackexchange.com/a/5318/192211
Efraim
3

Tidak ada yang mustahil di Linux, tetapi Anda harus bertekad dan gila untuk mencoba apa yang Anda gambarkan. Ingatlah bahwa jika Anda hanya memiliki akses SSH, ada kemungkinan Anda akan kehilangan akses ke server jika Anda melakukan kesalahan. Jika Anda memiliki konsol "serial" jarak jauh dan sakelar daya virtual, itu bisa membantu sedikit. Yang mengatakan, jika Anda memiliki instalasi baru tanpa kehilangan data, mengapa tidak mencobanya? Saya menemukan tutorial untuk mengubah sistem Linux dari jarak jauh menjadi RAID1 ; langkah-langkah yang Anda coba untuk LVM akan analog.

Pertama, mari kita pertimbangkan perlunya ruang penyimpanan sementara. Dengan asumsi Anda tidak memiliki disk kedua di server, Anda bisa mengecilkan partisi yang ada menggunakanparted . Tentu saja, ini mengharuskan boot dan partisi root Anda menggunakan kurang dari setengah dari disk, dan mereka harus menggunakan sistem file menyusut. (XFS dan JFS, misalnya, tidak dapat menyusut.)

Setelah menyusut partisi yang ada, Anda dapat membuat volume fisik LVM di ruang yang dibebaskan, grup volume dan volume logis di dalamnya. Gandakan sistem file Anda. (Ketika mereplikasi sistem file root Anda, Anda harus membunuh semuanya kecuali sshd, dan idealnya berada dalam mode pengguna tunggal. Anda mungkin harus menggunakan rsyncdaripada ddkarena Anda mereplikasi sistem file yang terpasang.)

Kemudian, Anda akan menyiapkan initrd dengan dukungan LVM dan memberitahu GRUB untuk boot ke sistem baru, seperti yang dijelaskan dalam tutorial Warren Togami. Setelah Anda melakukannya, itu adalah masalah sederhana untuk menghapus filesystem lama menggunakan parteddan mengembangkan volume LVM.

Semoga berhasil! Beri tahu kami jika itu berhasil!

200_sukses
sumber
3

Saya sebelumnya telah memigrasi partisi root saya "/" yang menunjuk ke partisi disk "/ dev / sda2" dengan 10G pada centos 6 ke partisi LV, langkah-langkah yang dilakukan adalah sebagai berikut:

  • Tambahkan hard disk pada VMware 10G.
  • mengenali disk tanpa me-reboot sistem.
ls / sys / class / scsi_host / | saat membaca x; do echo "- - -"> / sys / class / scsi_host / $ {x} / scan; selesai
  • Buat partisi pada disk baru, anggap saja disk baru saya adalah / dev / sdb
  • Bekerja dengan :
fdisk / dev / sdb
  • Berada di antarmuka "fdisk" memungkinkan membuat partisi dengan tombol "n" menetapkan + 9G kapasitas, kemudian mengubah tipe partisi dengan kunci "t" menetapkan "8e" (partisi lvm) dan akhirnya kunci "w" untuk menerapkan perubahan , jika Anda ingin melihat bagaimana tabel partisi Anda dapat menekan tombol "p".
  • setelah partisi dibuat, kami dapat memvalidasi bahwa perangkat dibuat dengan perintah berikut (perintah berfungsi saat disk tidak digunakan):
partprobe / dev / sdb
  • begitu perangkat keluar secara fisik, mari kita membuat objek LVM dengan urutan sebagai berikut:
pvcreate / dev / sdb1
vgcreate vg_root / dev / sdb1
lvcreate -v -n lv_root vg_root -L 9G
  • begitu unit LV telah dibuat, mari tetapkan FS dan pasang ke sistem saat ini.
mkfs -t ext4 / dev / vg_root / lv_root
mkdir / mnt / new_root /
mount -t ext4 / dev / vg_root / lv_root / mnt / new_root /
  • jika Anda tidak tahu apa FS dari partisi Anda saat ini dapat diketahui dengan perintah seperti:
df -lhT
cat / etc / fstab
blkid
  • ketika LV baru dipasang, kita dapat melanjutkan untuk menyalin semua file sistem.
temukan / -xdev | cpio -pmvd / mnt / new_root /
  • setelah file disalin, kita dapat melanjutkan untuk mengubah "chroot" tetapi sebelum memasang beberapa partisi:
cd / mnt / new_root /
mount -t proc / proc proc
mount -t sysfs / sys sys /
mount --rbind / dev dev /
  • mari sekarang ubah chroot
chroot / mnt / new_root /
  • begitu kita berada di root baru, modifikasi file:
vi / etc / fstab
  • meninggalkan file yang hampir mirip dengan:
# UUID = 98dd25ba-feed-4ddb-80be-5e2d1ab2bdaa / ext4 default 1 1
/ dev / mapper / vg_root-lv_root / ext4 default 1 1
  • Setelah file dimodifikasi dengan benar, mari kita membuat file di root dengan nama "./autorelabel" untuk berjaga-jaga jika bekerja dengan SELINUX "menegakkan" atau "permisif".
sentuh ./autorelabel
  • Sekarang mari kita pergi dari lingkungan chroot dari / mnt / new-root
keluar
  • Jika perubahan telah dilakukan berdasarkan skenario Anda, mari kita lakukan salah satu dari perubahan terakhir, yaitu memodifikasi file grub "/boot/grub/grub.conf", menambahkan menu baru (jangan modifikasi opsi booting Anda saat ini sampai yang baru satu tambahan berfungsi dengan benar).
# sebelum
judul CentOS 6 (2.6.32-573.el6.x86_64)
        root (hd0,0)
        kernel /vmlinuz-2.6.32-573.el6.x86_64 ro root = UUID = 98dd25ba-feed-4ddb-80be-5e2d1ab2bdaa rd_NO_LUKS LANG = en_US.UTF-8 rd_NO_MD SYSFONT = latarcyrheb-sun16 crashkernel = auto KEYBOARDTYPE = pc KEYTABLE = kami rd_NO_DM rhgb sepi
        initrd /initramfs-2.6.32-573.el6.x86_64.img

# sekarang
judul CentOS 6 (2.6.32-573.el6.x86_64)
        root (hd0,0)
        kernel /vmlinuz-2.6.32-573.el6.x86_64 ro root = UUID = 98dd25ba-feed-4ddb-80be-5e2d1ab2bdaa rd_NO_LUKS LANG = en_US.UTF-8 rd_NO_MD SYSFONT = latarcyrheb-sun16 crashkernel = auto KEYBOARDTYPE = pc KEYTABLE = kami rd_NO_DM rhgb sepi
        initrd /initramfs-2.6.32-573.el6.x86_64.img

judul CentOS 6 (2.6.32-573.el6.x86_64-lvroot)
        root (hd0,0)
        insmod lvm
        kernel /vmlinuz-2.6.32-573.el6.x86_64 ro dolvm root = / dev / mapper / vg_root-lv_root rd.lvm.lv = vg_root / lv_root LANG = id_ID = pc KEYTABLE = us rhgb sepi
        initrd /initramfs-2.6.32-573.el6.x86_64.img

# Baris yang ditambahkan sebelumnya adalah # 
judul CentOS 6 (2.6.32-573.el6.x86_64-lvroot)
        root (hd0,0)
        insmod lvm
        kernel /vmlinuz-2.6.32-573.el6.x86_64 ro dolvm root = / dev / mapper / vg_root-lv_root rd.lvm.lv = vg_root / lv_root LANG = id_ID = pc KEYTABLE = us rhgb sepi
        initrd /initramfs-2.6.32-573.el6.x86_64.img
  • Setelah perubahan pada file grub dilakukan, mari selesaikan regenerasi file iso initrd baru:
cd / boot
cp -av initramfs - $ (uname -r) .img initramfs - $ (uname -r) .img.old
dracut -f
  • akhirnya reboot:
init 6
# atau
reboot
  • Setelah menu grub muncul, pilih yang baru ditambahkan "CentOS 6 (2.6.32-573.el6.x86_64-lvroot)" dan validasikan bahwa ia berfungsi dengan baik.
  • Jika sistem berfungsi dengan baik dan tidak menggunakan "/ dev / sda", itu dapat dihapus dan dilepaskan dari VM Anda atau server fisik.
dd jika = / dev / nol = / dev / sda bs = 1
  • Curam terakhir yang ditetapkan sebagai entri default, item baru ditambahkan pada menu grub "/boot/grub/grub.conf":
# default = 0
default = 1

Semoga informasi yang diberikan sebelumnya dapat bermanfaat bagi seseorang.

Terima kasih sebelumnya,

Manuel Lazo

Manuel Lazo
sumber
1

Dia dapat mengatur sistem penyelamatan menengah ke dalam partisi swap (yang sebelumnya dinonaktifkan) (pekerjaan yang merusak saraf untuk dilakukan jika Anda tidak memiliki RAC di dalam mesin) dan bekerja dari sana. Juga, alat pengubahan ukuran online ada untuk sistem file tertentu, dan kemudian menyusutkan partisi setelahnya dan me-reboot adalah kasus KWYD tetapi mungkin.

pemeras dan prajurit
sumber
Untuk mendeskripsikan dua ide gila yang bahkan dapat bekerja dengan hanya SATU partisi pada disk: a) buat file kosong besar pada partisi root dengan memastikannya dialokasikan secara kontinyu, kerjakan melalui pengandar loopback ... lalu jalankan tabel partisi untuk memulai partisi pada blok fisik pertama file itu. b) chroot (atau bahkan pivot_root jika masih memungkinkan) diri Anda ke dalam ramdisk dan mengatur basis dan cadangan di sana ... nuke filesystem root yang sebenarnya di bawah Anda.
rackandboneman