To niejasne pytanie, wiem. Próbuję przeprowadzić testy wydajności niektórych dysków na komputerze z systemem Linux. Otrzymuję niespójne wyniki, uruchamiając ten sam test na tym samym dysku. Wiem, że dyski mają różną wydajność w zależności od tego, do której części dysku jest uzyskiwany dostęp. W szczególności, odczyty i zapisy na zewnątrz dysku mają znacznie większą przepustowość niż odczyty i zapisy do wewnętrznej części dysku, ze względu na prawie stałą gęstość danych i stałą prędkość obrotową.
Chciałbym sprawdzić, czy moje niespójności można przypisać tej indukowanej geometrią wariancji przepustowości. Czy za pomocą istniejących narzędzi można dowiedzieć się, gdzie na dysku został umieszczony plik?
Jeśli nie, przypuszczam, że mogę napisać coś do bezpośredniego wyszukiwania, odczytu i zapisu do samego pliku urządzenia, omijając (i niszcząc) system plików, ale mam nadzieję tego uniknąć. Obecnie używam ext4 na jądrze 3.0 (Arch Linux, jeśli ma to znaczenie), ale interesują mnie również techniki dla innych systemów plików.
źródło
Odpowiedzi:
Możesz użyć
debugfs
do tego:Zmień odpowiednio dysk twardy / partycję i upewnij się, że dysk jest odmontowany. Otrzymasz listę wszystkich użytych bloków:
źródło
Możesz użyć FIBMAP ioctl , jak tutaj zilustrowano , lub używając hdparm :
źródło
HDIO_GETGEO failed: Inappropriate ioctl for device
Ten wątek może dać ci wgląd w algorytm umieszczania plików ext4.
debugfs
mabmap
funkcję, która wydaje się dawać pożądane dane. Powinieneś być w stanie podać kolejne bloki pliku i uzyskać fizyczne numery bloków.źródło
Pytanie jest dość stare, ale istnieje inna odpowiedź, która może być przydatna dla osób, które znajdą to w Google:
filefrag
(w Debianie jest w pakieciee2fsprogs
).Ma tę zaletę, że działa również na innych systemach plików (użyłem go do UDF), które nie wydają się być obsługiwane przez inne narzędzia tutaj opisane.
Przesunięcie przedstawione na wyjściu ma być wielokrotnością rozmiaru bloku zapisanego w drugim wierszu (tutaj 4096). Uwaga: przesunięcia logiczne mogą nie być ciągłe, ponieważ w pliku mogą znajdować się dziury (jeśli są obsługiwane przez system plików).
źródło