Bagaimana cara memperpanjang partisi Linux PV online setelah pertumbuhan disk virtual

14

VMware memungkinkan untuk memperluas ukuran disk virtual online - ketika VM sedang berjalan. Langkah-langkah yang diharapkan selanjutnya untuk sistem Linux adalah:

  1. memperpanjang partisi: hapus dan buat yang lebih besar dengan fdisk
  2. memperpanjang ukuran PV dengan pvresize
  3. gunakan ekstensi gratis untuk lvresizeoperasi
  4. dan kemudian resize2fsuntuk sistem file

Tapi saya terjebak pada langkah pertama: fdiskdan sfdiskmasih menampilkan ukuran lama untuk disk.

Disk saya adalah disk virtual SCSI yang terhubung berkat pengontrol LSI Logic virtual.

Bagaimana cara me-refresh informasi ukuran disk dan tabel partisi virtual yang tersedia di kernel Linux tanpa reboot ?

Sejauh yang saya tahu semua langkah itu mungkin untuk menjalankan Windows, tanpa reboot dan bahkan tanpa tindakan pengguna apa pun berkat alat VMWare. Di Linux, saya berharap untuk melakukan semua langkah online juga dan saya sudah tahu langkah 2, 3 dan 4 bekerja online. Tetapi yang pertama - mengubah ukuran partisi yang dideklarasikan dalam tabel partisi (masih) tampaknya membutuhkan reboot.

Pembaruan: Sistem saya adalah Debian Lenny dengan kernel 2.6.26 dan disk yang saya perpanjang adalah disk utama dengan PV besar yang berisi "root" LV untuk "/".

Yves Martin
sumber

Jawaban:

9

Anda dapat melakukan ini tanpa reboot. pvresize tidak mengubah ukuran volume fisik hingga partisi diperbarui dengan ruang yang ditambahkan. Anda harus fdisk partisi dan membuatnya kembali dengan ukuran penuh baru dari disk, setelah Anda dapat memindai ulang drive untuk itu untuk melihat ruang ekstra di tempat pertama.

Info lebih lanjut: http://theducks.org/2009/11/expanding-lvm-partitions-in-vmware-on-the-fly/

GRegg
sumber
Saya setuju tapi apa pun yang saya lakukan untuk memindai ulang drive SCSI, saya tidak pernah melihat ukuran disk baru di fdisk, jadi saya macet sampai reboot pertama. Dan "partprobe" adalah perintah baru bagi saya. Jelas saya harus menguji prosedur ini ... Terima kasih.
Yves Martin
Untuk informasi partprobeadalah perintah dari partedproyek.
Yves Martin
Jika Anda tidak melihat ukuran disk baru fdiskmaka masalahnya bukan pada LVM. Saya harus bertanya bagaimana Anda memindai karena itu biasanya mengambil ukuran disk baru kepada saya. Saya juga tidak mempartisi disk saya akan menggunakan LVM jika saya bisa membantu. Jika Anda pvcreateseluruh disk kemudian memperbarui tabel partisi hanya satu hal yang harus Anda lakukan ketika Anda mengubah ukurannya.
Bratchley
14

Jawaban lainnya asalkan tidak menjawab pertanyaan Anda, saya telah mengidentifikasi perintah yang benar untuk memindai ulang disk yang sudah terhubung.

Kami harus memindai ulang disk yang sudah terhubung, pertama-tama mengidentifikasi disk yang ingin Anda pindai ulang.

ls /sys/class/scsi_disk/

Dalam contoh saya, saya melihat symlink bernama 0:0:0:0, jadi kami memindai ulang scsi-disk ini.

echo '1' > /sys/class/scsi_disk/0\:0\:0\:0/device/rescan

Saya baru saja memperpanjang disk VMware saya, dan harus mencari jawaban lain untuk menemukan perintah yang benar. Semoga ini akan menyelamatkan pencari masa depan dari upaya yang sia-sia.

