Subklastry w obrazach qcow2

Odkąd qcow2 wspiera rozszerzone table L2 warto uruchomić tą funkcjonalność. Pozwoli to na przyśpieszenie działania maszyn wirtualnych umieszczonych w takich kontenerach qcow2 oraz zmniejszenie potrzebnej do pracy hypervisora pamięci RAM. Dodatkowo w przypadku obrazów dysków które nie są w całości zaalokowane przyrost ich rozmiaru po dodaniu nowych danych będzie mniejszy.

Domyślnie rozmiar klastra w qcow2 to 64KB, podczas gdy sektor na fizycznym dysku to zwykle 4KB. Zależnie od tego jakiego używamy systemu plików rozmiar jednostki alokacji może wynosić wielokrotności 4KB ale zwykle jest mniejszy niż 64KB. Stąd każda operacja zmiany chociaż jednego bitu danych w maszynie wirtualnej wywołuje konieczność zapisu 64KB danych w systemie nadzorcy (copy-on-write). Użycie extended_l2 czyli subklastrów powoduje, że każdy klaster qcow2 jest dzielony na 32 subklastry z których każdy może być obsługiwany oddzielnie. Jeżeli chcemy z tego rozszerzenia korzystać warto rozważyć zmianę wielkości klastra na 128KB ponieważ po podziale na 32 subklastry daje nam to rozmiar klastra na poziomie 4KB czyli.

Stare obrazy możemy skonwertować używając polecenia:

qemu-img convert -O qcow2 -o cluster_size=128K,extended_l2=on stary_obraz.qcow2 nowy_obraz.qcow2

Poprzedni wpis Następny wpis