Jak zwiększyć przestrzeń wymiany?

127

Mam domyślnie 250 MB przestrzeni wymiany w Ubuntu i chcę ją powiększyć do większego rozmiaru. Potrzebuję 800 MB, co moim zdaniem wystarczy do otwarcia kilku aplikacji bez konieczności przekraczania obecnego limitu wymiany. Mam nadzieję, że ktoś może mi pomóc.

Bruno
źródło
2
Otwórz Gparted i opublikuj zrzut ekranu z tym, co widzisz tutaj.
Aaron Hill,
Jeśli partycję wymiany można rozszerzyć na sąsiednie nieprzydzielone miejsce, użyj gparted. Jeśli takie miejsce nie jest dostępne, być może dlatego, że twoja aktywna (rozruchowa) partycja wykorzystuje całe miejsce nie wymienne, gpartednie pozwoli ci zmniejszyć rozmiaru aktywnej partycji w celu utworzenia nieprzydzielonego miejsca. W takim przypadku możesz ponownie zainstalować Ubuntu, aby utworzyć większą przestrzeń wymiany.
H2ONaCl

Odpowiedzi:

171

Zawsze możesz utworzyć plik wymiany

aby dodać więcej przestrzeni wymiany. Nie jest to to samo (pod każdym względem) co partycja wymiany, ale będzie łatwe i dynamiczne.

Zmień /media/fasthdd/swapfile.imgna cokolwiek lubisz, na przykład może to być /swap.imgrównież. /media/fasthdd/swapfile.imgto tylko przykładowa nazwa pliku, jeśli go używasz, to oczywiście musi być katalog /media/fasthdd/z wystarczającą ilością wolnego miejsca dla nowego pliku wymiany.

Użyj dowolnej aplikacji terminalowej do uruchamiania poleceń. Wszystkie polecenia powinny być uruchamiane z uprawnieniami administratora , aby to zrobić, możesz dodać sudona początku każdego polecenia lub uruchomić sudo bashprzed uruchomieniem poleceń.

1. Utwórz pusty plik:
ten plik będzie zawierał zawartość pamięci wirtualnej, dzięki czemu plik będzie wystarczająco duży dla twoich potrzeb. Ten utworzy plik 1 Gb, co oznacza + 1 Gb przestrzeni wymiany dla twojego systemu:

dd if=/dev/zero of=/media/fasthdd/swapfile.img bs=1024 count=1M

Jeśli chcesz utworzyć plik 3Gb, zmień wartość zliczania na count=3M. Zobacz man ddwięcej informacji.

2. Piec plik wymiany:
Poniższe polecenie spowoduje utworzenie „systemu wymiany plików” w nowym pliku wymiany.

mkswap /media/fasthdd/swapfile.img

3. Uruchom przy rozruchu:
Aby upewnić się, że podczas wymiany komputera aktywowane jest nowe miejsce wymiany, należy dodać je do pliku konfiguracyjnego systemu plików /etc/fstab. Dodaj go na końcu pliku, jest to zalecane, ponieważ inne systemy plików ( przynajmniej jeden zawierający plik wymiany ) muszą być zamontowane w trybie odczytu-zapisu, zanim będziemy mogli uzyskać dostęp do jakichkolwiek plików.

# Add this line to /etc/fstab
/media/fasthdd/swapfile.img swap swap sw 0 0

4. Aktywuj:
Możesz uruchomić ponownie komputer lub ręcznie aktywować nowy plik wymiany za pomocą następującego polecenia:

swapon /media/fasthdd/swapfile.img


Jeśli wszystko pójdzie dobrze

powinieneś zobaczyć, że dostępna jest większa przestrzeń wymiany. Możesz użyć następujących poleceń, aby sprawdzić nową zamianę i potwierdzić, że jest aktywna:

cat /proc/swaps
  Filename                           Type       Size    Used    Priority
  /media/fasthdd/swapfile.img        file       8388604 2724    -1

grep 'Swap' /proc/meminfo
  SwapCached:         4772 kB
  SwapTotal:       8388604 kB
  SwapFree:        8355812 kB