JM Becker
sumber
Bekerja dengan sempurna!
Emil Styrke
Anda juga dapat menemukan disk dengan nama "/ dev /" di dalamnya /sys/block/, sehingga Anda dapat menggunakan mis /sys/block/sda/device/rescan.
mwfearnley
4

Sejauh sistem file root /dipasang pada disk yang telah diubah ukurannya, tabel partisi dan ukuran disk tidak di-refresh oleh SCSI memindai ulang dengan Linux 2.6.26.

Saya sangat berharap ini akan segera lebih baik dengan versi kernel yang lebih baru.

Jadi saya harus:

  • reboot pertama kali untuk melihat ukuran disk baru di fdisk
  • hapus partisi PV primer lama di fdisk
  • buat entri partisi dengan nomor yang sama dan mulai sektor hingga akhir disk
  • reboot kedua kali ATAU jalankan partprobedari partedpaket hanya jika /tidak dipasang di sana
  • Sekarang saya dapat menjalankan pvresizeuntuk mendapatkan ruang kosong baru, lvextenddan resize2fsmengalokasikan lebih banyak ruang ke sistem file

Saya telah direkomendasikan untuk membuang tabel partisi lama yang bodoh itu dan pvcreatelangsung menjalankannya di perangkat karena Grub2 dapat memuat gambar kernel langsung dari sistem file pada partisi LVM. Tetapi pengaturan seperti itu tidak jelas sama sekali dengan installer distribusi.

Pembaruan: Saya baru saja memeriksa dengan Debian GNU / Linux Jessie 8.2 yang menjalankan kernel 3.16 dan parted3.2, partprobeedisi tabel partisi setelah berhasil cfdisktanpa tanpa reboot. pvresizebekerja segera setelahnya.

Jika Anda ingin memperpanjang PV yang disimpan sebagai partisi PC logis, misalnya /dev/sda5pada partisi primer tambahan /dev/sda2, jangan gunakan fdisktetapi lebih suka parted:

parted /dev/sda2 -1
parted /dev/sda5 -1
pvresize /dev/sda5
Yves Martin
sumber
Perintah pada akhirnya tidak berfungsi # parted / dev / sda2 -1 -> parted: opsi tidak valid - '1'
Oskar Berggren
3

Anda harus memindai ulang disk sebelum dapat membuat partisi yang lebih besar.

Di Centos Anda dapat melakukannya dengan

ls /sys/class/scsi_host

kemudian untuk setiap host

echo "- - -" > /sys/class/scsi_host/host#/scan

