Best practice per server Linux thin provisioning (su VMware)


9

Ho una configurazione di circa 20 macchine Linux, ognuna con circa 30-150 gigabyte di dati dei clienti. Probabilmente la dimensione dei dati crescerà significativamente più velocemente su alcuni computer rispetto ad altri. Queste sono macchine virtuali su un cluster VMware vSphere. Le immagini del disco sono archiviate su un sistema SAN.

Sto cercando di trovare una soluzione che utilizzi con parsimonia lo spazio su disco, pur consentendo una facile crescita delle singole macchine.

In teoria, vorrei solo creare grandi dischi per ogni macchina e utilizzare il thin provisioning. Ogni disco crescerebbe secondo necessità. Tuttavia, sembra che un filesystem ext3 da 500 GB con solo 50 GB di dati e un numero piuttosto basso di scritture faccia crescere facilmente l'immagine del disco, ad es. 250 GB nel tempo. O forse sto facendo qualcosa di sbagliato qui? (Sono rimasto sorpreso da quanto poco ho trovato sull'argomento con Google. A proposito, non c'è nemmeno un tag di thin provisioning su serverfault.com.)

Attualmente sto progettando di creare dischi grandi e con thin provisioning, ma con un piccolo volume LVM su di essi. Ad esempio: un volume da 100 GB su un disco da 500 GB. In questo modo potrei aumentare più facilmente il volume LVM e le dimensioni del filesystem secondo necessità, anche online.

Ora per la vera domanda:

Ci sono modi migliori per farlo? (ovvero, per aumentare le dimensioni dei dati secondo necessità senza tempi di inattività).

Le possibili soluzioni includono:

  • Utilizzo di un filesystem intuitivo con thin provisioning che tenta di occupare ripetutamente gli stessi punti, senza aumentare le dimensioni dell'immagine.

  • Trovare un metodo semplice per recuperare spazio libero sulla partizione (diradamento?)

  • Qualcos'altro?

Una domanda bonus: se seguo il mio piano attuale, consiglieresti di creare partizioni sui dischi ( pvcreate /dev/sdX1vs pvcreate /dev/sdX)? Penso che sia contro le convenzioni usare dischi grezzi senza partizioni, ma renderebbe un po 'più semplice far crescere i dischi, se mai fosse necessario. Questa è solo una questione di gusti, giusto?

Risposte:


7

Se capisco correttamente il thin provisioning, potrebbe davvero causare problemi se non stai monitorando da vicino la crescita del tuo filesystem VMFS e consenti ai tuoi VMDK di riempire i tuoi volumi VMFS. Durante i test hai visto che i dischi thin provisioning tendono a crescere per riempire rapidamente il loro spazio disponibile e che non possono recuperare spazio che può essere libero all'interno del sistema operativo.

L'altra opzione è la creazione di file VMDK di dimensioni sufficienti per gestire l'utilizzo corrente e i picchi di crescita previsti e aggiungere semplicemente più file VMDK man mano che aumenta l'utilizzo dei dati dell'applicazione. Nuovi file VMDK possono essere aggiunti live a una VM, devi solo ripetere la scansione (echo "- - -"> / sys / class / scsi_host / host? / Scan). Puoi partizionare il nuovo disco, aggiungerlo al tuo LVM ed estendere il filesystem in diretta. In questo modo si è sempre consapevoli della quantità di spazio assegnato a ciascuna VM e non è possibile eseguire accidentalmente la VMFS dallo spazio all'interno di un guest.

Per quanto riguarda il partizionamento o meno se il disco verrà utilizzato solo da LVM, partizionerò sempre. Il partizionamento del disco impedisce la visualizzazione di eventuali avvisi di tabelle di partizione fasulle all'avvio della macchina e chiarisce che il disco è allocato. È un po 'voodoo ma mi assicuro anche di avviare la partizione da 64 per assicurarsi che la partizione e il filesystem siano allineati ai blocchi con l'archiviazione sottostante. È difficile da rilevare e classificare poiché di solito non hai qualcosa con cui confrontare facilmente ma se il filesystem del sistema operativo non è allineato correttamente con l'archiviazione sottostante, puoi finire con IOPS aggiuntivi richiesti per soddisfare le richieste che attraversano i confini del memoria sottostante.


