Wie kann ich eine Swap-Partition auf Amazon EC2 mit kurzlebigem Speicher erstellen?


8

Dies ist die Ausgabe von df -k:

Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/xvda1            10317860   7059008   2734732  73% /
none                    847584         0    847584   0% /dev/shm
/dev/xvdb            153899044    192068 145889352   1% /mnt/ephemeral

Ich verwende das Centos EBS-Boot-Image.

Ich habe verschiedene Fragen dazu gelesen, aber sie sagen, dass das neue Laufwerk gemountet werden soll. Aber ich denke, das Laufwerk ist bereits bei montiert /dev/xvdb. Hab ich recht?

Kann ich das einfach benutzen:

mkswap -f /dev/xvdb
#add in /etc/fstab
/dev/xvdb       swap    swap    defaults        0       0
swapon /dev/xvdb

Wird es funktionieren?

Antworten:


8

/ dev / xvdb ist tatsächlich gemountet. Sie müssen überprüfen, ob dort etwas gespeichert ist, das Sie behalten möchten, obwohl es eine WIRKLICH schlechte Idee ist, wichtige Dinge auf einem kurzlebigen Laufwerk zu behalten.

Sie müssen / dev / xvdb aushängen, bevor Sie etwas damit tun können.

Während du kannst

mkswap /dev/xvdb 

Dadurch wird der gesamte kurzlebige Antrieb ausgetauscht, den Sie mit ziemlicher Sicherheit nicht benötigen. Wenn Sie Ihren Swap partitionieren, können Sie den Rest des kurzlebigen Laufwerks auch für den tmp-Ordner oder zum Speichern von Sitzungen verwenden (wenn Ihr Host ein Webserver ist). Vergängliche Triebe sind sehr schnell, aber leider nicht sehr hartnäckig.

Wie auch immer, zurück, um Partitionen zu tauschen!

Es ist besser, entweder sfdisk zu verwenden, wie Abhishek erwähnt, oder manuell eine Swap-Partition mit fdisk zu erstellen:

fdisk /dev/xvdb
Press N to create a new partition
P for primary
1 for the first partition
Press Enter to accept the first location
Enter +xG where x is the size of the swapspace you want. I typically use twice the amount of RAM, but this is not a hard and fast rule
Enter T to change the type
Enter 82 for Linux Swap
Enter W to write the changes
Enter q to quit

Sie können jetzt Ihren Swap Space mit erstellen

mkswap /dev/xvdb1

Und dann aktivieren Sie es mit

swapon /dev/xvdb1

Ein Wort der Warnung, und ich entschuldige mich, wenn ich "Oma beibringe, Eier zu lutschen". Aber wie der Name schon sagt, ist ein kurzlebiger Antrieb ... nun, kurzlebig. Wenn Sie Ihre Instanz jemals herunterfahren, müssen Sie Ihre Swap-Partition neu erstellen und aktivieren. Fügen Sie aus diesem Grund Ihren neu erstellten Swap Space nicht zu Ihrer fstab hinzu.

Ein Neustart sollte jedoch in Ordnung sein.


1
Ich habe diesen Code zum Erstellen eines Swaps eingefügt rc.local. ist das in Ordnung. so dass der Swap bei jedem Start automatisch erstellt wird
Pandora

1
Ich würde nicht. Wenn der Host neu gestartet wird, ist der Swap-Bereich weiterhin vorhanden, sodass er nicht neu erstellt werden muss. Wenn der Host beendet (heruntergefahren) und dann neu gestartet wird, ist das zuvor vorhandene kurzlebige Laufwerk nicht mehr verfügbar. In beiden Fällen müssen Sie den Swap-Bereich von Grund auf neu erstellen.
GeoSword

Der Vorteil der erneuten Neuerstellung besteht darin, dass Sie über eine stabile Umgebung verfügen, für deren Neustart keine manuellen Eingriffe erforderlich sind. Nur ein Gedanke; Ich bin mir nicht sicher, ob das Wiederherstellen von Swap lange dauert oder nicht (und wenn ja, könnte möglicherweise eine kleinere Partition verwendet werden).
Brian C

3

Ich habe ein Skript erstellt , das beim Erstellen von Swaps auf kurzlebigen Geräten hilfreich sein kann. Es verwendet lvm zum Erstellen des Swap-Volumes und erstellt auch ein Volume, das als / tmp nützlich sein kann. Sie können Cloud-Init verwenden, um es auszulösen.

bootcmd:
 - [ cloud-init-per, once, mk-eph, /usr/local/sbin/mk-eph.sh]

# Filesystem setup
fs_setup:
 - label: 'tmp'
   filesystem: 'xfs'
   device: '/dev/ephemeral/tmp'
   partition: 'auto'

mounts:
 - [ /dev/ephemeral/tmp, /tmp, auto, "defaults,nobootwait" ]
 - [ ephemeral0, null ]

runcmd:
 - [ chmod, 1777, /tmp ]

2

Hängen Sie zuerst Ihren Epermal-Speicher aus und montieren Sie ihn erneut wie unten beschrieben

  umount /dev/xvdb # in case it is already mounted
  sfdisk /dev/xvdb << EOF
  ,1024,82
  ,
  ;
  ;
  EOF
  mkswap /dev/xvdb1 && swapon /dev/xvdb1
  mkfs.xfs -f /dev/xvdb2 && mount /dev/xvdb2 /mnt

Wie gebe ich die Zeilen wie 1024 ein. , ;;. Ich meine, muss ich Zeile für Zeile alle kopieren und dann einfügen. Auch wie viel machen Sie das Swap-Laufwerk. kann ich es 10 GB machen
Pandora

2
Was dieser Code tut, sollte dokumentiert werden. Es wird eine Swap- und XFS-Partition mit bestimmten Größen erstellt, und es ist nicht klar, wie diese Befehle bei Neustarts bestehen bleiben.
Mark Stosberg
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.