Mengubah ukuran volume lvm2 logis dan sistem file: Ukuran yang tepat?

10

Di server intranet saya, saya memiliki partisi 100,00 GiB / dev / sda5, yang saya gunakan sebagai volume fisik untuk lvm2.

  • Ini satu-satunya volume fisik dalam grup volume saya vg01.
  • vg01 saat ini berisi satu volume logis lv01, menggunakan 100,00 GiB penuh - yah, sebenarnya 99,99 GiB karena beberapa pembulatan (di situlah masalahnya dimulai).
  • lv01 berisi sistem file ext3, menggunakan seluruh ruang.

Saya ingin mengurangi lv01 menjadi sekitar 97 GiB, jadi saya dapat membuat lv02 dengan kira-kira. 3 GiB (saya membutuhkannya untuk mengambil snapshot lvm).

Apa yang saya lakukan sejauh ini:

e2fsck -f /dev/mapper/vg01-lv01
resize2fs /dev/mapper/vg01-lv01 97G

Ini telah bekerja dengan baik. Tapi sekarang aku harus lari

lvreduce --size ? /dev/mapper/vg01-lv01

Dan saya tidak yakin, nilai pasti mana yang harus saya tentukan. The lvreduceman page memperingatkan secara eksplisit, bahwa ukuran yang dihasilkan tidak harus lebih kecil dari sistem file. Saya juga tidak ingin membuatnya lebih besar dari yang seharusnya. Tetapi sekarang saya memiliki nomor yang berbeda:

  • Saya tentukan 97Gdalam resize2fs.
  • df -h mengatakan, itu 96 G.
  • df mengatakan, ini 100115936 1K-blok.
  • Lvdisplay (tentu saja) masih melaporkan 99,99 GiB untuk volume logis.

Untuk apa saya harus menentukan lvreduce?

Edit:

Jawaban yang saat ini diterima memberikan solusi yang bagus. Namun, untuk mengintegrasikan hal-hal seperti itu dalam skrip yang solid dll, saya biasanya lebih suka menggunakan pengukuran yang tepat. Atau mungkin sudah ada skrip atau alat (!) Yang andal yang melakukan seluruh prosedur pengubahan ukuran dalam satu langkah?

Chris Lercher
sumber
3
Anda dapat menggunakan resize2fsuntuk mengurangi filesystem ke 90GiB atau lebih, dan kemudian muck sekitar dengan argumen untuk lvreduce(diikuti oleh resize2fs) untuk melihat apa yang paling berhasil.
larsks
@ larsks: Ide bagus (karena resize2fs dapat menyesuaikan secara otomatis dengan ukuran partisi, sedangkan lvreduce tidak dapat menyesuaikan secara otomatis dengan ukuran fs). Jika tidak ada yang tahu jawaban pasti untuk pertanyaan saya, saya pikir ini akan menjadi solusinya.
Chris Lercher
Mengapa tidak sekadar memasukkan ukuran yang sama ke lvreduce? Kecuali Anda membuat kesalahan ketik harus mengenali itu ukuran yang sama, dan tidak mengubah ukurannya lagi. Dan jika Anda membuat kesalahan ketik, setidaknya Anda menghindari merusak sistem file Anda. lvreduce -r -L 97G / dev / mapper / vg01-lv01
Bill

Jawaban:

5

Dalam pengalaman saya, LVM dan resize2fs memiliki ide yang sama tentang apa arti "97G", jadi menentukan ukuran yang sama di kedua tempat harus baik-baik saja. Namun, saya paranoid, dan sedapat mungkin selalu menggunakan strategi yang disarankan oleh larsks di komentar pertanyaan dan diubah ukurannya menjadi satu GB lebih kecil dari yang saya inginkan, lakukan lvresize ke ukuran yang saya inginkan, dan kemudian jalankan kembali resize2fs (tanpa size) untuk membiarkannya mengembang kembali untuk mengisi seluruh LV.

womble
sumber
Saya pikir, penting untuk menjadi "paranoid" di sini - karena tidak hanya ada kemungkinan file saat ini rusak: Jika sistem file lebih besar dari LV, saya berasumsi bahwa hal itu dapat memainkan malapetaka dengan volume berikut setiap saat di masa depan.
Chris Lercher
Tidak, LVM akan melarang upaya apa pun untuk menulis di luar akhir LV, sehingga tidak ada LV lain yang dapat rusak. Namun, jika filesystem terpotong, itu menghasilkan hasil yang cukup berbahaya.
womble
Itu menarik - saya tidak tahu bahwa itu memeriksa setiap tulisan! Senang mendengarnya.
Chris Lercher
14

Saya pikir ini paling baik dilakukan dengan menggunakan opsi --resizefs untuk lvreduce / lvresize:

   -r, --resizefs
          Resize underlying filesystem together with the logical volume using fsadm(8).

Memang, itu tidak membantu Anda sekarang , tetapi mungkin di masa depan.

mjk
sumber
Itu yang saya cari! Ini tampaknya menjadi pilihan baru: Ada dalam versi 2.02.74 (2) -RHEL tetapi tidak ada dalam versi 2.02.66 alat LVM saya.
Chris Lercher
1
Ketika saya sudah mengubah ukuran fs menggunakan alat lain, opsi ini menekan peringatan biasa, dan mencetak pesan "Sistem file sudah 3932160 blok. Tidak ada hubungannya!" Seperti yang diinginkan.
D Coetzee
Bahkan pada tahun 2020, tidak ada satu pun tutorial tentang memperluas / memperkecil volume lvm yang diusulkan oleh Google pada halaman hasil pencarian pertamanya yang menyebutkan opsi ini. Terima kasih banyak!
Ivan Shatsky