Praktik terbaik untuk server Linux yang menyediakan tipis (di VMware)

9

Saya memiliki pengaturan sekitar 20 mesin Linux, masing-masing dengan sekitar 30-150 gigabyte data pelanggan. Mungkin ukuran data akan tumbuh secara signifikan lebih cepat pada beberapa mesin daripada yang lain. Ini adalah mesin virtual pada kluster VMware vSphere. Gambar disk disimpan pada sistem SAN.

Saya mencoba untuk menemukan solusi yang akan menggunakan ruang disk hemat, sambil tetap memungkinkan untuk pertumbuhan mesin individu.

Secara teori, saya hanya akan membuat disk besar untuk setiap mesin dan menggunakan provisi tipis. Setiap disk akan tumbuh sesuai kebutuhan. Namun, tampaknya sistem file 500 GB ext3 dengan hanya 50 GB data dan jumlah penulisan yang cukup rendah masih dengan mudah menumbuhkan citra disk misalnya. 250 GB seiring waktu. Atau mungkin saya melakukan sesuatu yang salah di sini? (Saya terkejut betapa sedikit yang saya temukan pada subjek dengan Google. BTW, bahkan tidak ada tag provisi di serverfault.com.)

Saat ini saya berencana untuk membuat disk besar, yang disediakan tipis - tetapi dengan volume LVM kecil pada mereka. Misalnya: volume 100 GB pada disk 500 GB. Dengan begitu saya bisa lebih mudah menumbuhkan volume LVM dan ukuran sistem file sesuai kebutuhan, bahkan online.

Sekarang untuk pertanyaan aktual:

Apakah ada cara yang lebih baik untuk melakukan ini? (yaitu, menumbuhkan ukuran data sesuai kebutuhan tanpa downtime.)

Solusi yang mungkin termasuk:

  • Menggunakan filesystem ramah yang tipis yang mencoba untuk menempati tempat yang sama berulang-ulang, sehingga tidak memperbesar ukuran gambar.

  • Menemukan metode mudah untuk mendapatkan kembali ruang kosong di partisi (re-thinning?)

  • Sesuatu yang lain

Pertanyaan bonus: Jika saya menggunakan paket saya saat ini, apakah Anda akan merekomendasikan membuat partisi pada disk ( pvcreate /dev/sdX1vs pvcreate /dev/sdX)? Saya pikir itu bertentangan dengan konvensi untuk menggunakan disk mentah tanpa partisi, tetapi itu akan membuatnya sedikit lebih mudah untuk menumbuhkan disk, jika itu diperlukan. Ini semua hanya masalah selera, bukan?

tuomassalo
sumber

Jawaban:

7

Jika saya memahami provisi tipis dengan benar maka itu benar-benar dapat menyebabkan masalah jika Anda tidak memonitor pertumbuhan sistem file VMFS Anda dengan cermat dan memungkinkan VMDK Anda untuk mengisi volume VMFS Anda. Anda telah melihat dalam pengujian Anda bahwa disk yang disediakan tipis cenderung tumbuh untuk mengisi ruang yang tersedia dengan cepat dan bahwa mereka tidak dapat merebut kembali ruang yang mungkin bebas di dalam OS.

Opsi lainnya adalah membuat file VMDK berukuran cukup untuk menangani penggunaan Anda saat ini dan lonjakan yang diharapkan dalam pertumbuhan dan hanya menambahkan lebih banyak file VMDK saat data aplikasi Anda tumbuh. File VMDK baru dapat ditambahkan langsung ke VM, Anda hanya perlu memindai ulang (echo "- - -"> / sys / class / scsi_host / host? / Scan). Anda dapat mempartisi disk baru, menambahkannya ke LVM Anda dan memperpanjang sistem file semua langsung. Dengan cara ini Anda selalu menyadari berapa banyak ruang yang dialokasikan untuk masing-masing VM dan Anda tidak dapat secara tidak sengaja menjalankan ruang VMFS Anda dari dalam tamu.

Sejauh apakah akan mempartisi atau tidak jika disk hanya akan digunakan oleh LVM, saya selalu mempartisi. Mempartisi disk mencegah peringatan apa pun tentang tabel partisi palsu agar tidak muncul saat mesin melakukan booting dan memperjelas bahwa disk tersebut dialokasikan. Ini sedikit voodoo tapi saya juga pastikan untuk memulai partisi pada 64 untuk membantu memastikan partisi dan sistem file blok sejajar dengan penyimpanan yang mendasarinya. Sulit untuk dideteksi dan dikategorikan karena Anda biasanya tidak memiliki sesuatu untuk dibandingkan dengan mudah tetapi jika sistem file OS tidak selaras dengan penyimpanan yang mendasarinya maka Anda dapat berakhir dengan IOPS tambahan yang diperlukan untuk melayani permintaan yang melintasi batas blok pada penyimpanan yang mendasarinya.