Sampo Sarrala
źródło
5
Aby edytować, /etc/fstabwypróbuj to w wierszu poleceń:sudo gedit /etc/fstab
Ben
To bardzo mi pomogło, dziękuję bardzo, proszę pana.
Bryza
jak dezaktywować nowo utworzony plik wymiany?
Bryza
1
mam zamianę!
Bryza
2
użyj polecenia „swapon -s”, aby zobaczyć status, zamiast „cat / proc / swaps”. wtedy polecenie „wolne” podaje również informacje o użyciu wymiany.
Paul M
40

Metoda GUI do zwiększenia rozmiaru partycji wymiany

Innym sposobem na zwiększenie rozmiaru wymiany jest użycie edytora partycji GParted . Krótko mówiąc, zmieniasz rozmiar partycji wymiany, a następnie kliknij ją prawym przyciskiem myszy i wybierz „Zamień”.

Łatwiej jest uruchomić gparted-live-disk lub dysk Live Ubuntu (tak, że wszystkie /dev/sdapartycje zostaną odmontowane). Jeśli uruchamiasz dysk na żywo Ubuntu, musisz zainstalować gparted, uruchamiając poniższe polecenia:

sudo apt-get update
sudo apt-get install gparted && sudo gparted

Musisz być w stanie zwiększyć rozmiar partycji wymiany tylko wtedy, gdy istnieje nieprzydzielone miejsce przed lub po partycji wymiany. Jeśli nie było nieprzydzielonego miejsca (miejsca, które próbujemy dodać partycją wymiany) poniżej lub powyżej partycji wymiany, musimy zmienić rozmiar partycji i uzyskać to nieprzydzielone miejsce.

Przypadek 1 - nieprzydzielone miejsce przed lub po partycji wymiany

GParted partitions

Na powyższym zrzucie ekranu miałem 11,4 GB nieprzydzielonego miejsca przed wymianą linuxa i 12,8 GB po partycji wymiany.

  • Aby zmienić rozmiar, kliknij prawym przyciskiem myszy partycję wymiany (/ dev / sda9 tutaj) i kliknij opcję Zmień rozmiar / Przenieś. Będzie to wyglądać tak:

    wprowadź opis zdjęcia tutaj

  • Przeciągając strzałki suwaka w lewo lub w prawo, a następnie kliknij przycisk Zmień rozmiar / Przenieś. Twoja partycja wymiany zostanie zmieniona.


Przypadek 2 - nieprzydzielone miejsce znajduje się między partycjami

wprowadź opis zdjęcia tutaj

Na powyższym zrzucie ekranu nieprzydzielone miejsce, które chcemy dodać do partycji wymiany, znajdowało się pomiędzy dev/sda7i. /dev/sda8Aby przenieść nieprzydzielone miejsce z tej na partycję wymiany powyżej, musimy wykonać proste kroki podane poniżej,

  • Kliknij prawym przyciskiem myszy partycję / dev / sda8 i kliknij opcję Zmień rozmiar / Przenieś .

    wprowadź opis zdjęcia tutaj

  • kliknij i przesuń suwak maksymalnie w lewo, aby nieprzydzielone miejsce, które było tuż nad /dev/sda8partycją, znalazło się poniżej. /dev/sda8Następnie kliknij przycisk Zmień rozmiar / Przenieś.

  • A teraz nieprzydzielone miejsce znajdowało się tuż nad partycją wymiany, która była jak przypadek 1. Teraz podążaj za przykładem 1.


Przypadek 3 - jeśli nieprzydzielone miejsce było obecne poza partycją rozszerzoną)

wprowadź opis zdjęcia tutaj

Miałem nieprzydzielone miejsce 18 GB tuż poniżej partycji rozszerzonej. Aby dodać to miejsce do partycji wymiany linux (która była obecna wewnątrz partycji rozszerzonej), musimy wykonać następujące kroki,

  • Kliknij prawym przyciskiem myszy partycję rozszerzoną i wybierz opcję Zmień rozmiar / Przenieś , będzie to wyglądać jak na poniższym zrzucie ekranu

    wprowadź opis zdjęcia tutaj

  • Kliknij i przeciągnij strzałkę w skrajne prawo i kliknij Zmień rozmiar / Przenieś , aby nieprzydzielone miejsce 18 GB znalazło się na dole rozszerzonej partycji. Miałem 14,80 GB nieprzydzielonego miejsca już na dole, a teraz 18,34 GB łączy się z tym, aby utworzyć nieprzydzielone miejsce (18,34 + 14,80 GB) na dole rozszerzonej partycji.

  • Teraz tuż pod partycją wymiany znajdowało się nieprzydzielone miejsce, będzie to jak przypadek 1 , a następnie wykonaj przypadek 1.

