Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Tutorial Jak powiększyć przestrzeń wymiany
#1
0
Przestrzeń wymiany służy do tymczasowego przechowywania danych w sytuacji gdy ich ilość przekracza zasoby pamięci RAM.

Od wersji Linux Mint 19, podczas instalacji tworzony jest plik wymiany /swapfile. Oddzielna partycja wymiany nadal jest tworzona kiedy stosujemy szyfrowanie całego twardego dysku albo utworzymy taką partycję przed instalacją.

Także od wersji 19 Linux Mint domyślnie nie posiada funkcji hibernacji, ponieważ nie każdy komputer ma taką możliwość. Jeśli hibernacja jest dla nas niezbędna możemy skorzystać z tych poradników w języku angielskim:
Dla plików wymiany >> How to hibernate to a swap file in Linux Mint 19.x
W dziale "Troubleshooting" znajdziemy opis problemów jakie możemy napotkać.
Dla partycji wymiany >> How to enable hibernation with swap partion on Linux Mint 19

Pliki wymiany dają nam możliwość łatwiejszego zarządzania przestrzenią wymiany. Jeśli potrzebujemy ją rozszerzyć to utworzenie dodatkowego pliku wymiany będzie najbardziej praktyczne. Można to zrobić nawet jeśli już posiadamy partycję albo plik wymiany.

Maksymalna wielkość przestrzeni wymiany nie powinna przekraczać 6 GB, nawet jeśli nasza pamięć RAM jest większa.

Przestrzeń wymiany powinna być używana sporadycznie. Jej ciągłe użycie świadczy o tym że potrzebujemy więcej pamięci RAM.


Utworzenie pliku wymiany

W programie "Monitor systemu > Zasoby" możemy sprawdzić wykorzystanie pamięci RAM i przestrzeni wymiany jeśli nasz komputer nie radzi sobie z jakimś zadaniem (np. edycja wideo albo zdjęć w formacie RAW). Jeśli zdecydujemy jakiej wielkości plik chcemy utworzyć to w "Monitor systemu > Systemy plików" sprawdzamy czy mamy wystarczającą ilość wolnej pamięci na partycji z systemem / (przynajmniej dwa razy więcej niż rozmiar pliku).

Pierwsze polecenie które wykonamy w terminalu utworzy plik /swapfile2. Jego wielkość zależy od parametru count=2048. Mnożymy liczbę 1024 przez ilość gigabajtów jaką chcemy uzyskać. W tym przykładzie to 2 GB (1024 x 2 = 2048). Po wpisaniu odpowiedniej wielkości pliku wklejamy polecenie do terminalu, naciskamy klawisz Enter, wpisujemy hasło i ponownie naciskamy klawisz Enter.

Kod:
sudo dd if=/dev/zero of=/swapfile2 bs=1M count=2048

Drugie polecenie poprawia uprawnienia:

Kod:
sudo chmod 0600 /swapfile2

Trzecie zmienia plik w przestrzeń wymiany:

Kod:
sudo mkswap /swapfile2

Czwarte dodaje informację w pliku /etc/fstab potrzebną przy starcie systemu:

Kod:
sudo tee -a /etc/fstab<<<"/swapfile2  none  swap  sw  0  0"

Piąte aktywuje plik:

Kod:
sudo swapon /swapfile2

Restartujemy komputer i upewniamy się że wszystkie nasze pliki i partycje wymiany są aktywne za pomocą polecenia:

Kod:
swapon

Przykładowy wynik polecenia swapon. Plik i partycja wymiany:

Kod:
NAME       TYPE      SIZE USED PRIO
/dev/sda5  partition   4G   0B   -2
/swapfile2 file        2G   0B   -3

W ciągu kilku minut przestrzeń wymiany została powiększona o 2 GB.


Usuwanie pliku wymiany

Zaczynamy od zrestartowania komputera żeby usunąć zbędne dane z przestrzeni wymiany i pamięci RAM. Następnie wyłączamy plik /swapfile2:

Kod:
sudo swapoff /swapfile2

Usuwamy go:

Kod:
cd /
sudo rm swapfile2

Usuwamy informację w pliku /etc/fstab:

Kod:
sudo sed -i '/swapfile2/d' /etc/fstab

