Zwiększanie pamięci wirtualnej bez partycjonowania dysku
Napisał: Patryk Krawaczyński
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ą