Defragmentieren von NTFS-Partitionen unter Linux

Antworten:

12

Ja, Sie können Shake verwenden . Sie müssen Ihrem System zunächst ein benutzerdefiniertes Repository hinzufügen:

sudo add-apt-repository ppa:un-brice/ppa
sudo apt-get update
sudo apt-get install shake-fs

Dann kannst du machen

sudo shake /some/dir
alexg
quelle
10
Shake ist kein Defragmentierer, es kopiert einfach jede Datei in der Hoffnung, dass die Kopie weniger fragmentiert wird. Das ist natürlich weit davon entfernt, wie echte Defragmentierer arbeiten.
Rustyx
9

Soweit ich weiß, gibt es kein solches Tool.

Einige Sites melden den folgenden Befehl

# WARNING - does not work
fsck -t ntfs --kerneldefrag /dev/hdX

aber das funktioniert nicht und es ist nicht klar, woher sie es bekommen.

Enzotib
quelle
7
-1 Warum eine Antwort hinzufügen, wenn sie in keiner Weise nützlich ist?
Wolfer
1
@Wolfer es ist gut so, wenn wir es woanders finden, wissen wir, dass es nicht funktioniert
krispy
6

Update: UltraDefrag für Linux:

UltraDefrag ist ein leistungsstarkes Open Source-Defragmentierungsprogramm für die Windows-Plattform. Es kann alle Systemdateien einschließlich Registrierungsstrukturen und Auslagerungsdateien defragmentieren. Eines der Hauptziele von UltraDefrag ist es, die Arbeit so schnell und zuverlässig wie möglich zu erledigen. Es wird auf Linux und NTFS-3G portiert, um NTFS-Partitionen zu defragmentieren. Derzeit ist nur eine Testversion im Konsolenmodus verfügbar. Bitte lesen Sie die mitgelieferte Datei README.linux zum Kompilieren und Testen

http://jp-andre.pagesperso-orange.fr/advanced-ntfs-3g.html