Restartujemy komputer.
Odpowiedz
#2
0
Czemu tworzysz kolejny plik wymiany? Jeśli system posiada już jeden plik wymiany o określonym rozmiarze, to wystarczy go powiększyć. Przykład:

Wyłączyć pierw SWAP:

Kod:
# swapoff /swapfile

Dodać pożądaną ilość miejsca do pliku /swapfile :

Kod:
# dd if=/dev/zero bs=1M count=512 >> /swapfile

Ten plik trzeba potraktować mkswap:

Kod:
# mkswap /swapfile

I na koniec włączyć plik wymiany:
Kod:
# swapon /swapfile

I to cały proces powiększania pliku wymiany. Big Grin

A jak chcesz zmniejszyć plik wymiany to po prostu tworzysz nowy plik w miejsce starego i tylko podajesz rozmiar + mkswap.
Odpowiedz
#3
0
(15-03-2019, 22:21)morfik napisał(a): Czemu tworzysz kolejny plik wymiany?

Jedna metoda dla wszystkich, czy ktoś ma plik/partycję wymiany, czy w ogóle nie ma przestrzeni wymiany.

(15-03-2019, 22:21)morfik napisał(a):
Kod:
# dd if=/dev/zero bs=1M count=512 >> /swapfile

Ta komenda jest błędna.
Odpowiedz
#4
0
Dlaczego błędna?

Kod:
# rm /swapfile

# dd if=/dev/zero of=/swapfile bs=1M count=512
512+0 records in
512+0 records out
536870912 bytes (537 MB, 512 MiB) copied, 6.76383 s, 79.4 MB/s

# ls -hal /swapfile
-rw-r--r-- 1 root root 512M 2019-03-15 22:50:13 /swapfile

# dd if=/dev/zero bs=1M count=512 >> /swapfile
512+0 records in
512+0 records out
536870912 bytes (537 MB, 512 MiB) copied, 7.19636 s, 74.6 MB/s

# ls -hal /swapfile
-rw-r--r-- 1 root root 1.0G 2019-03-15 22:50:40 /swapfile
Odpowiedz
#5
0
(15-03-2019, 23:52)morfik napisał(a): Dlaczego błędna?

Twoja komenda nie zadziała ponieważ pliki wymiany mają niewłaściwe dla niej uprawnienia.

Kod:
-rw------- 1 root root 512M mar 16 00:21 /swapfile

Żeby ją użyć najpierw trzeba by zmienić uprawnienia pliku, czego nie uwzględniłeś w twojej metodzie.

Kod:
-rw-rw-rw- 1 root root 512M mar 16 00:23 /swapfile
Odpowiedz
#6
0
Jesteśmy na bakier z uprawnieniami w linux? Co oznacza rw na pierwszej pozycji? Big Grin

Kod:
# ls -al /swapfile
-rw-r--r-- 1 root root 1073741824 2019-03-15 22:50:40 /swapfile

# chmod 600 /swapfile

# ls -al /swapfile
-rw------- 1 root root 1073741824 2019-03-15 22:50:40 /swapfile

# dd if=/dev/zero bs=1M count=512 >> /swapfile
512+0 records in
512+0 records out
536870912 bytes (537 MB, 512 MiB) copied, 7.59309 s, 70.7 MB/s

# ls -al /swapfile
-rw------- 1 root root 1610612736 2019-03-16 08:12:14 /swapfile

# mkswap /swapfile
Setting up swapspace version 1, size = 1.5 GiB (1610608640 bytes)
no label, UUID=a82ad4c4-9535-4e54-abaa-542697adc519

# swapon /swapfile

# swapon -s
Filename                                Type            Size    Used    Priority
/dev/dm-2                               partition       6291452 0       -2
/swapfile                               file            1572860 0       -3

Także coś tam za bardzo kombinujesz, bo jak widać u mnie działa bez problemu. Big Grin

Jedyne co to ja bym ten plik SWAP'a zdefragmentował jeszcze po jego utworzeniu/powiększeniu:

Kod:
# filefrag -ve /swapfile
Filesystem type is: ef53
File size of /swapfile is 1610612736 (393216 blocks of 4096 bytes)
ext:     logical_offset:        physical_offset: length:   expected: flags:
  0:        0..     512:     361983..    362495:    513:
  1:      513..    1023:     362747..    363257:    511:     362496:
  2:     1024..    2047:     367616..    368639:   1024:     363258:
  3:     2048..    4095:     389120..    391167:   2048:     368640:
  4:     4096..    8191:     385024..    389119:   4096:     391168:
  5:     8192..   16383:     376832..    385023:   8192:     389120:
  6:    16384..   18431:     417792..    419839:   2048:     385024:
  7:    18432..   20479:     628736..    630783:   2048:     419840:
  8:    20480..   24575:     645120..    649215:   4096:     630784:
  9:    24576..   28671:     634880..    638975:   4096:     649216:
 10:    28672..   36863:     673792..    681983:   8192:     638976:
 11:    36864..   38911:     700416..    702463:   2048:     681984:
 12:    38912..   40959:     704512..    706559:   2048:     702464:
 13:    40960..   43007:     714752..    716799:   2048:     706560:
 14:    43008..   47103:     747520..    751615:   4096:     716800:
 15:    47104..   49151:     753664..    755711:   2048:     751616:
 16:    49152..   61439:     774144..    786431:  12288:     755712:
 17:    61440..   63487:     815104..    817151:   2048:     786432:
 18:    63488..   67583:     993280..    997375:   4096:     817152:
 19:    67584..   71679:    1005568..   1009663:   4096:     997376:
 20:    71680..   75775:     999424..   1003519:   4096:    1009664:
 21:    75776..   79871:    1011712..   1015807:   4096:    1003520:
 22:    79872..   83967:    1026048..   1030143:   4096:    1015808:
 23:    83968..   86015:    1040384..   1042431:   2048:    1030144:
 24:    86016..   88063:    1159168..   1161215:   2048:    1042432:
 25:    88064..   90111:    1163264..   1165311:   2048:    1161216:
 26:    90112..   92159:    1185792..   1187839:   2048:    1165312:
 27:    92160..   94207:    1193984..   1196031:   2048:    1187840:
 28:    94208..   96255:    1204224..   1206271:   2048:    1196032:
 29:    96256..   98303:    1210368..   1212415:   2048:    1206272:
 30:    98304..  102399:    1200128..   1204223:   4096:    1212416:
 31:   102400..  104447:    1224704..   1226751:   2048:    1204224:
 32:   104448..  106495:    1228800..   1230847:   2048:    1226752:
 33:   106496..  108543:    1241088..   1243135:   2048:    1230848:
 34:   108544..  110591:    1251328..   1253375:   2048:    1243136:
 35:   110592..  112639:    1261568..   1263615:   2048:    1253376:
 36:   112640..  114687:    1275904..   1277951:   2048:    1263616:
 37:   114688..  116735:    1286144..   1288191:   2048:    1277952:
 38:   116736..  118783:    1308672..   1310719:   2048:    1288192:
 39:   118784..  131071:    1290240..   1302527:  12288:    1310720:
 40:   131072..  133119:    1318912..   1320959:   2048:    1302528:
 41:   133120..  137215:    1314816..   1318911:   4096:    1320960:
 42:   137216..  139263:    1357824..   1359871:   2048:    1318912:
 43:   139264..  141311:    1361920..   1363967:   2048:    1359872:
 44:   141312..  143359:    1388544..   1390591:   2048:    1363968:
 45:   143360..  145407:    1392640..   1394687:   2048:    1390592:
 46:   145408..  159743:    1398784..   1413119:  14336:    1394688:
 47:   159744..  161791:    1419264..   1421311:   2048:    1413120:
 48:   161792..  163839:    1431552..   1433599:   2048:    1421312:
 49:   163840..  165887:    1439744..   1441791:   2048:    1433600:
 50:   165888..  167935:    1454080..   1456127:   2048:    1441792:
 51:   167936..  169983:    1466368..   1468415:   2048:    1456128:
 52:   169984..  172031:    1472512..   1474559:   2048:    1468416:
 53:   172032..  176127:    1449984..   1454079:   4096:    1474560:
 54:   176128..  180223:    1462272..   1466367:   4096:    1454080:
 55:   180224..  184319:    1492992..   1497087:   4096:    1466368:
 56:   184320..  186367:    1499136..   1501183:   2048:    1497088:
 57:   186368..  188415:    1523712..   1525759:   2048:    1501184:
 58:   188416..  190463:    1570816..   1572863:   2048:    1525760:
 59:   190464..  194559:    1564672..   1568767:   4096:    1572864:
 60:   194560..  210943:    1548288..   1564671:  16384:    1568768:
 61:   210944..  212991:    1759232..   1761279:   2048:    1564672:
 62:   212992..  215039:    1763328..   1765375:   2048:    1761280:
 63:   215040..  217087:    1767424..   1769471:   2048:    1765376:
 64:   217088..  221183:    1740800..   1744895:   4096:    1769472:
 65:   221184..  223231:    1779712..   1781759:   2048:    1744896:
 66:   223232..  225279:    1783808..   1785855:   2048:    1781760:
 67:   225280..  231423:    1796096..   1802239:   6144:    1785856:
 68:   231424..  235519:    1773568..   1777663:   4096:    1802240:
 69:   235520..  237567:    1806336..   1808383:   2048:    1777664:
 70:   237568..  239615:    1857536..   1859583:   2048:    1808384:
 71:   239616..  247807:    1910784..   1918975:   8192:    1859584:
 72:   247808..  249855:    2002944..   2004991:   2048:    1918976:
 73:   249856..  251903:    2023424..   2025471:   2048:    2004992:
 74:   251904..  253951:    2093056..   2095103:   2048:    2025472:
 75:   253952..  258047:    2088960..   2093055:   4096:    2095104:
 76:   258048..  266239:    2080768..   2088959:   8192:    2093056:
 77:   266240..  268287:    2236416..   2238463:   2048:    2088960:
 78:   268288..  270335:    2246656..   2248703:   2048:    2238464:
 79:   270336..  274431:    2250752..   2254847:   4096:    2248704:
 80:   274432..  278527:    2240512..   2244607:   4096:    2254848:
 81:   278528..  284671:    2256896..   2263039:   6144:    2244608:
 82:   284672..  286719:    2273280..   2275327:   2048:    2263040:
 83:   286720..  288767:    2285568..   2287615:   2048:    2275328:
 84:   288768..  292863:    2277376..   2281471:   4096:    2287616:
 85:   292864..  296959:    2318336..   2322431:   4096:    2281472:
 86:   296960..  299007:    2334720..   2336767:   2048:    2322432:
 87:   299008..  307199:    2340864..   2349055:   8192:    2336768:
 88:   307200..  313343:    2353152..   2359295:   6144:    2349056:
 89:   313344..  315391:    2383872..   2385919:   2048:    2359296:
 90:   315392..  317439:    2412544..   2414591:   2048:    2385920:
 91:   317440..  319487:    2418688..   2420735:   2048:    2414592:
 92:   319488..  321535:    2461696..   2463743:   2048:    2420736:
 93:   321536..  327679:    2476032..   2482175:   6144:    2463744:
 94:   327680..  329727:    2508800..   2510847:   2048:    2482176:
 95:   329728..  335871:    2537472..   2543615:   6144:    2510848:
 96:   335872..  337919:    2545664..   2547711:   2048:    2543616:
 97:   337920..  342015:    2582528..   2586623:   4096:    2547712:
 98:   342016..  344063:    2592768..   2594815:   2048:    2586624:
 99:   344064..  346111:    2596864..   2598911:   2048:    2594816:
100:   346112..  348159:    2609152..   2611199:   2048:    2598912:
101:   348160..  356351:    2613248..   2621439:   8192:    2611200:
102:   356352..  358399:    2732032..   2734079:   2048:    2621440:
103:   358400..  366591:    2738176..   2746367:   8192:    2734080:
104:   366592..  370687:    2719744..   2723839:   4096:    2746368:
105:   370688..  372735:    2760704..   2762751:   2048:    2723840:
106:   372736..  374783:    2820096..   2822143:   2048:    2762752:
107:   374784..  376831:    2824192..   2826239:   2048:    2822144:
108:   376832..  382975:    2840576..   2846719:   6144:    2826240:
109:   382976..  385023:    2861056..   2863103:   2048:    2846720:
110:   385024..  387071:    2871296..   2873343:   2048:    2863104:
111:   387072..  389119:    2899968..   2902015:   2048:    2873344:
112:   389120..  393215:    2922496..   2926591:   4096:    2902016: last,eof
/swapfile: 113 extents found

Jak widać plik 1,5G ma 113 zakresów, a optymalnie to by ich miał 1536/128=12. Więc trochę ten plik jest pofragmentowany.

Kod:
# e4defrag -v /swapfile
e4defrag 1.45.0 (6-Mar-2019)
ext4 defragmentation for /swapfile
[1/1]/swapfile: 100%  extents: 113 -> 113       [ OK ]
Success:                       [1/1]

