Ich habe ein Laufwerk (SD-Karte) mit einigen ext4-Partitionen, aber auch nicht zugewiesenem Speicherplatz. Das fstrim
Dienstprogramm kann nur innerhalb eines Dateisystems arbeiten. Gibt es ein anderes Dienstprogramm, das den nicht zugewiesenen Speicherplatz TRIMMEN kann (oder das einen explizit angegebenen Bereich TRIMMEN kann), bevor ich das Rad neu erfinde und eines schreibe?
Ich kann überprüfen, ob der Controller derzeit nicht weiß, dass der größte Teil des nicht zugewiesenen Speicherplatzes auf dem Gerät frei ist , da ich festgestellt habe, dass auf dieser bestimmten Karte in den zugeschnittenen Speicherplatz Nullen zurückgegeben werden, aber ein Scan des Geräts zeigt viele Mülldaten übrig.
Bearbeiten: Ich habe ein Problem mit hdparm
. Im folgenden Beispiel wird der erste Sektor verworfen, aber unabhängig vom angegebenen Bereich werden dieselben Ergebnisse angezeigt. fstrim
hat keine Probleme auf dem Gerät:
root@ubuntu:~# hdparm --please-destroy-my-drive --trim-sector-ranges 0:1 --verbose /dev/mmcblk0
/dev/mmcblk0:
trimming 1 sectors from 1 ranges
outgoing cdb: 85 0d 06 00 01 00 01 00 00 00 00 00 00 40 06 00
outgoing_data:
00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ioctl(fd,SG_IO): Invalid argument
FAILED: Invalid argument
Ich recherchiere weiter, aber hat jemand einen Einblick?
blkdiscard
diese verwenden, um das gesamte Gerät zu beschneiden.blkdiscard
scheint aber in meinen Standardpaket-Repositorys nicht verfügbar zu sein (Ubuntu 12.04 scheint in nicht vorhanden zu seinutil-linux
).hdparm
aus irgendeinem Grund nie für mich arbeiten, aber ich habe mir die Util-Linux-Quelle von github.com/karelzak/util-linux/tree/stable/v2.23 geholt , sie gebaut (./autogen.sh ; ./configure ; make blkdiscard
) und sie funktioniert großartig. Immer noch verwirrthdparm
,blkdiscard
macht aber genau das, was ich will. Bonus: Es ist nicht erforderlich, zuerst ein temporäres Dateisystem zu erstellen. Sie könnensfdisk -l
den Abstand zwischen Partitionen ermitteln undblkdiscard
zuschneiden.blkdiscard
mit Offset- / Längenoptionen arbeiten konnte. Die von mir vorgeschlagenen temporären Partitionen sind also nicht einmal notwendig. Nett!Antworten:
Wenn Sie über eine ausreichend aktuelle Version von verfügen
util-linux
, enthält diese das Tool, mitblkdiscard
dem ganze Geräte oder Bereiche innerhalb eines Geräts mithilfe von--offset
und--length
Optionen getrimmt werden können.Bitte beachten Sie:
blkdiscard
Ist gefährlich, wenn Sie es die falschen Regionen abschneiden lassen, sind Ihre Daten weg!So können Sie die nicht partitionierten (freien) Bereiche Ihrer Partitionstabelle herausfinden und sie dann mit diesem Tool TRIMMEN. Für
msdos
undgpt
Partitionenparted
bietet die freien Regionen wie folgt:Fügen Sie eine Schleife hinzu ...
welche druckt
Stellen Sie sicher, dass diese Ausgabe für Sie korrekt ist, fügen Sie zusätzliche Optionen hinzu, wenn Sie möchten (ausführlich?), Und entfernen
echo
Sie schließlich die, damit sie tatsächlich ausgeführt wird, und Sie sollten festgelegt werden.Der zweite Befehl dieses Beispiels schlägt tatsächlich fehl, weil die Länge zu klein ist. Es kann sich lohnen, innerhalb der Schleife zu überprüfen und Bereiche zu ignorieren, die kleiner als 1 MB sind, da es unwahrscheinlich ist, dass sie erfolgreich gekürzt werden.
Wenn Sie LVM anstelle von Partitionen verwenden, können Sie eine LV für den nicht belegten Speicherplatz erstellen und Folgendes kürzen:
Wenn Sie
issue_discards = 1
Ihre festlegenlvm.conf
, können Sie denblkdiscard
Anruf überspringen , da LVM die TRIMlvremove
selbst ausgibt .quelle
blkdiscard
Verfügung; Sie können die Util-Linux-Quelle von github.com/karelzak/util-linux/tree/stable/v2.23 abrufen und dann erstellenblkdiscard
(ausführen./autogen.sh ; ./configure ; make blkdiscard
) - sie wurde sauber erstellt (obwohl Sie möglicherweise einige Abhängigkeiten und Optimierungsoptionen installieren müssenconfigure
) und als Solange Sie es nicht installieren, steht es nicht in Konflikt mit dem vorhandenen Util-Linux.blkdiscard
die ebenfalls übergeben wurden, aber festgestellt, dass die Werte auf dem Versatz und nicht auf der Länge basieren. Es ist möglich, dass es ein Problemblkdiscard
gibt. Ich bin gerade dabei, Nachforschungen anzustellen. Siehe unix.stackexchange.com/questions/98473/…hdparm --trim-sector-ranges
kann einen Bereich trimmen. Die Manpage warnt davor, sie zu verwenden. Stellen Sie daher sicher, dass Sie den richtigen Bereich und die richtige Syntax haben.Ich denke, das Senden eines Zuschnitts für alle Daten außerhalb einer Partition wäre gefährlich, da dort manchmal versteckte Daten wie Bootloader-Code oder zweite Partitionstabellen vorhanden sind. Sie müssen genau wissen, welche Bereiche außerhalb von Partitionen wirklich ungenutzt sind.
quelle
hdparm
nicht verwendeten Bereichensfdisk
abrufen und entsprechend zuschneiden. Ich weiß, was auf der Fahrt ist. Wenn es ein Partitionierungsschema gibt, das Daten in zugänglichen, aber nicht zugewiesenen Bereichen verbirgt, würde dies die Grundfunktionalität eines Partitionseditors beeinträchtigen. Ich gehe davon aus (hoffe), dass solche Pläne schon lange aufgegeben wurden (ich kenne jedoch keine auf Anhieb). Alle mir bekannten Schemata speichern den MBR in einem bekannten nicht zugewiesenen Speicherplatz zu Beginn des Geräts und VBRs / EBRs in zugewiesenen Partitionen. Es kann alte obskure Schemata geben, die unterschiedlich sind. :)hdparm
, ich habe meine Frage mit Details bearbeitet; Ich frage mich, ob Sie einen Einblick haben.