mtinberg
sumber
1
Terima kasih atas gagasan untuk menambahkan file vmdk baru (bukan hanya mengembangkan yang sudah ada).
tuomassalo
3

Saran terbaik yang dapat saya pikirkan adalah membuat setup LVM dengan volume fisik, grup volume dan volume logis, kemudian mount volume logis tersebut sebagai sistem file VM Anda melalui iSCSI .

Ini akan memungkinkan Anda untuk mengubah ukuran volume logis dan kemudian semua yang perlu Anda lakukan setelah itu me-restart daemon iscsi dan perangkat lunak mesin virtual Anda dan memeriksa bahwa ia memiliki parameter ukuran baru dan kemudian mengubah ukuran sistem file tamu agar sesuai.

Partisi akan berfungsi seperti dengan hdd standar, karena itulah bagaimana LV akan muncul ke tamu mesin virtual.

Sunting: sudahlah ini, saya mendapat kesan salah Anda menjalankan vmware di linux, bukan linux di bawah vmware.

Aaron Tate
sumber
1

Saran berbeda: setup server file yang akan menampung semua data pengguna Anda.

Server file itu tentu saja harus dikelola dengan LVM untuk keperluan manajemen kapasitas online Anda.

Jika Anda mau, Anda dapat membuat ha-setup (drbd + heartbeat) dengan satu salinan server file Anda di SAN dan salinan kedua di luar atau sama. (untuk paranoid)

Karena klien Anda berbasis linux Anda dapat menggunakan NFS yang dikatakan lebih cepat dari Samba. FileServer akan memungkinkan Anda strategi cadangan terpusat serta pemantauan penggunaan penyimpanan terpusat. Dan dalam hal pertanyaan penyediaan tipis Anda:

Buat pengaturan LVM Anda seperti yang Anda inginkan (dalam contoh Anda 100GB LV pada 500GB PV, cukup ubah angka yang cocok dengan jumlah penyimpanan yang dibutuhkan VM Anda). Perluas LV ini saat dibutuhkan, seperti yang Anda rencanakan lakukan di setiap VM secara terpisah. Tapi lakukan saja SEKALI di server file Anda. Setiap kali VM mengurangi penggunaan penyimpanannya, maka ruang akan tersedia untuk semua VM Anda ;-)

Gunakan kuota di server file Anda jika diperlukan atau diinginkan untuk mencegah satu VM mengisi server file Anda.

Endros
sumber
1

Apakah Anda dapat memperluas volume tanpa mematikan mesin virtual yang menggunakannya? Saya biasanya melakukan ini, tetapi saya tidak tahu seperti apa pengaturan penyimpanan Anda atau bagaimana VMware dapat mempersulit. Jika Anda bisa, yang akan saya lakukan adalah ini

1) Jangan kurus. Buat setiap volume ukuran yang Anda pikir Anda butuhkan. 2) Jangan gunakan partisi. Jadikan setiap filesystem volumenya sendiri. 3) Pantau pertumbuhan sistem file sehingga Anda dapat mengubah ukuran volume secara proaktif.

Ketika tiba saatnya untuk meningkatkan volume

1) Pada SAN Anda atau di VMware, lakukan apa pun yang Anda butuhkan untuk memperluas volume. 2) Di linux, jalankan echo 1 > /sys/block/EXAMPLE/device/rescan, di mana EXAMPLE adalah nama perangkat di bawah / sys / block /. 3) Di linux, jalankan resize2fs /dev/EXAMPLE, di mana EXAMPLE adalah nama perangkat di bawah / dev.

Pendekatan ini bekerja dengan baik untuk saya. Saya memang mempertimbangkan pendekatan Anda dengan provisi tipis dan LVM, dan saya pikir itu akan berhasil juga.

Jika Anda memutuskan untuk memilih rute LVM, saya sarankan untuk tidak mempartisi disk. Seperti yang Anda katakan, tidak memiliki tabel partisi membuatnya lebih mudah untuk menumbuhkan disk virtual. Tanpa tabel partisi, Anda dapat menjalankan pvresize dan linux akan mengenali bahwa volume fisik telah bertambah. Dengan tabel partisi, Anda harus meng-unmount semua sistem file, menghapus tabel partisi, membuat ulang tabel partisi, lalu menjalankan pvresize. Itu lebih banyak pekerjaan, dan itu membutuhkan waktu henti.

sciurus
sumber