Allereerst, ja, dit is inderdaad een vreemd topic voor Non-Windows Operating Systems. Dat ben ik helemaal met jullie eens. Maar.
Ik heb een 32GB Sandisk SSD die via Qemu doorgegeven word aan Windows. So far, so good. Echter, dit is een oude caching SSD en er zijn dus praktisch geen vrije sectoren meer. Qemu meld echter niet aan Windows dat dit een SSD is, dus Windows doet geen TRIM. En NTFS-3g doet ook geen TRIM. Geen probleem dacht ik, we maken gewoon met dd een bestand aan dat alle ruimte vult zodat dat stuk schijf leeg is, doen vervolgens een secure erase op de schijf en knikkeren dan de image terug. Maar ja, dit schiet natuurlijk niet op omdat ik nu weer data schrijf naar een hoop sectoren die gewoon leeg zijn
Nu zit ik dus nog met een bestand van ~17GB welke met dd if=/dev/zero of=test.bin bs=8M is aangemaakt. Nu wil ik alle sectoren die door dit bestand in gebruik zijn een TRIM commando sturen (om het even zo te noemen), maar ik heb geen idee hoe dat moet. Ik weet dat hdparm dit kan, en ook dat ik hiervoor --trim-sector-ranges nodig heb. Ook heb ik gelezen dat ik met --fibmap <file> een lijst met LBA sectoren krijg die door het bestand ingenomen worden. Echter, deze lijst is gigantisch gefragmenteerd, en wat moet ik met de offset doen?
Ik heb heel geen moeite om dingen uit te gaan rekenen en uit te zoeken, maar ik kom er even niet meer uit...
Het begin van het resultaat van hdparm --fibmap /media/part2/test.bin:
Ik heb een 32GB Sandisk SSD die via Qemu doorgegeven word aan Windows. So far, so good. Echter, dit is een oude caching SSD en er zijn dus praktisch geen vrije sectoren meer. Qemu meld echter niet aan Windows dat dit een SSD is, dus Windows doet geen TRIM. En NTFS-3g doet ook geen TRIM. Geen probleem dacht ik, we maken gewoon met dd een bestand aan dat alle ruimte vult zodat dat stuk schijf leeg is, doen vervolgens een secure erase op de schijf en knikkeren dan de image terug. Maar ja, dit schiet natuurlijk niet op omdat ik nu weer data schrijf naar een hoop sectoren die gewoon leeg zijn

Nu zit ik dus nog met een bestand van ~17GB welke met dd if=/dev/zero of=test.bin bs=8M is aangemaakt. Nu wil ik alle sectoren die door dit bestand in gebruik zijn een TRIM commando sturen (om het even zo te noemen), maar ik heb geen idee hoe dat moet. Ik weet dat hdparm dit kan, en ook dat ik hiervoor --trim-sector-ranges nodig heb. Ook heb ik gelezen dat ik met --fibmap <file> een lijst met LBA sectoren krijg die door het bestand ingenomen worden. Echter, deze lijst is gigantisch gefragmenteerd, en wat moet ik met de offset doen?
Ik heb heel geen moeite om dingen uit te gaan rekenen en uit te zoeken, maar ik kom er even niet meer uit...
Het begin van het resultaat van hdparm --fibmap /media/part2/test.bin:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
| $ sudo hdparm --fibmap test.bin test.bin: filesystem blocksize 4096, begins at LBA 718848; assuming 512 byte sectors. byte_offset begin_LBA end_LBA sectors 0 14930128 14932775 2648 1355776 15003032 15004175 1144 1941504 15270432 15270503 72 1978368 15509632 15516511 6880 5500928 15639048 15640311 1264 6148096 15910888 15914687 3800 8093696 16175816 16184783 8968 12685312 16269376 16281303 11928 18792448 16303440 16305503 2064 19849216 16460416 16461071 656 20185088 16690120 16690143 24 20197376 19077400 19077407 8 20201472 19301608 19301631 24 20213760 19802240 19802335 96 20262912 19871200 19873015 1816 21192704 20187488 20547071 359584 205299712 20570672 20570807 136 205369344 20693248 20693375 128 205434880 20843112 20843239 128 205500416 21067752 21128343 60592 236523520 21131392 21132311 920 236994560 21276104 21276759 656 237330432 21439424 21439471 48 |