NFsec Logo

Zwiększanie pamięci wirtualnej bez partycjonowania dysku

17/10/2010 w Administracja Brak komentarzy.  (artykuł nr 287, ilość słów: 837)

W

yskalowanie serwera i dołożenie nowych usług może czasem prowadzić do potrzeby zwiększenia ilości pamięci wirtualnej i RAM. O ile pamięć RAM można bez problemu zwiększyć poprzez wymianę lub dołożenie kości, o tyle pamięć wirtualna wymaga już trochę innego podejścia. Nie oznacza to wcale, że będziemy musieli instalować nasz system od nowa, czy używać programu parted do zmiany rozmiaru partycji wymiany.

Na początek należy uzyskać informacje jak wielką partycję wymiany posiada już system:

darkstar:~# swapon -s
Filename                                Type            Size    Used    Priority
/dev/sda2                               partition       3903784 600     -1

Rozmiar podawany jest w kilobajtach, więc na tym systemie partycja wymiany liczy około 3812 MB. Naszym celem jest jej zwiększenie do 8 GB. Pierwszym krokiem jest określenie innej partycji systemowej, która ma na tyle wolnego miejsca, że odebranie 4 GB nie będzie kolidowało z jej przeznaczeniem i dalszym rozwojem.

darkstar:~# df -h
System plików         rozm. użyte dost. %uż. zamont. na
/dev/sda1              19G  2,8G   15G  16% /
tmpfs                1014M     0 1014M   0% /lib/init/rw
udev                   10M  600K  9,5M   6% /dev
tmpfs                1014M     0 1014M   0% /dev/shm
/dev/sdb1             466G  182G  285G  39% /home

Idealnym kandydatem jest partycja /home. Ze względu, na powiedzenie “wszystko w Linuksie i Uniksie jest plikiem” (partycja /dev/sdb1, również jest specjalnym typem pliku) – stworzony zostanie zwykły, niczym się wyróżniający plik przeznaczony do rozszerzenia partycji wymiany, gdy na tej wyczerpie się wolne miejsce:

dd if=/dev/zero of=/home/extraswap bs=1M count=4096

Wartość 4096 określa ile megabajtów będzie posiadał stworzony plik. Urządzenie /dev/zero zapełni go zerowymi wartościami. Jeśli pragniemy stworzyć owy plik na innej partycji np. /var wówczas wartość of będzie równa /var/extraswap. Po zakończeniu czynności tworzenia, która może potrwać od kilkunastu do kilkudziesięciu sekund, powinniśmy ujrzeć podobny komunikat:

4096+0 przeczytanych rekordów
4096+0 zapisanych rekordów
skopiowane 4294967296 bajtów (4,3 GB), 189,115 s, 22,7 MB/s

Utworzony plik zamieniamy na plik wymiany:

darkstar:~# mkswap /home/extraswap
Setting up swapspace version 1, size = 4294963 kB
no label, UUID=c36bd905-0d49-4565-8580-f5d1cc58ec5c

Oraz włączamy jego obsługę w systemie:

swapon /home/extraswap

Po wykonaniu powyższych czynności oraz wydaniu polecenia swapon -s nasza przestrzeń wymiany powinna zostać rozszerzona:

darkstar:~# swapon -s
Filename                                Type            Size    Used    Priority
/dev/sda2                               partition       3903784 600     -1
/home/extraswap                         file            4194296 0       -2

By nie dopuścić do utracenia ustawień po restarcie systemu należy do pliku /etc/fstab pod wpisem dotyczącym partycji wymiany dodać identyczny wpis, tylko odwołujący się do innej, wybranej przez nas lokalizacji:

darkstar:~# cat /etc/fstab
# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
(...)
/dev/sda2       none            swap    sw              0       0
/home/extraswap       none            swap    sw              0       0
(...)

Od tej pory nasza przestrzeń swap będzie dwa razy większa niż dotychczas – z pierwszeństwem zapisu na partycji, dopiero później w pliku.

Więcej informacji: Zarządzanie pamięcią

Kategorie K a t e g o r i e : Administracja

Tagi T a g i : , , , ,

Komentowanie tego wpisu jest zablokowane.