Kopiowanie sekwencji plików, które mają być fizycznie umieszczone kolejno na dysku twardym

1

Mam sekwencję plików obrazów, które muszą być odczytywane tak szybko, jak to możliwe, dopóki są naprawdę wideo podzielone na ramki. Tak więc, gdy sekwencja obrazów nie jest zapisywana kolejno na dysku twardym, wydajność jest niska, ponieważ ramię dysku nieustannie przesuwa głowicę szukając każdego pliku. Muszę wiedzieć, jak zmusić pliki do pisania w odpowiedniej kolejności fizycznie na dysku twardym podczas kopiowania. Potrzebne są procedury OSX, Linux i Windows. Dzięki.

Abraham
źródło
Czy twoje oprogramowanie wymaga pojedynczych plików, czy może poradzić sobie z pojedynczym plikiem „archiwum” (np. Tar lub nieskompresowany plik ZIP)?
grawity
musi skopiować każdy plik do nowszej lokalizacji, tak jak był pierwotnie. Muszę zamówić pliki na dysku, nie, aby je skompresować.
Abraham
Użyj karty pamięci SSD / flash, aby rozwiązać problem. Również systemy plików AFAIK Linux starają się zachować pojedynczy plik przylegające, aby można było umieścić wszystkie swoje obrazy w pliku archiwum, a następnie zamontować archiwum za pomocą narzędzie do archiwizacji .
xenoid
Nie wybór. Nie mogę zmienić mojego sprzętu ani mojego systemu plików. Potrzebne jest tylko odpowiednie narzędzie do zmiany kolejności pozycji plików na dysku twardym.
Abraham
1
@dirkt oznaczało kilka plików graficznych, takich jak pliki tiff, dpx, tga. Wszystkie one są częścią filmu i stają się sekwencją, więc najlepiej umieścić je jeden po drugim na dysku twardym, więc nie byłyby to czasy wyszukiwania, które powodują opóźnienie i utratę wydajności.
Abraham

Odpowiedzi:

2

The kontig narzędzie z Sysinternals jest specjalnie zaprojektowany, aby zrobić to dla jednego pliku na raz w systemach Windows z pamięcią HDD. Brak odpowiednika kontig znaleziono dla MacOS lub Linux.

Jeśli jednak korzystasz z dysku SSD, pamiętaj, że dane są przechowywane w komórkach dysku SSD wszędzie tam, gdzie zdecyduje się je umieścić jego oprogramowanie układowe, więc każda korzyść z pliku zapisanego w sposób ciągły zgodnie z NTFS może zostać zanegowana.

K7AAY
źródło
Narzędzie contig z sysinternals nie jest do tego przeznaczone. Defragmentuje tylko pojedyncze pliki. Nie porządkuje sekwencyjnie plików na dysku twardym. Przy okazji, myślę, że wyjaśniłem, że nie jest to dysk SSD. Jak już pisałem, jest to dysk twardy (nie dysk SSD) i powiedziałem, że ramię porusza się bez przerwy głową. SSD nie ma ramion ani głów. I proszę, nie próbuj edytować mojego posta, dopóki nie stracił oryginalnego znaczenia i musiałem się wycofać.
Abraham
0

Nie sądzę, żebyś mógł naprawdę na to odpowiedzieć, szczególnie dla Linuksa, Windowsa i Maca. Bo:

  • Każdy inny system plików może umieszczać pliki w innym miejscu na dysku. Spróbuj utworzyć system plików ext3 / 4 i przyjrzyj się, gdzie łatwo zidentyfikować plik (zawierający na przykład wszystkie) a kończy się - prawdopodobnie zostanie zapisany w „paskach” na urządzeniu.
  • Każdy inny dysk twardy może mieć nieznaną liczbę talerzy i amp; głowy i nieznany sposób mapowania na sektory
  • System operacyjny lub dysk twardy może spokojnie „przemapować” sektory do innej lokalizacji na dysku

Generalnie brzmi to tak, jakbyś chciał po prostu uniknąć fragmentacji plików, i możesz to zrobić, gdy system plików jest pusty (lub prawie pusty) podczas zapisywania plików.


Jeśli chcesz po prostu napisać jeden konkretny plik za drugim, w dowolnej kolejności (ale system operacyjny nadal ostatecznie zdecyduje, gdzie umieścić je na dysku), możesz użyć pętli podobnej (na przykład w systemie Linux)

while read filename
cp filename destination
sync
done

Lub mieć dd pomiń pamięć podręczną bufora i wykonaj także synchronizację:

dd if=filename of=destination/filename oflags=direct,sync
Xen2050
źródło
Teraz, gdy istnieją rozwiązania komercyjne, które to umożliwiają, można sprawdzić narzędzie Data Mover firmy Brisght Technologies. Myślę, że systemy rezerwują miejsce na dysku wcześniej, aby zapisać wszystkie informacje. Nie pytam o rozwiązanie dla całego systemu operacyjnego, ale dla każdego. Wiem, że zależy to od systemów plików i systemu operacyjnego. Dzwoni dzwonek, który rsync może zrobić coś takiego, ale nie jestem pewien.
Abraham
Przenoszenie danych nie brzmi jak montowanie woluminów bezpośrednio i robi swoje własne zapisy sektorowe, więc musi wybierać, które pliki napisać najpierw i pozwalając systemowi operacyjnemu na regularne pisanie. Niektóre funkcje obsługują to: „rozpoznaje sekwencje i pozwala zarządzać sekwencjami opartymi na plikach tak, jakby były pojedynczym plikiem. W ten sposób DataMover aktywnie zapobiega fragmentarycznemu, losowemu i przeplatanemu układowi plików na początku” i po prostu próbuję pisać jeden plik na raz „Dostosuj liczbę wątków kopiowania i buforów kopiowania zgodnie z potrzebami. Zarządzanie sekwencjami zapewnia optymalne wyrównanie wszystkich plików”
Xen2050
Myślę, że źle zrozumiałeś. To oprogramowanie jest zaprojektowane w celu uniknięcia fragmentacji sekwencji plików (i oczywiście fragmentacji plików).
Abraham
Ale system operacyjny zapisuje pliki, program nie może powiedzieć systemowi operacyjnemu, gdzie dokładnie zapisywać pliki, tylko który plik napisać dalej. Bright Technologies może robić trochę kreatywnego pisania w swoim marketingu ;-)
Xen2050
Sprawdź koncepcje Direct IO, man. Będziesz zaskoczony: „Bezpośrednie we / wy to funkcja systemu plików, w której odczyt i zapis plików odbywa się bezpośrednio z aplikacji do urządzenia pamięci masowej, z pominięciem pamięci podręcznych odczytu i zapisu systemu operacyjnego. Bezpośrednie we / wy są używane tylko przez aplikacje (takie jak bazy danych), które zarządzają własnymi pamięciami podręcznymi. ”
Abraham