Jak zwiększyć rozmiar wymiany?

17

Ostatnio włożyłem więcej pamięci RAM do mojego serwera, a teraz mam w sumie 24 GB pamięci RAM. Początkowo konfigurowałem system operacyjny tak, aby miał rozmiar wymiany 2 GB.

/dev/sdc1               1         281     2257101   82  Linux swap / Solaris
/dev/sdc2   *         282       60801   486126900   83  Linux

Obecnie 2 GB jest przeznaczone na swap, ale czytanie, jak się wydaje, to niewiele. W przypadku systemu z 24 GB planuję przeznaczyć co najmniej 10 GB wymiany.

Moje pytania brzmią: czy mogę to zrobić, gdy system operacyjny jest uruchomiony? Czy muszę ponownie zainstalować? Korzystam z OpenSuse 11.3

x-man
źródło

Odpowiedzi:

23

Zdecydowałeś się utworzyć oddzielną partycję wymiany podczas instalacji. Nie można zmienić jego rozmiaru w trybie online - nawet zmiana rozmiaru w trybie offline zajmuje dużo czasu i wiąże się z potencjalnym ryzykiem uszkodzenia twojego systemu plików na / dev / sdc2.

Najłatwiejszym sposobem obejścia tego jest utworzenie nowej partycji wymiany na innym dysku, z którego obecnie nie korzystasz (lub na którą możesz sobie pozwolić w trybie offline na ponowne partycjonowanie), lub po prostu użycie pliku wymiany w istniejącym systemie plików (który jest dostarczany z niewielka utrata wydajności z powodu obciążenia systemu plików ).

Ogólna procedura dodawania partycji / pliku wymiany:

  • utwórz nową partycję typu 82h lub nowy plik 8 GB za pomocą dd if=/dev/zero of=/swapfile bs=1M count=8192
  • zainicjuj go za pomocą mkswap /swapfilelubmkswap /dev/sdXX
  • użyj swapon /swapfilelubswapon /dev/sdXX odpowiednio, aby włączyć nową przestrzeń wymiany w locie
  • dodaj wpis do / etc / fstab, aby upewnić się, że nowe miejsce wymiany zostanie aktywowane po ponownym uruchomieniu

Twoja bieżąca partycja wymiany pozostaje w użyciu, możesz się jej pozbyć w celu zmniejszenia złożoności. Wystarczy użyć, swapoff /dev/sdc1aby na chwilę wyłączyć jego użycie i usunąć odniesienie w/etc/fstab

the-wabbit
źródło
@ synticon-dj dzięki. dane na dysku, na którym jest zamiana, są kluczowe, a ja mam inny dysk, którego mogę użyć. Czy uważasz, że ustawienie innego dysku jako wymiany wpłynie na wydajność? Czy będę musiał zamienić / dev / sdc1?
x-man
Wpłynie to na to w ten czy inny sposób - jeśli / dev / sdc2 ma duże zastosowanie, to we / wy konkuruje z wymiennymi we / wy. Jeśli dodasz partycję innego dysku jako swap, po prostu dodasz ładowanie wymiany we / wy na tym dysku. To, co będzie korzystne dla wydajności wymiany, jest nieuchronnie szkodliwe dla innych wejść / wyjść na uszkodzonym dysku. To powiedziawszy, nic nie jest tak dobre dla wydajności twojego systemu, jak duża liczba żądań pageout / pagein. Jeśli to zobaczysz, napraw to, dodając pamięć lub zmniejszając ilość pamięci systemowej.
the-wabbit
posiadanie dwóch urządzeń wymiany na różnych wrzecionach poprawi wydajność wymiany (ponieważ istnieją dwa dyski, które można adresować jednocześnie zamiast jednego do odczytu i zapisu). Ponieważ jednak nie powinieneś widzieć wysokiej aktywności we / wy z powodu zamiany, możesz preferować używanie tylko jednego urządzenia / partycji / pliku, aby ułatwić administrację
the-wabbit
1
Pamiętaj, że plik wymiany nie będzie działać, jeśli korzystasz z BtrFS. Dwa obejścia tego problemu to (1) utworzenie urządzenia pętli zwrotnej lub (2) użycie btrfs-swapon .
Przekątna
@ the-wabbit Jak faktycznie utworzyć /etc/fstabwpis, aby upewnić się, że nowa zamiana zostanie aktywowana przy ponownym uruchomieniu?
SIGSTACKFAULT
3

Czy w tym przypadku potrzebujesz wymiany? Nie wiem, co masz uruchomione w systemie, ale staram się mieć wystarczająco dużo pamięci na moich serwerach, aby całkowicie uniknąć zamiany ... (mam ją, ale tylko jako zabezpieczenie przed awarią, jeśli mój serwer zacznie się zamieniać, kupuję więcej pamięci ...)

Analityczny
źródło
Jestem po twojej stronie, zamiana służy głównie do zapobiegania awariom w przypadku (ulotnego) wyczerpania pamięci i gdy tylko zaczniesz uderzać o talerze, twój serwer przyjmuje trafne operacje we / wy i / lub pasmo, chociaż dyski SSD mogą pomóc są co najmniej 10 razy wolniejsze niż pamięć RAM, która obecnie jest naprawdę tania. Ceny DDR3 ECC 1333 wynosi około 1000 $ za 64 GB (8x8GB)
Shadok
2

Musisz ponownie podzielić dysk na partycje. Jeśli dobrze pamiętam, przeniesienie początku partycji Linuksa nie jest obsługiwane w parted, ale możesz także zmniejszyć system plików Linux i partycję, a następnie dokonać kolejnej wymiany na końcu dysku. Nie możesz tego zrobić, gdy system jest online.

Alternatywnym rozwiązaniem jest użycie dużego pliku jako swap. (Nie wiem, czy w dzisiejszych czasach jest to dobry pomysł).

Kamień
źródło
Nie każdy system plików można zmniejszyć, nawet offline. Niestety wpływa to na popularne opcje, takie jak XFS ( xfs.org/index.php/Shrinking_Support ).
Sven
@Stone oznacza to ponowną instalację systemu operacyjnego?
x-man
Nie. Oznacza to tworzenie kopii zapasowych :), uruchamianie LiveCD, zmniejszanie systemu plików linux, a następnie partycji sdc2 i dokonanie nowej wymiany na końcu dysku i zrestartowanie systemu.
Kamień,
0

1 Wyłącz wszystkie procesy wymiany

sudo swapoff -a

2 Zmień rozmiar zamiany

sudo dd if=/dev/zero of=/swapfile bs=1G count=8

if = input file
of = output file
bs = block size
count = multiplier of blocks

3 Udostępnij plik jako wymienny

sudo mkswap /swapfile

4 Aktywuj plik wymiany

sudo swapon /swapfile

5 Sprawdź ilość dostępnych swapów

grep SwapTotal /proc/meminfo
Ryabchenko Alexander
źródło