Wyjaśnienie problemu
Przechowuję obrazy dysku systemu Windows utworzone za pomocą wbadmin na dysku NTFS, i stwierdziłem, że kompresja to kompresja NTFS daje 1,5-2 × oszczędność miejsca, wciąż dając pełną dostępność do przywracania.
Ale w trakcie kompresji plik jest niesamowicie pofragmentowany, zwykle ponad 100 000 fragmentów obrazu dysku systemowego.
Przy takiej fragmentacji defragmentacja trwa bardzo długo (wiele godzin na obraz). Niektóre defragmentatory nawet nie mogą sobie z tym poradzić, po prostu pomijają plik lub ulegają awarii.
Źródłem problemu jest, jak sądzę, ten plik skompresowany przez fragmenty, które są zapisywane osobno.
Pytanie
Czy istnieje dobry (szybki) sposób na defragmentację pliku obrazu przy jednoczesnym zachowaniu jego kompresji (lub kompresji bez powodowania ekstremalnej fragmentacji)? Czy może być jakieś narzędzie do szybkiej defragmentacji pliku do ciągłego wolnego miejsca lub jakieś narzędzie (lub metoda) do tworzenia niefragmentowanego skompresowanego pliku z istniejącego nieskompresowanego?
Uwagi oparte na komentarzach / odpowiedziach:
- Zewnętrzne (do jądra systemu Windows) narzędzia kompresji nie są w moim przypadku opcją. Nie mogą dekompresować pliku w locie (do dekompresji pliku 10 Gb potrzebuję 10 Gb za darmo, co nie zawsze jest pod ręką, a także zajmuje dużo czasu); nie są dostępne, gdy system jest uruchamiany z dysku DVD w celu odzyskania (dokładnie wtedy, gdy potrzebuję obrazu). Proszę, przestań je oferować, chyba że utworzą plik skompresowany transaprentowo na NTFS, takich jak
compact.exe
. - Kompresja NTFS nie jest taka zła dla obrazów systemowych. Jest raczej dobry z wyjątkiem fragmentacji. A dekompresja nie zajmuje dużo czasu procesora, nadal zmniejszając wąskie gardło We / Wy, co daje wzrost wydajności w odpowiednich przypadkach (niefragmentowany skompresowany plik ze znacznym współczynnikiem).
- Narzędzia do defragmentacji defragmentują pliki bez względu na to, czy są one skompresowane. Jedynym problemem jest liczba fragmentów, która powoduje niepowodzenie defragmentacji bez względu na to, czy fragmentowany plik jest skompresowany czy nie. Jeśli liczba fragmentów nie jest wysoka (około 10000 jest już w porządku), skompresowany plik zostanie zdefragmentowany i pozostanie skompresowany i nienaruszony.
Współczynnik kompresji NTFS może być dobry, w zależności od plików. Obrazy systemowe są zwykle kompresowane do najwyżej 70% ich pierwotnego rozmiaru.
Para zrzutów ekranu dla tych, którzy w to nie wierzą, ale oczywiście możesz wykonać własne testy.
Naprawdę zrobiłem odbudowę z obrazów skompresowanych NTFS, zarówno pofragmentowanych, jak i niefragmentowanych, działa, proszę, zaufaj mi lub po prostu sprawdź to sam. rem: jak odkryłem około rok temu, nie działa w systemie Windows 8.1. Parapet działa w systemie Windows 7, 8 i 10.
Oczekiwana odpowiedź:
działająca metoda lub program dla Windows do:
skompresuj plik (z kompresją NTFS i zachowaj go dostępnym do odzyskiwania systemu Windows) bez tworzenia wielu fragmentów (być może na innej partycji lub zrobienia skompresowanej kopii; musi być co najmniej 3 razy szybszy na HDD niż
compact
+defrag
),lub
szybko (co najmniej 3 razy szybciej niż Windows defragmentuje na HDD) defragmentacja niszcząco pofragmentowanego pliku, na przykład zawierającego 100K + fragmentów (po defragmentacji musi pozostać skompresowany).
źródło
Odpowiedzi:
Unikanie fragmentacji
Sekret polega na tym, aby na początku nie zapisywać nieskompresowanych plików na dysku.
Rzeczywiście, po skompresowaniu już istniejącego dużego pliku, zostanie on strasznie podzielony ze względu na naturę lokalnego algorytmu kompresji NTFS.
Zamiast tego można całkowicie uniknąć tej wady, zmuszając system operacyjny do kompresji zawartości pliku w locie, przed zapisaniem go na dysku. W ten sposób skompresowane pliki będą zapisywane na dysku jak zwykłe pliki - bez niezamierzonych przerw. W tym celu musisz utworzyć skompresowany folder. (W ten sam sposób, w jaki zaznaczasz pliki do skompresowania, możesz oznaczać foldery do skompresowania.) Następnie wszystkie pliki zapisane w tym folderze będą kompresowane w locie (tj. Zapisywane jako strumienie skompresowanych bloków). Pliki skompresowane w ten sposób mogą nadal być nieco pofragmentowane, ale będzie to dalekie od bałaganu, jaki powoduje kompresja NTFS w miejscu.
Przykład
Obraz systemu 232 skompresowany NTFS do 125 Mb:
Defragmentacja
Prawdą jest, że skompresowane pliki NTFS mogą stanowić problem dla niektórych narzędzi do defragmentacji. Na przykład narzędzie, którego zwykle używam, nie może skutecznie sobie z nimi poradzić - spowalnia do indeksowania. Nie martw się , stary sprawdzony Contig z Sysinternals wykonuje defragmentację skompresowanych plików NTFS szybko i bez wysiłku!
źródło
Czytanie artykułu w Wikipedii o kompresji NTFS :
Najpierw pierwsze. WBAdmin jest w istocie narzędziem do tworzenia kopii zapasowych, które przywraca pełny system za pomocą kamery. Oczekuje się, że plik wyjściowy jest duży (> 4 Gb). Jak pokazuje cytat, duże pliki szybko ulegają fragmentacji. Wynika to ze sposobu kompresji NTFS: nie według plików, ale według sektorów.
Dobrą analogią jest podzielenie ciasta na kilka pudeł, z których niektóre nie są puste. To jest plik początkowy. Część kompresyjna ściska kawałki ciasta, pozostawiając miejsce w pudełkach. Ponieważ kawałki ciasta nie są ze sobą połączone, ze względu na utworzoną przestrzeń, kawałki tworzące ciasto ulegają rozdrobnieniu.
Nadal jestem sceptycznie nastawiony do tego, że NTFS podaje taki rodzaj kompresji. Zgodnie z testem przeprowadzonym przez MaximumCompression na wielu plikach, NTFS uzyskuje najniższy wynik w stopniu kompresji, a mianowicie 40%. Z własnego doświadczenia mogę powiedzieć, że jest znacznie niższy, w rzeczywistości tak niski, że nigdy nie zadałem sobie trudu, aby go użyć, ani nie widziałem jego efektów.
Najlepszym sposobem uniknięcia fragmentacji jest przestanie polegać na NTFS. Większość defraggerów nie rozwinie lub nie przeniesie skompresowanych plików. Gdyby tak się stało, NTFS nie byłby w stanie rozwinąć plików lub gdyby mógł, ponieważ proces defragmentacji wypełniłby resztki miejsca po kompresji (4kB), rozszerzenie podzieliłoby pliki, ponieważ plik nie być zapisane w sąsiadujących ze sobą klastrach.
To powiedziawszy, a jeśli nie musisz stale czytać pliku, użyj niektórych formatów zalecanych w powyższym linku. 7z i rar są dość wydajne (tzn. Kompresują się w wysokich stosunkach w przyzwoitym czasie). Jeśli zależy Ci na przestrzeni, a nie na czasie, wybierz algorytm typu PAQ (chociaż będziesz bardzo długo kompresował i dekompresował pliki). Dostępne są również szybkie algorytmy.
Jeśli musisz stale czytać plik, nie kompresuj go wcale. NTFS jest po prostu zbyt niechlujny.
źródło
Chociaż nie do końca to, o co poprosił OP, miałem dobre doświadczenie z oprogramowaniem zewnętrznym o nazwie Paragon. NTFS z definicji niszczy twój system plików okropnie, gdy kompresujesz (a czasem nawet zapisujesz) pliki. Rozciąga się to na zużywanie wielu wpisów MFT i ... To źle. Sterownik NTFS Microsoftu nawet nie usuwa tego, gdy plik jest defragmentowany. Dlatego wymagane są narzędzia innych firm. Paragon pozwala uruchomić go jako system operacyjny sam w sobie (obraz ISO) lub zainstalować w innym systemie operacyjnym Windows z dostępem do docelowego systemu plików. Następnie możesz zdefragmentować zarówno plik MFT, jak i pliki. Według mojej wiedzy jest to jedyny sposób, aby naprawić ten brak w systemie plików NTFS, bez formatowania woluminu.
(Nie mam żadnego związku z narzędziem lub jego twórcą poza tym, że to jedyna rzecz, która faktycznie działała)
Dzisiaj, 2 lata po pozornym zadaniu pytania, wolę zalecić deduplikację - może to dać 90% oszczędności na dysku, jeśli obrazy są „trochę” inne. Serwer Nano W2016 wewnątrz maszyny wirtualnej działa naprawdę dobrze, ale podejrzewam, że nawet FreeNAS lub cokolwiek innego używającego ZFS mogłoby to obsłużyć.
źródło
Windows ostatnio traktuje pliki ZIP jak foldery. Pliki ZIP mogą być bardziej skompresowane niż pliki skompresowane NTFS i nie są z natury pofragmentowane, w przeciwieństwie do NTFS.
Dlaczego nie przetestować jednego z obrazów dysku przez kompresję za pomocą 7-zip w formacie ZIP i sprawdzić, czy można go bezpośrednio użyć do przywracania?
Jeśli nie, graj z parametrami kompresji 7-zip, aby zmaksymalizować kompresję przy użyciu najlepszego formatu, np. 7z. Możesz zwiększyć kompresję daleko poza NTFS, a tym samym udostępnić znacznie więcej miejsca na dysku - choć najszybszą dekompresją byłby drugi dysk fizyczny lub pamięć RAM, najlepiej na innym kablu kontrolera i IO.
FWIW, kompresja się opłaca w przypadku dysków SSD innych niż sandman dla dysków systemowych i plików niemedialnych - mniejsze zużycie dysku SSD, więcej miejsca i szybsze operacje we / wy dla plików nieskompresowanych. Zobacz http://www.tomshardware.com/reviews/ssd-ntfs-compression,3073-9.html
Pliki wideo, grafiki i inne skompresowane pliki danych (takie jak .XLSX) są już bardzo skompresowane, więc nie ma w tym żadnej korzyści z kompresji NTFS. Ani w bazach danych, ani w poczcie Outlook z losowymi aktualizacjami. Ale pliki wykonywalne, txt, html itp. Mają wiele zalet.
Kompresja jest również zawsze korzystna dla małych plików, np. Jeśli skompresowany <64 KB, tylko jeden fragment. Problemem byłoby odzyskiwanie tylko w przypadku problemów z dyskiem.
źródło