UWAGA: Nie zapomnij wykonać kopii zapasowej wszystkich ważnych danych przed wykonaniem powyższych operacji.

Avinash Raj
źródło
2
Świetny przewodnik po narzędziach GUI, zasługuje na ++ jak jest. Może jednak powinno być ostrzeżenie o możliwym ryzyku związanym z edycją partycji. Prosty przewodnik tworzenia kopii zapasowych MBR lub link do takiego przewodnika byłby świetnym dodatkiem, błędy mogą być mało prawdopodobne, ale koszty mogą wzrosnąć + wykonywanie kopii zapasowych MBR nie zajmie zbyt wiele czasu lub miejsca i może zaoszczędzić dużo pracy, miejsca i czasu, jeśli zostanie wykonane poprawnie.
Sampo Sarrala,
2
Nie zapomnij zamienić, kliknij prawym przyciskiem myszy partycję wymiany i
zamień
29

Możesz także użyć, fallocatejeśli chcesz zarezerwować miejsce na plik wymiany, bez konieczności wypełniania pliku cyframi od 0 do dd.

Ze manstrony:

DESCRIPTION
   fallocate  is  used  to preallocate blocks to a file.  For filesystems which support the fallocate system call, this is done quickly by
   allocating blocks and marking them as uninitialized, requiring no IO to the data blocks.  This is much faster than creating a  file  by
   filling it with zeros.

Jeśli masz już swapzdefiniowany, możesz go usunąć lub zachować, a twój * nix będzie nim zarządzał (jeszcze lepiej dzięki określeniu swaponpriorytetu). Może to być przydatne, jeśli chcesz rozłożyć swap między różne urządzenia, dyski (w zależności od ich prędkości lub innych niestandardowych potrzeb, zobacz Jaki jest cel wielu plików wymiany na StackExchange ).

Proste fallocateużycie do dodania drugiego pliku wymiany

Sprawdź sytuację wymiany:

$ sudo swapon -s
Filename                Type        Size    Used    Priority
/swapfile               file        262140  246276  -1

Utwórz plik wymiany 4G

Standardowy sposób tworzenia i aktywacji pliku wymiany.

$ size="4G" && file_swap=/swapfile_$size.img && sudo touch $file_swap && sudo fallocate -l $size /$file_swap && sudo mkswap /$file_swap && sudo swapon -p 20 /$file_swap

Ustaw swap na stałe

Dodaj wiersz do /etc/fstabpliku, aby swap został zainicjowany przy następnym restarcie (tutaj również aktualizujemy priorytet nowo utworzonej przestrzeni wymiany i aktualizujemy priorytet starego pliku wymiany).

W pliku / etc / fstab zauważ, że priorytetem poprzedniej zamiany jest teraz 10.

/swapfile    none    swap    sw,pri=10      0       0
/swapfile_4G.img     none    swap    sw,pri=20      0       0

Sprawdź sytuację wymiany po ponownym uruchomieniu:

$ sudo swapon  -s
Filename       Type     Size        Used    Priority
/swapfile      file     262140      0       10
/swapfile_4G.img       file     4194300     0       20

Usuń jedno z miejsca wymiany (na przykład oryginalny 256 MB)

Edytować /etc/fstab

Usuń wiersz związany z zamianą, którą chcesz usunąć.

Usuń tę zamianę

Usuń i usuń plik wymiany.

sudo swapoff /mnt/swapfile && sudo rm /mnt/swapfile

Zasoby:

Jean-Christophe Meillaud
źródło
2
1-up za fallocate, o wiele lepiej niż ddjeśli twój fs to obsługuje. Te linijki nadal są trudne do odczytania, czy łatwiej byłoby je studiować, gdyby były podzielone na rzeczywiste polecenia?
Sampo Sarrala
2
To przykład idealnej odpowiedzi, bardzo prosty do zrozumienia, bardzo prosty do wdrożenia. W Ubuntu 18 działało to jak urok
Damián Rafael Lattenero
7

