Warum dauert das Auslagern bei der Aktivierung einer Auslagerungsdatei lange?

3539
Chaos_99

Ich habe eine Auslagerungsdatei mit erstellt

dd if=/dev/zero of=swap.img bs=1024k count=4k mkswap swap.img swapon swap.img 

Während dies funktioniert, swapondauert der Befehl einige Zeit (ca. 10 Minuten). Wenn Sie die Auslagerungsdatei aktivieren /etc/fstab, wird der Startvorgang für einige Minuten angehalten.

Ich habe bemerkt, dass sich die Ausführungszeit des Befehls dd verkürzt, wenn ich die Blockgröße vergrößere (zuvor mit 1024 und 1 versucht). Hat dies auch Auswirkungen auf swapon?

Wird swaponSparse - Dateien umgehen? Ich habe es bereits erfolgreich versucht, bekam aber nach einem Neustart eine "Auslagerungsdatei mit Löchern", sodass ich wieder auf eine vollständige Datei umgestellt habe.

Einige weitere Infos:

  • Verwenden von Linux Mint KDE 15 RC
  • Die Auslagerungsdatei befindet sich auf einer eingehängten NTFS-Partition

Ausgabe von ddwar

4096+0 records in 4096+0 records out  4294967296 bytes (4,3 GB) copied, 73,9629 s, 58,1 MB/s  

Ausgabe von mkswap war

Setting up swapspace version 1, size = 4194300 KiB no label, UUID=108b2e2d-e00a-40d0-8e28-c0b72003e63e 

swaponproduzierte keine Ausgabe, dmesgzeigte aber danach:

Adding 4194272k swap on /host/personal/swap.img. Priority:-1 extents:9 across:4335880k 

Haben Sie eine Idee, wie Sie eine Auslagerungsdatei (besser sogar doppelt so groß) erstellen, die in angemessener Zeit bereitgestellt wird?

3
Warum befindet sich Ihr Swap auf einer NTFS-Partition? Warum nicht einfach eine Swap-Partition verwenden? beatgammit vor 10 Jahren 0
Komplizierte Einrichtung Syslinux Bootloader startet den Kernel mit dem fetten USB-Schlüssel und lädt das Root-Dateisystem von einer NTFS-Festplatte. Es gibt also kein Gerät, auf dem ich Partitionen erstellen könnte, daher auch die Swap-Datei von der NTFS-Festplatte. Chaos_99 vor 10 Jahren 0
Bist du dir über diesen `dd`-Befehl sicher? Das ist eine _huge_-Datei, nicht die 4 GB, die Sie erwarten. terdon vor 10 Jahren 0
@terdon Sorry, that was a typo. I've corrected it now. As you can see by the copy&pasted output of dd, it actually WAS 4GB. Chaos_99 vor 10 Jahren 0

1 Antwort auf die Frage

2
terdon

Dies ist weniger eine Antwort als eine Reihe von Hinweisen. Auf dieser Seite wird zunächst erwähnt, dass die Ausführung des ddBefehls auf einer NTFS-Partition die Partition beschädigen kann. Keine Ahnung warum und keine Ahnung, ob es wahr ist, aber ich dachte, es sei erwähnenswert:

Wenn / mnt / home ein NTFS-Laufwerk ist, verwenden Sie nicht dd (das Schreiben auf Ihr NTFS-Laufwerk kann das Dateisystem beschädigen.)

Unabhängig von den Details scheint das Erstellen einer Auslagerungsdatei auf einer NTFS-Partition in der Tat problematisch zu sein:

 $ dd if=/dev/zero of=swap.img bs=1024k count=4k 4096+0 records in  4096+0 records out 4294967296 bytes (4.3 GB) copied, 122.731 s, 35.0 MB/s $ mkswap swap.img  $ sudo swapon swap.img  swapon: /winblows/swap.img: skipping - it appears to have holes. 

Derselbe Prozess, der auf einer ext4-Partition ausgeführt wird, ist fehlerfrei und scheint einwandfrei zu funktionieren, was darauf hinweist, dass das Problem das NTFS-Laufwerk ist. Beim Verschieben der Datei, die von der ext4-Partition in die NTFS-Partition funktionierte, wurde swaponderselbe Fehler "Datei hat Löcher" gegeben. Es ist also wirklich nicht die Datei, sondern die Partition.

Dies kann ein Problem sein, das durch die Fragmentierung meines Laufwerks verursacht wurde. Ein Benutzer in diesem Forum hat jedoch bekanntgegeben, dass er dasselbe Problem auf einem neu formatierten Laufwerk erhält, das nur 2 Dateien enthält. Es scheint also, als wäre die Fragmentierung kein Problem.

Auf der einen Seite ntfs-3Glautet die FAQ (das ist das Modul, das vom Kernel zum Mounten und für den Zugriff auf NTFS-Partitionen verwendet wird) :

Kann ich die Auslagerungsdatei sicher und ohne Deadlock unter NTFS verwenden?

Ja, das ist möglich, wenn es richtig eingerichtet ist. Das folgende Beispiel zeigt, wie Sie eine 2-GB-Auslagerungsdatei sicher und ohne Deadlock erstellen, initialisieren und aktivieren:

dd if=/dev/zero of=swapfile bs=1M count=2000  mkswap swapfile swapon swapfile 

Sie müssen die Auslagerungsdatei mit 'swapoff' deaktivieren, bevor Sie NTFS deaktivieren können. Bitte beachten Sie auch, dass andere Lösungen, z. B. die Verwendung von Swap auf einem Loop-Gerät, nicht sicher sind und zu Deadlocks führen können!

Sie scheinen zu glauben, dass es funktionieren sollte. Auf der anderen Seite, wenn ich die obigen Befehle ausführen, erhalte ich den gleichen Fehler "Datei hat Löcher".

Obwohl ich keine schlüssigen Informationen finden kann, kann ich es unter NTFS nicht funktionieren lassen. Ich habe verschiedene Beiträge gefunden, die darauf schließen lassen, dass die Verwendung einer NTFS-Partition für eine Auslagerungsdatei eine schlechte Idee ist oder die verschiedene Probleme beschreibt, die Benutzer beim Versuch derselben hatten. Fazit: Wenn Sie NTFS vermeiden wollen, ist dies wahrscheinlich eine gute Idee.

Vielen Dank für die Recherche. Meine einzige andere Option wäre die Verwendung einer Auslagerungsdatei innerhalb des ext4-Image, die das Root-Dateisystem bereitstellt, das von der NTFS-Partition bereitgestellt wird. Ich habe jedoch andere Berichte online gefunden, die auch die Verwendung von Loopback-Davices für Auslagerungsdateien verhindern. (Möglicherweise bedeutete dies jedoch nur das Anbringen von Loopback-Geräten als Swap-PARTITIONS.) Chaos_99 vor 10 Jahren 0
yep immer noch dasselbe Verhalten :( Georgios Pligoropoulos vor 7 Jahren 0