1
Grazie per l'idea di aggiungere nuovi file vmdk (invece di aumentare solo quelli esistenti).
tuomassalo,

3

Il miglior suggerimento che mi viene in mente è quello di creare un'impostazione LVM con volumi fisici, gruppi di volumi e volumi logici, quindi montare quei volumi logici come file system della VM tramite iSCSI .

Ciò ti consentirà di ridimensionare il volume logico e quindi tutto ciò che dovresti fare dopo riavviare il demone iscsi e il software della macchina virtuale e verificare che abbia i nuovi parametri di dimensione e quindi ridimensionare il filesystem del guest in modo che corrisponda.

Il partizionamento funzionerebbe come con un hdd standard, così come LV apparirebbe al guest della macchina virtuale.

Modifica: non importa questo, ho avuto la falsa impressione che stavi eseguendo VMware su Linux, non Linux su VMware.



1

Suggerimento diverso: imposta un file server che conterrà tutti i tuoi dati utente.

Quel file server ovviamente dovrebbe essere gestito con LVM per i tuoi scopi di gestione della capacità online.

Se lo desideri, puoi creare un ha-setup (drbd + heartbeat) con una copia del tuo fileserver nella SAN e una seconda copia esterna o simile. (per i paranoici)

Dato che i tuoi client sono basati su Linux, puoi usare NFS che si dice sia più veloce di Samba. Un FileServer ti consentirà una strategia di backup centralizzata e un monitoraggio dell'utilizzo della memoria centralizzata. E in termini di domanda di thin provisioning:

Crea la tua configurazione LVM come previsto (nel tuo esempio 100 gb LV su un PV 500 gb, basta cambiare i numeri corrispondenti alla somma di memoria necessaria alle VM). Espandere questo LV quando necessario, come previsto in ciascuna VM separatamente. Ma fallo UNA VOLTA sul tuo fileserver. Ogni volta che una VM riduce il suo utilizzo dello spazio di archiviazione, lo spazio sarà disponibile per tutte le VM ;-)

Utilizzare le quote sul file server se necessario o desiderato per impedire a una singola VM di riempire il file server.


1

Sei in grado di espandere un volume senza arrestare la macchina virtuale che lo utilizza? Lo faccio comunemente, ma non so come sia la tua configurazione di archiviazione o come VMware possa complicare le cose. Se puoi, quello che farei è questo

1) Non eseguire il thin provisioning. Rendi ogni volume delle dimensioni che ritieni necessarie. 2) Non utilizzare le partizioni. Rendi ogni file system il suo volume. 3) Monitorare la crescita del filesystem in modo da poter ridimensionare i volumi in modo proattivo.

Quando arriva il momento di far crescere un volume

1) Sulla tua SAN o in VMware, fai tutto il necessario per espandere il volume. 2) In Linux, esegui echo 1 > /sys/block/EXAMPLE/device/rescan, dove EXAMPLE sono i nomi dei dispositivi in ​​/ sys / block /. 3) In Linux, eseguire resize2fs /dev/EXAMPLE, dove EXAMPLE è il nome del dispositivo in / dev.

Questo approccio sta funzionando bene per me. Ho preso in considerazione il tuo approccio con thin provisioning e LVM e penso che funzionerebbe anche.

Se decidi di seguire il percorso LVM, ti consiglio di non partizionare i dischi. Come hai detto, non avere una tabella delle partizioni semplifica la crescita del disco virtuale. Senza una tabella delle partizioni, puoi semplicemente eseguire pvresize e Linux riconoscerà che il volume fisico è cresciuto. Con una tabella delle partizioni, è necessario smontare tutti i filesystem, eliminare la tabella dei partiton, ricreare la tabella delle partizioni, quindi eseguire pvresize. È molto più lavoro e richiede tempi di inattività.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.