Ich folge daher einem Tutorial zur Installation von OTRS, dem Open Source Ticket Request System. Für die Installation sind also 4 GB Swap-Speicherplatz erforderlich. Hier ist der Befehl, den ich verwendet habe:
[root@ip-10-0-7-41 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/xvda1 50G 14G 37G 27% /
devtmpfs 478M 0 478M 0% /dev
tmpfs 496M 0 496M 0% /dev/shm
tmpfs 496M 13M 484M 3% /run
tmpfs 496M 0 496M 0% /sys/fs/cgroup
tmpfs 100M 0 100M 0% /run/user/1000
[root@ip-10-0-7-41 ~]# fallocate -l 4G /myswap
[root@ip-10-0-7-41 ~]# ls -lh /myswap
-rw-r--r--. 1 root root 4.0G Jul 8 08:44 /myswap
[root@ip-10-0-7-41 ~]# chmod 600 /myswap
[root@ip-10-0-7-41 ~]# mkswap /myswap
Setting up swapspace version 1, size = 4194300 KiB
no label, UUID=3656082a-148d-4604-96fb-5b4604fa5b2e
[root@ip-10-0-7-41 ~]# swapon /myswap
swapon: /myswap: swapon failed: Invalid argument
Sie können sehen: Ungültiger Argumentfehler hier. Ich habe viele Male vergeblich versucht, es zu aktivieren. Bitte sagen Sie mir, wie ich diesen Fehler beheben kann. (Ich führe dieses CentOS 7 unter AWS Instance EC2 aus.)
[root@ip-10-0-7-41 ~]# df -T | awk '{print $1,$2,$NF}' | grep "^/dev"
/dev/xvda1 xfs /
dd
. Bitte beachten Sie, dass nicht alle Dateisysteme Swap unterstützen oder zumindest nicht auf die gleiche Weise.Antworten:
Das Problem dabei
fallocate(1)
ist, dass es das Dateisystem verwendetioctls
, um die Zuweisung schnell und effektiv zu machen. Der Nachteil ist, dass es den Speicherplatz nicht physisch zuweist, sondern dassswapon(2)
syscall einen realen Speicherplatz benötigt. Referenz: https://bugzilla.redhat.com/show_bug.cgi?id=1129205Ich hatte dieses Problem früher auch mit meiner Box konfrontiert. Also, anstatt zu verwenden
fallocate
, habe ich,dd
wie der Link andeutet, verwendetund weiter mit
chmod
,mkswap
&swapon
befehlen. Bingo! Es funktionierte.quelle
dd
time dd if=/dev/zero of=/myswap count=4096 bs=1MiB
Scheint viel mehr Arbeit zu leisten, dauert 14.003 Sekunden, wobei 0.018 Sekunden erforderlichtime fallocate -l 4G /swap3
sind, sie produzieren jedoch die gleiche Dateigröße. Ich vermute, dassfallocate
nicht in Nullen kopiert wird, wiedd
dies der Fall ist undswapon
diese Nullen benötigt.swapon: /swapfile: read swap header failed: Invalid argument
habe diesen Fehler erhalten, nachdemswapon /swapfile
ich versucht habe, auf dem centos7 puppetenterprise serverBefolgen Sie diese Schritte, es funktioniert auf DigitalOcean-Tröpfchen. Ich habe getestet. Ändern Sie die Menge 4096 entsprechend Ihrem Bedarf
füge diese Zeile hinzu:
Führen Sie diesen Befehl aus
füge diese Zeile hinzu
So überprüfen Sie die Größe des Swap
quelle
dd
Befehl wäre,dd if=/dev/zero of=/swapfile count=4 bs=1GiB
weil ich nicht die Mühe habe, Mebibyte in Gibibyte zu berechnen, wenndd
ich das für mich tun kann. Wussten Sie, dass die Menschen es in früheren Zeiten in Kibibyte ausgedrückt und in Gibibyte von Hand berechnet haben? Unglaublich!bs=
nicht der richtige Weg ist, da es unbeabsichtigte Konsequenzen hat, wie die Effizienz zu beeinträchtigen und wahrscheinlich auf den meisten kostengünstigen Hostings nicht funktioniert. Wenn Sie nur faul sind, verwenden Siecount_bytes
und lassendd
Sie für Sie sowohl die Mathematik als auch die Auswahl einer effizienten Blockgröße tun:dd if=/dev/zero of=/swapfile count=4GiB iflag=count_bytes
=)iflag=count_bytes
ist eine hervorragende Verbesserung für Ihren Kommentar. Und ich bin nicht faul, mir ist die Lesbarkeit wichtig. In 6 Monaten, wenn ich mein Skript erneut lese (oder wenn der nächste Betreuer kommt), muss der Leser verstehen, was los ist. Es sind nicht nur Computer, die Code lesen, sondern auch Menschen!