Ale jak widać, niewiele da się coś na tę przypadłość poradzić, a wszystko za sprawą fragmentacji wolnej przestrzeni na partycji / , która wygląda tak:


Kod:
# e2freefrag /dev/mapper/wd_black_label-root
Device: /dev/mapper/wd_black_label-root
Blocksize: 4096 bytes
Total blocks: 7864320
Free blocks: 4175483 (53.1%)

Min. free extent: 4 KB
Max. free extent: 85632 KB
Avg. free extent: 596 KB
Num. free extent: 27934

HISTOGRAM OF FREE EXTENT SIZES:
Extent Size Range :  Free extents   Free Blocks  Percent
   4K...    8K-  :          5767          5767    0.14%
   8K...   16K-  :          3749          8890    0.21%
  16K...   32K-  :          2560         13146    0.31%
  32K...   64K-  :          4138         49365    1.18%
  64K...  128K-  :          3109         73707    1.77%
 128K...  256K-  :          1435         66024    1.58%
 256K...  512K-  :          1446        131012    3.14%
 512K... 1024K-  :          1492        269814    6.46%
   1M...    2M-  :          1934        703334   16.84%
   2M...    4M-  :          1409        968281   23.19%
   4M...    8M-  :           617        843599   20.20%
   8M...   16M-  :           200        524080   12.55%
  16M...   32M-  :            61        321823    7.71%
  32M...   64M-  :            15        158138    3.79%
  64M...  128M-  :             2         38503    0.92%

Więc niby jest ponad 50% wolnego miejsca z 30G (więc ponad 15GiB wolne) ale i tak lipa panie, sieka aż miło i wypadałoby o tym też pamiętać przy tworzeniu pliku SWAP (nie robić tego na partycji / ), by na / zakresy ciągłych bloków są strasznie krótkie jak widać. Big Grin
Odpowiedz
#7
0
Przekierowanie strumienia wyjścia >> dokonuje powłoka, dlatego będą użyte uprawnienia zwykłego użytkownika a nie procesu który jest wykonywany za pomocą sudo. Każdemu kto wykona tą komendę z sudo (jak to się powinno zrobić) będzie odmówiony dostęp do pliku. U ciebie działa bo otwarłeś konto administratora. Z tego powodu stosowanie tej komendy w poradniku jest błędne.

Twórcy systemu Linux Mint zrezygnowali z partycji wymiany na rzecz pliku wymiany. Zachęcają też w poradnikach do powiększania plików wymiany. Widocznie nie uważają fragmentacji za wielki problem.
Odpowiedz
#8
0
No to jak używasz sudo, to rób to poprawnie: Big Grin

Kod:
$  sudo sh -c "dd if=/dev/zero bs=1M count=512 >> /swapfile"
512+0 records in
512+0 records out
536870912 bytes (537 MB, 512 MiB) copied, 7.00638 s, 76.6 MB/s

Co do fragmentacji, to pewnie nawet sobie z niej sprawy nie zdają. Smile
Odpowiedz
#9
0
(16-03-2019, 16:59)morfik napisał(a): Co do fragmentacji, to pewnie nawet sobie z niej sprawy nie zdają. Smile

Tak, tak, ci ludzie nie mają pojęcia co robią.[Obrazek: biggrin.png]
Odpowiedz
#10
0
No właśnie do takiego wniosku można dojść. Big Grin Raczej zdecydowali się poświęcić trochę wydajności maszyny, by rozwiązanie ze SWAP nie było upierdliwe. Bo taka dodatkowa partycja trochę komplikuje jednak podział dysku i w zasadzie to tylko taki argument mi przychodzi do głowy przy zastosowaniu pliku SWAP. No może jeszcze sporadyczne wykorzystanie SWAP, gdy ma się dostatecznie dużo pamięci RAM, ale w każdym innym wypadku partycja SWAP jest tym kierunkiem w którym należy się kierować. Big Grin
Odpowiedz


Skocz do:




Użytkownicy przeglądający ten wątek: 1 gości