[Ich habe das selbst noch nicht benutzt. Habe es über einen Thread in einem Arch-Forum gefunden . Wenn Sie dem Thread auf der nächsten Seite folgen, erfahren Sie mehr zum Thema. Versuchen Sie es auf eigenes Risiko.

kevjonesin
quelle
1

Dies ist eine GROSSE Warnung für alle unter Ihnen, die glauben, dass NFTS unter Linux defragmentiert werden kann, indem Sie einfach Dateien kopieren (nur Dateien klonen) usw.:

  • Einige NTFS (Dateien / Ordner) können ein spezielles Attribut aufweisen, das als NTFS-Komprimierung bezeichnet wird

Wenn Linux (cp, fsarchiver, etc) eine Datei / einen Ordner auf ein NTFS schreibt, schreibt es diese nach meinem Kenntnisstand immer ohne NTFS-Komprimierung, unabhängig davon, ob die Komprimierung für die Datei / den Ordner aktiviert oder deaktiviert ist.

Sie können also zu einer Situation kommen (ich treffe sie auf die harte Tour), in der das Wiederherstellen mit fsarchive (oder cp usw.) dazu führen würde, dass die Partition voll wird und nicht ausreicht.

Einige Arten von Daten können eine NTFS-Komprimierungsrate von mehr als 3 erreichen, sodass Sie eine X GiB-Partition mit vielen Dateien haben können und die Summe der Dateien ungefähr 3 * X groß ist.

Ich gebe diese Warnung, weil es nicht gut bekannt ist und manchmal wirklich große Kopfschmerzen verursacht. Wie beim Wiederherstellen eines Klons benötigen Sie mehr Speicherplatz als die gesamte Partition, die geklont wurde, da die NTFS-Komprimierung unter Linux verloren gegangen ist.

Außerdem erreiche ich mit sehr sehr speziellen Daten (NTFS-Verhältnis größer als 5) diese Situation:

  • NTFS-Partitionsgröße von X GiB
  • Die Datei, die den Klon enthält (mit der besten Komprimierung, die das Tool zulässt, glaube ich, GZip), hat 2 * X GiB

Oh ja, der Klon wurde komprimiert und die doppelte Partitionsgröße benötigt.

Dies liegt daran, dass das Klontool Dateien im Klartext liest (in Klartext, nicht komprimiert) und dann die Daten komprimiert (mit einem wirklich schlechtesten Verhältnis als bei NTFS).

Die Wiederherstellung dieser Daten passt natürlich nicht auf diese Partition, da die wiederhergestellten Daten ohne NTFS-Komprimierung übertragen werden.

Hoffe, es ist ein weiterer Grund klar, warum nicht NFTS-Komprimierung verwenden? Nun, überhaupt nicht, ich benutze (in der Vergangenheit) oft NTFS-Komprimierung. VDI-Dateien (Virtual Box) erhalten ein wirklich gutes Verhältnis.

Jetzt hatte ich Pismo File Mount entdeckt (und es funktioniert auch unter Linux). Es kann eine Datei erstellen, die als Container (als Ordner) fungiert und komprimiert (auch mit einem besseren Verhältnis als NFTS) und gleichzeitig verschlüsselt werden kann.

Warum ich es erwähne. Denn jedes Klontool erkennt einen solchen Container als Datei (wenn er nicht als Ordner angehängt ist) und liest / speichert / sichert den komprimierten Datenstrom, nicht die unkomprimierten Daten (wie bei der NTFS-Komprimierung). Die Wiederherstellung erfolgt wie bei jeder anderen Datei.

Anstatt einen NTFS-Ordner mit dem NTFS-Komprimierungsattribut zu komprimieren, habe ich einen virtuellen Ordner zum Mounten von Pismo-Dateien erstellt. bessere Komprimierung usw.

Ich muss Sie auch alle warnen, die an einem solchen kostenlosen Tool interessiert sind. Es hat (zumindest noch) keine Verkleinerung. Wenn sich der Ordnerinhalt also stark ändert, ist dies keine so gute Idee.

Bei unveränderlichen virtuellen Laufwerken, ISOs und Dingen, die sich nicht ändern, liegt das Verhältnis jedoch sehr nahe bei den LZMA2-Laufwerken (7-Zip) und kann im laufenden Betrieb gelesen / beschrieben werden.

Und es ist plattformübergreifend.

Beachten Sie, dass der Bösewicht der NTFS-Komprimierung von Fragmentierung spricht. Wenn Sie eine Datei in ein NTFS mit aktivierter NTFS-Komprimierung schreiben, geschieht dies auf diese Weise (ja, schrecklich designt, ich denke, dies geschieht auf diese Weise, um eine größere Fragmentierung in beabsichtigter Weise zu gewährleisten, was schlimmstenfalls nicht möglich ist):

  1. Die Startschreibposition wird als 64 KB * N vorberechnet, wobei N die Nummer des 64 KB-Blocks ist, dessen Komprimierung versucht wird
  2. Ein Puffer für 64 KB ist reserviert
  3. Dieser Puffer wird mit 64 KB gefüllt und dann komprimiert
  4. Es werden nur die benötigten 4K-Blöcke geschrieben, der Rest wird als freier Speicherplatz freigegeben

Daher werden viele, viele GAPs in der Mitte der Datei erstellt, und erst nach einer Dateidefragmentierung verschwinden die GAPs. Diese Defragmentierung wird jedoch erst durchgeführt, wenn der Benutzer sie bestellt hat (contig.exe, defrag.exe usw.).

Ja, es schreibt den N-ten 64-KB-Block auf ein Vielfaches von 64 KB, unabhängig davon, ob vorherige Daten komprimiert werden konnten oder nicht. Es verbleibt eine Lücke zwischen jedem 64-KB-Block (wenn alle komprimiert werden konnten).

Die Pismo File Mount-Komprimierung für virtuelle Ordner verhält sich so, als ob eine normale Komprimierung im Pipe-Modus durchgeführt werden sollte, sodass keine Lücken entstehen. zumindest bis du etwas löschst.

Auch eine andere Warnung, legen Sie keine VHD / VHDX-Dateien darin ab, Windows kann sie nicht anhängen! Windows verwendet einen Kernel-Trick, um solche Dinge zu mounten. Es verwendet keine Dateisystemebene und arbeitet auf niedriger Ebene.

Ich würde auch gerne einen Linux-NTFS-Defragmentierer in die Hände bekommen, der sicher schneller ist als alles, was über Windows läuft. Es ist ein Wahnsinn, freien Speicherplatz zu defragmentieren. oder besser reden. Erstellen einer Datei, die groß genug für eine neue große Datei ist.

Auch wäre es toll, wenn mein Gedächtnis besser funktionieren würde. In der Vergangenheit habe ich unter Windows ein Tool (Befehlszeile, sorry) verwendet, mit dem eine Datei nicht fragmentiert kopiert / verschoben werden konnte. Verschieben Sie die benötigten Dateien weg, während Sie das benötigte Ganze erhalten, und fragmentieren Sie diese nicht. Es wird nur eine Meldung ausgegeben, wenn keine Möglichkeit zum Ablegen der Datei gefunden wird (es ist unmöglich, ein Loch zu bekommen), oder eine andere Warnung, wenn keine andere Datei fragmentiert werden muss (die Frage, ob sie vom Benutzer autorisiert wurde) usw. war wirklich großartig. Ich erinnere mich nicht an den Namen (und vielleicht funktioniert es nicht mit modernen Fenstern, es war für Win2000).

Claudio
quelle
0

Nein. Da es sich um Windows-Dateisysteme handelt, müssen Sie sie mit Windows defragmentieren.

Psusi
quelle
Hat Wine nicht die Standard-Windows-Defragmentierungs-App? ???
Juan
2
@ Juan, nein, das ist ein Teil von Windows. Mit WINE können nur Anwendungen von Drittanbietern ausgeführt werden, die für Windows geschrieben wurden. Es werden auch Windows-Dateisystemtreiber-spezifische Ioctls verwendet, die unter Linux nicht verfügbar sind.
Psusi
0

Es gibt einen sehr bekannten trickreichen Cheat, um eine NTFS-Defragmentierung (einschließlich freiem Speicherplatz) zu archivieren. Dies kann mit einem Live-Linux wie SystemRescueCD durchgeführt werden.

Sie müssen jedoch über eine zweite Festplatte oder mindestens 51% freien Speicherplatz verfügen (sofern keine Komprimierung verwendet wird).

Der Trick (sehr knifflig) besteht darin, Werkzeuge zum "Klonen" der Partition zu verwenden, aber keine typischen. Es gibt ein Werkzeug, das eine NTFS-Partition "klonen" kann, aber kein genaues "Klonen" ausführt ...

Das Tool ist fsarchive (wenn ich mich nicht schlecht erinnere).

Es erstellt eine sehr große Datei (wie es Klontools tun), mit allen Dateien (Vorsicht vor NTFS-speziellen Metadaten von Dateien, Streams, von denen ich denke, dass sie aufgerufen werden), genau wie ein "Klontool" ...

Aber der schwierige Teil kommt beim Wiederherstellen ... es werden keine Dateien dort abgelegt, wo sie sind, es werden Dateien ohne jegliche Fragmentierung abgelegt.

Ich hatte es sowohl für Windows-Systempartitionen als auch für NTFS-Datenpartitionen verwendet ... mit Erfolg ... nicht sehr einfach zu verwenden / zu verstehen (die Dokumente sorgfältig lesen) ... aber ich kann den Trick machen.

Denken Sie daran, dass eine so große Datei, die sie erstellt, komprimiert werden kann und daher nicht unbedingt 51% kostenlos sein muss.

Aber wie auch immer, zuerst müssen Sie die NTFS-Partition verkleinern ... GParted verwenden (wenn ich mich nicht schlecht erinnere).

Also Schritte:

  1. Schlimmster Fall: Die Festplatte verfügt nur über eine BIG NTFS-Partition mit ausreichend freiem Speicherplatz
  2. Booten Sie SystemRescuCD (wenn Sie X Windows mit dem Assistenten starten möchten)
  3. Verwenden Sie GParted, um die NTFS-Partition auf die Mindestgröße zu verkleinern (NTFS-Dateien werden unabhängig von der Größe mehr fragmentiert).
  4. Verwenden Sie GParted, um eine weitere Partition auf freiem Speicherplatz zu erstellen. Besser, wenn ext4 (journal)
  5. Hängen Sie eine solche neue Partition ein, jedoch nicht NTFS
  6. Verwenden Sie fsarchiver, um einen "Klon" der NTFS-Partition zu erstellen, verwenden Sie die Komprimierung und speichern Sie die BIF-Datei auf der erstellten Partition
  7. Ab jetzt ist dies sehr RISIKO: Verwenden Sie GParted, um die NTFS-Partition zu löschen und neu zu erstellen
  8. Stellen Sie den "Klon" mit fsarchiver wieder her. Alle Dateien auf der NTFS-Partition bestehen aus einem Fragment (mit Ausnahme von einem oder zwei, da $ MFT in der Mitte und nicht am Ende der Partition abgelegt werden kann).
  9. Verwenden Sie Gparted, um die NTFS-Partition bei Bedarf zu verkleinern
  10. Überprüfen Sie, ob NFTS korrekt ist, montiert, gelesen / geschrieben und demontiert werden kann
  11. Hängen Sie die neu erstellte ext4-Partition aus
  12. Verwenden Sie Gparted, um ext4 zu vergrößern (oder löschen und neu erstellen)

Das war's, Leute ... wie gesagt natürlich sehr knifflig und riskant.

Hüten Sie sich vor wichtigen Punkten:

  • Durch NFTS-Verkleinerung wird genügend freier Speicherplatz für ein komprimiertes Image der NTFS-Partition zur Verfügung gestellt (51% auf der Festplatte stellen sicher, dass genügend Speicherplatz vorhanden ist).
  • fsarchiver speichert keine NTFS-Streams?
  • fsarchiver restore legt keine Dateien dort ab, wo sie sind, es legt sie unfragmentiert ab (wie eine Kopie)
  • Nach dem Löschen und Neuerstellen der NTFS-Partition gibt es keine Möglichkeit mehr

Die Schritte sind für: Verwenden Sie eine LiveCD / LiveUSB-Linux, um eine NTFS-Partition zu defragmentieren, die 100% der Festplatte verwendet, ohne dass eine andere Festplatte mit einem solchen PC verbunden ist [muss über genügend freien Speicherplatz verfügen].

WICHTIG:

  • Einige könnten denken, wenn Sie nach dem Verkleinern von NTFS 51% frei auf der Festplatte haben, wäre es sicherer, nur dieses ext4 zu erstellen und alles NTFS darauf zu kopieren, dann NTFS zu löschen, es neu zu erstellen und zurück zu kopieren ... wie NTFS - Sicherheitsberechtigungen usw

Solange ich weiß, ist GParted / fsarchiver die naheliegendste Lösung (für die Verwendung nur einer LiveCD / LiveUSB mit Linux), nicht schnell, irgendwie riskant, aber befriedigend, die von der Person auferlegt wird, die die Frage stellt.

BE AWARE: Es ist sehr, sehr riskant ... wie bei jedem "Klon" -Tool ... und im Moment kenne ich keinen anderen besten Weg ... und es wird NTFS-Streams verlieren (wenn ich mich nicht schlecht erinnere)

BITTE: Lesen Sie die fsarchiver-Dokumente sorgfältig durch, bevor Sie sie verwenden.

Ich habe keine Verantwortung (ich hatte es auf meine eigenen Daten verwendet, aber immer habe ich ein externes BackUP - gute partices).

In der Praxis ... alle Informationen, die ich habe, lege ich sie auf mindestens drei verschiedene Medien (HDD, DVD, Flash-Speicher), mit mindestens drei Kopien auf jedem Medium, also habe ich 9 Kopien ... wenn ich 8 davon verliere Sie ruhen sich noch einmal aus, um Daten wiederherzustellen ... Ich bin ein bisschen paranoid, ich weiß.

user372809
quelle
Ich würde diese Methode nicht empfehlen, da sie (wie Sie sagten) sehr riskant ist und sich aufgrund einer Defragmentierung in der Regel nicht lohnt. Verwenden Sie für solche Aufgaben besser Windows Live-Systeme (oder das ursprüngliche Windows-System - warum nicht?).
Byte Commander
fsarchive ist nur ein hochentwickeltes Tar-Archiv, in dem einige erweiterte Attribute gespeichert sind. Es defragmentiert nichts. Ihre Methode ist so gut wie eine einfache Kopie von Dateien von einer Partition in ein anderes sauberes Dateisystem.
ZAB