(ganti # dengan nomornya)

Ada juga satu langkah lagi di atas yang memperluas ext atau sistem file apa pun yang Anda gunakan setelah Anda mengubah ukuran partisi.

Anda masih harus melepas partisi itu di beberapa titik. Apa yang kita cenderung lakukan adalah menambahkan disk vmware ke-2 dan menggunakan lvm untuk memperluas ke disk baru (dan mengurangi yang lama jika itu adalah penggantian) karena ini memungkinkan seluruh proses terjadi secara langsung.

JamesRyan
sumber
Sistem saya adalah Debian dan saya menjalankan rescan-scsi-bus.sh dari scsitools. Saya pikir itu setara dengan perintah yang Anda usulkan di / sys / class / scsi_host tetapi "fdisk" masih menampilkan ukuran lama pada disk saya ...
Yves Martin
Apakah ia mengenali disk vmware baru saat Anda memindai ulang?
JamesRyan
Tidak. Disk ini sudah ada, ini bukan baru. Ukuran disk telah ditingkatkan di klien vSphere.
Yves Martin
Saya menyadari itu, tetapi Anda harus mencoba menambahkan yang baru untuk melihat apakah pemindaian Anda mengambilnya untuk mempersempit masalah
JamesRyan
Saya setuju dengan Anda dan saya sudah tahu dengan praktik bahwa menambahkan disk SCSI baru ke mesin Linux dapat dilakukan secara online untuk semua langkah yang tercantum. Karena VM dapat berjalan selama 10 tahun ... Saya takut jumlah total disk dalam waktu dekat ...
Yves Martin
2

Sebagai jawaban yang diperbarui, pada Ubuntu 16.04.1 saya dapat melakukan hal berikut untuk mengubah ukuran volume dari 1024GB menjadi 1.4TB:

echo '1' > /sys/class/scsi_disk/32\:0\:1\:0/device/rescan
pvresize /dev/sdb
lvextend -l +100%FREE /dev/nvr01-opt/opt
resize2fs /dev/nvr01-opt/opt

Tidak fdiskdiperlukan, dan ruang segera tersedia.

pengupas
sumber
3
Beruntungnya kamu. Alasannya adalah karena Anda tidak memiliki tabel partisi tetapi mengarahkan PV /dev/sdb, yang mungkin hanya data aplikasi Anda disk sekunder, tetapi bukan disk pertama Anda dengan sistem (untuk menyebutkan saya mengkonfigurasi sistem saya dengan cara yang sama!). Pertanyaan saya adalah tentang memperpanjang PV / partisi terakhir dari "disk sistem" (diklon dari templat), sejauh distribusi Linux tidak mendukung instalasi pada PV langsung sedangkan kernel Linux dan GRUB harus dapat boot dan berjalan pada disk sistem tanpa tabel partisi sama sekali.
Yves Martin
Titik adil. Bagi mereka yang menemukan ini melalui Google: perlu diingat.
peelman
1

Anda belum memberikan kami detail yang cukup untuk memberi tahu Anda perintah yang tepat yang Anda butuhkan tetapi pada dasarnya Anda harus menggunakan lvextendperintah untuk memperluas volume logis, lalu e2fsckperintah dan kemudian resize2fsperintah untuk benar-benar memperluas sistem file Anda. Setiap perintah ini akan memerlukan parameter tambahan, khususnya informasi perangkat dan sistem file, yang tidak dapat kami berikan tetapi Anda harus mengetahuinya, cukup gunakan opsi --help untuk setiap perintah untuk memberi tahu Anda cara menggunakannya secara khusus, plus Anda mungkin akan berakhir menggunakan pvdisplay, lvdisplaydan mountperintah untuk membantu mengisi parameter ini.

Chopper3
sumber
Saya tahu semua perintah untuk langkah lain. Pertanyaan saya adalah: bagaimana cara menumbuhkan partisi primer yang digunakan sebagai PV tanpa harus reboot?
Yves Martin
Maaf, apakah Anda hanya bermaksud pvresize?
Chopper3
Saya setuju pertanyaan saya tidak cukup eksplisit (bahkan dengan bagian yang berani). pvresize disebutkan sebagai langkah 2. Saya terjebak pada langkah 1: menambah ukuran partisi "PCAT".
Yves Martin
Sudahkah Anda meningkatkan ukuran .vmdk melalui VSClient?
Chopper3
3
Untuk mengkonfirmasi /sbin/rescan-scsi-busdooes tidak mengubah ukuran disk yang ada. Tetapi echo "1" > '/sys/class/scsi_disk/0:0:1:0/device/rescan'apakah
Yves Martin
0

Tidak ada yang memposting satu set pun perintah, jadi kita mulai:

# the following steps are for adding a new HDD
apt install scsitools
rescan-scsi-bus
pvcreate /dev/sdX
vgextend /dev/vgname /dev/sdx
lvextend -l +100%FREE /dev/vgname/root 
resize2fs /dev/vgname/root

#if resizing existing HDD
fdisk /dev/sdX
create new partition
pvcreate /dev/sdXn
vgextend /dev/vgname /dev/sdXn
lvextend -l +100%FREE /dev/vgname/root 
resize2fs /dev/vgname/root
mzhaase
sumber
Maaf untuk distrub tapi saya menemukan menambahkan disk, partisi, dan PV pada setiap pertumbuhan disk adalah "jelek" dan jangan skala. Pertanyaan saya adalah tentang memperluas partisi primer yang ada pada disk tanpa menambahkan disk atau partisi atau PV.
Yves Martin