W moim przypadku miałem już plik wymiany, który moim zdaniem miał rozmiar 1 GB, ale gdy przyjrzałem się temu bliżej, miał on tylko 256 MB, a podczas wstępnej kompilacji zasobów w szynach serwerowi zabrakło pamięci

Errno::ENOMEM: Cannot allocate memory - nodejs

Utworzyłem plik wymiany zgodnie z opisem tutaj: https://stackoverflow.com/a/34885004/784318

Teraz wiersz, który tworzy pusty plik o nazwie, /swapfilejest następujący:

sudo dd if=/dev/zero of=/swapfile bs=1024 count=256k

Teraz, aby zmienić rozmiar pliku wymiany, musiałem wykonać następujące proste kroki:

# Reboot the system to be able to switch swapping off
sudo reboot

# Turn swap off
sudo swapoff -a

# Delete the `/swapfile`
rm -f /swapfile

# Recreate the swapfile but with double file size memory
sudo dd if=/dev/zero of=/swapfile bs=1024 count=512k

# Turn swap back on
sudo swapon -s

# Change the permission to non-world-readable
sudo chown root:root /swapfile 
sudo chmod 0600 /swapfile

# Use the swap file
sudo mkswap /swapfile
sudo swapon /swapfile

Plik został utworzony (536870912/1024/1024 = 512 MB):

ls -lia /swapfile 
768 -rw------- 1 root root 536870912 Apr 27 07:54 /swapfile

Za pomocą free -mpolecenia mogłem zobaczyć, że plik ma teraz 512 MB, zgodnie z oczekiwaniami:

Besi
źródło
Nie należy używać niebezpiecznej flagi -r z komendą rm do usuwania pojedynczego pliku. rm -f powinno wystarczyć.
Sampo Sarrala,
1
@SampoSarrala Dzięki za zgłoszenie, odpowiednio zmieniłem skrypt.
Besi
@Besi Dziękujemy! Właśnie tego potrzebowałem, aby zwiększyć rozmiar pliku wymiany w moim systemie Ubuntu 18.04 LTS. Działało dokładnie tak, jak to napisałeś. Doskonała pomoc !!!
B-radykalny
Podoba mi się to rozwiązanie, ponieważ jest to wiersz poleceń, nie wymaga podziału na partycje i wyjaśnia, co zrobić, jeśli plik wymiany już istnieje.
cxrodgers
3

jak dodać plik wymiany

  1. plik .img

    sudo dd if = / dev / zero of = / swap.img bs = 1M count = 1000

Uwaga !: bs = 1M count = 1000 ==> 1GB

(bs * count = rozmiar w megabajtach)

inny przykład:

sudo dd if = / dev / zero of = / swap.img bs = 10M count = 100

  1. sformatuj plik .img

    sudo mkswap /swap.img

  2. włącz plik wymiany

    sudo swapon /swap.img

  3. dodaj plik wymiany do fstab

dodaj ten wiersz do swojego fstab (/ etc / fstab)

/swap.img   none            swap    sw              0       0
Jonasz
źródło
Zazwyczaj ustawiam etykietę na swap, np. „Mkswap -L SWAP2”.
Paul M
Uwaga: Jest to ta sama odpowiedź, co odpowiedź zaakceptowana / najbardziej pozytywnie oceniona przez Sampo Sarrię, ale z mniejszym kontekstem i dodaną zamianą img bezpośrednio do katalogu głównego zamiast / media / fasthdd
steel
0

Zmień rozmiar Zamień do 8 GB

# Turn swap off
# This moves stuff in swap to the main memory and might take several minutes
sudo swapoff -a

# Create an empty swapfile
# Note that "1G" is basically just the unit and count is an integer.
# Together, they define the size. In this case 8GB.
sudo dd if=/dev/zero of=/swapfile bs=1G count=8

sudo mkswap /swapfile  # Set up a Linux swap area
sudo swapon /swapfile  # Turn the swap on

Sprawdź, czy zadziałało

grep Swap /proc/meminfo
Martin Thoma
źródło