Уникнення крайньої фрагментації зображень стислих систем на NTFS


8

Пояснення проблеми

Я зберігаю зображення диска Windows, створені за допомогою wbadmin на диску NTFS, і я виявив, що стиснення потім за допомогою стиснення NTFS дає 1,5-2 × економію місця, все ще надаючи повну доступність для відновлення.

Але в процесі стискання файл отримує шалено фрагментовані, як правило, вище 100 000 фрагментів для зображення системного диска.

При такій фрагментації дефрагментація займає дуже багато часу (кілька годин на зображення). Деякі дефрагментатори навіть не впораються з цим, вони просто пропускають файл або виходять з ладу.

Джерело проблеми - я думаю, що файл стискається шматками, які зберігаються окремо.

Питання

Чи є хороший (швидкий) спосіб дефрагментації файлу зображення, але він зберігає його стисненим (або стискає його, не викликаючи крайньої фрагментації)? Чи може бути якась утиліта для швидкого дефрагментації файлу до безперервного вільного простору, або якась утиліта (або метод) для створення не фрагментованого стисненого файлу з існуючих нестиснених?

Зауваження на основі коментарів / відповідей:

  1. Зовнішні (для ядра Windows) засоби стиснення в моєму випадку не є варіантом. Вони не можуть розпаковувати файл на ходу (для розпакування файлу 10 Gb мені потрібно 10 Gb безкоштовно, що не завжди є під рукою; також це займає багато часу); вони не доступні, коли система завантажується з DVD для відновлення (саме тоді, коли мені потрібно зображення, доступне). Будь ласка, припиніть їх пропонувати, якщо вони не створять прозоро стислий файл на ntfs, наприклад compact.exe.
  2. Стиснення NTFS не так вже й погано для системних зображень. Це досить добре, окрім фрагментації. І декомпресія не займає багато часу в процесорі, все-таки зменшуючи вузьке місце IO, що забезпечує підвищення продуктивності у відповідних випадках (не фрагментований стислий файл із значним співвідношенням).
  3. Файли дефрагментації утилітів дефрагментації без будь-якого врахування, якщо вони стиснуті. Єдина проблема - це кількість фрагментів, що призводить до відмови дефрагментації незалежно від того, стиснений фрагментарний файл чи ні. Якщо кількість фрагментів не велика (близько 10000 вже нормально), стиснутий файл буде дефрагментований і залишатиметься стиснутим та неушкодженим.
  4. Коефіцієнт стиснення NTFS може бути хорошим, залежно від файлів. Системні зображення зазвичай стискаються щонайменше до 70% від їх початкового розміру.

    Пара скріншотів для тих, хто не вірить, але часто можна зробити власні тести.

  5. Я фактично робив реставрації із зображень, стиснених NTFS, як фрагментованих, так і не фрагментованих. Це працює, будь ласка, будь ласка, довіряй мені, або просто перевіриш сам. Примітка: як я виявив близько року тому, він не працює в Windows 8.1. Підвіконня працює в Windows 7, 8 і 10.

Очікувана відповідь:

метод роботи або програма для Windows:

  1. стиснути файл (із стисненням NTFS і тримати його доступним для відновлення Windows), не створюючи безліч фрагментів (можливо, до іншого розділу або зробити стиснуту копію; він повинен бути принаймні 3 рази швидшим на жорсткому диску, ніж compact+ defrag),

    або

  2. швидко (щонайменше, у 3 рази швидше, ніж дефрагментувати Windows на жорсткому диску), дефрагментація руйнівно фрагментованого файлу, наприклад, такого, який містить 100K + фрагменти (він повинен залишатися стиснутим після дефрагментації).


Мені здається, що NTFS дуже дивно стискає стільки (оскільки реальні тести показують лише зменшення на 2–5%). Також NTFS має деякі гарантії щодо фрагментації файлів (наприклад, ведення журналів). Наскільки великі файли (до і після)? Також із зображення здається, що Defraggler не може дефрагментацію стислих файлів.
Докторо Рейхард

1
1. Ви можете зробити зображення Windows самостійно і стиснути його. Це дійсно легко стискається щонайменше 1,5х (60-70% або оригінальний розмір). 2. Так, Defraggler та інші дефрагментатори МОЖЕ дефрагментувати стислі файли. Це досвід у реальному світі.
LogicDaemon

Крім того, коефіцієнт стиснення є поза темою, але ось реальні зображення реальних свіжого встановлених систем Windows 7 Professional (в основному 32-розрядні, 3 або 4 64-розрядні) із стандартним набором програмного забезпечення: i.imgur.com/C4XnUUl .png
LogicDaemon

@DoktoroReichard це залежить від вмісту файлів. Текстові файли та розріджені файли матимуть дуже хороший коефіцієнт стиснення. Зазвичай я уникаю файлів, які вже стискаються, як поштові файли, зображення, аудіо / відео файли ... і після стиснення я часто
виявляю

Відповіді:


4

Уникнення роздробленості

Секрет у тому, щоб не писати на диск нестиснені файли для початку.

Дійсно, після стиснення вже наявного великого файлу він стане жахливо фрагментованим через характер алгоритму стиснення NTFS на місці.

Натомість цього недоліку можна взагалі уникнути, змусивши ОС стиснути вміст файлу на льоту, перед тим як записати його на диск. Таким чином стислі файли будуть записуватися на диск як і будь-які звичайні файли - без ненавмисних прогалин. Для цього вам потрібно створити стиснуту папку. (Так само, як ви позначаєте файли для стиснення, ви можете позначати папки, які будуть стискатися.) Після цього всі файли, записані в цю папку, будуть стискатись на льоту (тобто записуватися як потоки стислих блоків). Файли, стиснуті таким чином, все ще можуть бути дещо фрагментарними, але це буде далеко від того безладу, який створюється на місці стиснення NTFS.

Приклад

Система NTFS стисла 232 Мб системного зображення до 125 Мб:

  • Стиснення на місці створило колосальних 2680 фрагментів!
  • Стиснення під час польоту створило 19 фрагментів.

Дефрагментація

Це правда, що стиснуті файли NTFS можуть створювати проблеми для деяких інструментів дефрагментації. Наприклад, інструмент, яким я зазвичай користуюся, не може ефективно поводитися з ними - він сповільнюється до сканування. Не шкода , старий надійний Contig від Sysinternals виконує завдання дефрагментації стислих файлів NTFS швидко та без особливих зусиль!


2

Читання статті у Вікіпедії про стиснення NTFS :

Файли стискаються в 16-кластерних кусках. За допомогою кластерів 4 кБ файли стискаються в 64 кБ. Якщо стиснення зменшує 64 кБ даних до 60 кБ або менше, NTFS розглядає непотрібні 4 кБ сторінки як порожні розріджені кластерні файли - вони не записуються.

Це дозволяє сприймати довільний час з випадковим доступом - ОС просто повинна слідувати ланцюжкам фрагментів.

Однак великі файли, що стискаються, стають дуже фрагментарними, оскільки кожен фрагмент <64 КБ стає фрагментом.

Насамперед. WBAdmin по суті є утилітою резервного копіювання, яка відновлює повну систему. Отже, очікується, що вихідний файл великий (> 4 Gb). Як показує цитата, великі файли швидко фрагментуються. Це пов'язано з тим, як NTFS стискає: не за файлами, а за секторами.

Доброю аналогією є розбиття торта на кілька коробок, деякі з яких не порожні. Це початковий файл. Компресійна частина видавлює шматки пирога, залишаючи пробіл у коробках. Оскільки шматочки торта не є разом, через створений простір шматочки, що складають торт, розсипаються.

Я все ще скептично ставлюсь до того, що NTFS видає такий коефіцієнт стиснення. Відповідно до тесту, зробленого MaximumCompression на декількох файлах, NTFS отримує найнижчу оцінку за коефіцієнтом стиснення, низькі 40%. З особистого досвіду можу сказати, що він набагато нижчий за це, насправді настільки низький, що я ніколи не переймався його використанням і не бачив його ефектів.

Найкращий спосіб уникнути фрагментації - перестати покладатися на NTFS. Більшість дефрагерів не зможуть розгорнути або перемістити стиснуті файли. Якби це було так, NTFS не міг би розширити файли, або якщо він міг би, оскільки процес дефрагментації заповнив простір, що залишився від стиснення (4 кБ), розширення би фрагментувало файли, оскільки файл не буде записуватись у попередні кластери.

Це говориться, і якщо вам не потрібно постійно читати файл, використовуйте деякі формати, рекомендовані у вищенаведеному посиланні. 7z і rar досить ефективні (тобто вони стискаються з високим співвідношенням у пристойний час). Якщо ви дбаєте про простір, а не про час, то виберіть алгоритм типу PAQ (хоча ви витратите дуже довго на стискання та розпакування файлів). Також доступні швидкі алгоритми.

Якщо вам потрібно читати файл постійно, не стискайте його взагалі. NTFS просто занадто безладний.


Це джерело (посилання на Wikipdia) фактично містить хорошу, хоча і технічну, інформацію про весь процес.
Докторо Рейхард

Коефіцієнт стиснення є поза темою, але ось реальні зображення реальних свіжих систем Windows 7 Professional (в основному 32-розрядні, 3 або 4 64-бітні системи) зі стандартним набором програмного забезпечення: i.imgur.com/C4XnUUl.png За допомогою стиснення я дійсно заощаджую простір на диску. І я можу дефрагментувати файли згодом, але це займає занадто багато часу.
LogicDaemon

А щодо "уникання" стиснення NTFS: я роблю це роками, і це працює майже бездоганно, за винятком фрагментації. Він дійсно не повинен використовуватися для часто доступних файлів через проблеми з продуктивністю, але більшість виконуваних файлів та текст стискаються дуже добре. Крім того, послідовно записані файли, як-от журнали, не фрагментуються, тому що все ще стискаються. І, звичайно, стислі зображення системи є ідеально відновлюваними, що робиться багато разів, і вам не потрібно явно "розширювати" їх, очевидно, це робиться автоматично за допомогою блоку в пам'яті драйвера NTFS.
LogicDaemon

1
Я не можу насправді сперечатися з результатами (і для запису я заявив фактичні результати тесту, які були подібні до ваших, і мій особистий досвід, який, здається, датується). Посилання, яке я дав у коментарі, містить інформацію про те, чому неможливо уникнути проблеми з фрагментацією. Також у статті Вікіпедії зазначено, що під час завантаження Windows ще не завантажила бібліотеку стиснення для NTFS, не впевнена також у процесі відновлення. Це може дати зрозуміти.
Докторо Рейхард

Дякую тоді, але це не відповідь, яку я хотів отримати :) Я сподівався, що знайдеться спосіб отримати стислий, але не фрагментований файл, записавши його послідовно або за блоками розміром, такий же, як фрагмент стиснення. Або є дійсно ефективна програма дефрагментації, яка може швидко дефрагментувати окремі файли, коли для цього достатньо постійного вільного місця.
LogicDaemon

0

Незважаючи на те, що ОП запитав, я мав хороший досвід роботи зі стороннім програмним забезпеченням на ім’я Paragon. NTFS за визначенням щось жахливо руйнує вашу файлову систему, коли ви стискаєте (а іноді навіть записуєте) файли. Це поширюється на споживання декількох записів MFT, і ... Це погано. Microsoft драйвер NTFS навіть не очищає це, коли файл дефрагментується. Отже, необхідні інструменти сторонніх виробників. Paragon дозволяє або завантажити його як ОС у себе (образ ISO), або встановити в іншу ОС Windows з доступом до цільової файлової системи. Тоді ви можете дефрагментувати і MFT, і файли. Наскільки мені відомо, це єдиний спосіб виправити цей недолік у NTFS, не маючи переформатування обсягу.

(Я не маю жодного відношення до інструменту чи його творця, крім цього, це єдине, що я дійсно працював)

Сьогодні, через 2 роки після того, як це питання здавалося б, я рекомендую дедуплікацію - це може призвести до економії на 90% диска, якщо зображення просто "трохи" відрізняються. Нано-сервер W2016 всередині VM працює дуже добре, але я підозрюю, що навіть FreeNAS або що-небудь ще, що використовує ZFS, могли впоратися з цим.


будь-яка URL-адреса або більше прізвище, ніж просто "Парагон"? Google мене не розуміє. Я знаю програмну компанію з назвою Paragon, але нічого не знаю про її продукцію, яка дефрагментує файли NTFS (є інструмент дефрагментації MFT, але у мене немає проблем з MFT). І дякую за пропозицію ZFS, я вивчу це, але знову ж таки, мені це потрібно, щоб можна було завантажуватися в полі для швидкого відновлення на місці.
LogicDaemon

-1

Останнім часом Windows обробляє ZIP-файли як папки. ZIP-файли можуть бути більш стислі, ніж файли, стиснуті NTFS, і не є по суті їх фрагментованими, на відміну від NTFS.

Чому б не перевірити одне із зображень вашого диска, стиснувши 7-zip у форматі ZIP, і не переконатися, чи воно прямо придатне для відновлення?

Якщо ні, грайте з параметрами стиснення 7-zip, щоб максимально стиснути, використовуючи будь-який формат, найкращий, наприклад, 7z. Ви можете збільшити стиснення далеко за рамки NTFS і, отже, зробити набагато більше місця на вашому диску - хоча було б найшвидше декомпресувати на другий фізичний диск або ОЗУ, бажано на іншому контролері та IO-кабелі.

FWIW, стискання окупається для непісочних SSD-дисків для системних дисків та для немедіа-файлів - менше зносу на SSD, більше місця та швидше введення-виведення для нестиснених файлів. Див. Http://www.tomshardware.com/reviews/ssd-ntfs-compression,3073-9.html

Відео, графіка та інші стислі файли даних (наприклад, .XLSX) вже дуже стиснуті, тому ніякої користі для стиснення NTFS там немає. Ні для баз даних, ні пошти Outlook із випадковими оновленнями. Але виконувані файли, txt, html тощо, файли приносять велику користь.

Стиснення також є завжди виграшним для невеликих файлів, наприклад, якщо <64K стиснуто, лише один фрагмент. Тільки клопоту буде відновлення, якщо є проблеми з диском.


1
Людина, ти помиляєшся так багато способів ... Головним чином, Windows ніколи не обробляв ZIP-файли, як папки. Є технічні причини, чому це навіть не відбудеться (в основному, лише послідовний доступ до вмісту файлів). Провідник, хоча дозволяє керувати блискавками аналогічно папкам (але дуже обмеженим чином, він навіть не витягує інші файли, коли я відкриваю html з zip), це не Windows. І в питанні я пояснив, чому окремі утиліти, будь то Explorer чи 7-Zip, не підходять (див. "Зауваження на основі коментарів / відповідей")
LogicDaemon

btw, зверніть увагу на "менше зносу на SSD": якщо SSD не має достатньо великого кешу, це в 2 рази більше зносу. Тому що, зберігаючи стислий файл, Windows спочатку зберігає нестиснені кластери, потім стискає їх і зберігає стислі (потім видаляє нестиснені). Це те, що викликає фрагментацію, зрештою, мого питання. SSD-диски Samsung у посиланні (зламаний btw, видаліть "les" з хвоста) справді мають достатньо великий кеш.
LogicDaemon

ні, Windows ніколи не розглядає файли zip та cab як папки. Ви можете переглядати їх вміст (назви файлів / папок) безпосередньо на моєму комп’ютері, але ви не можете отримати доступ до них прозоро, як зображення диска або стислий файл NTFS. Ви все ще повинні витягнути файл в архіві, де його переглянути / відредагувати
phuclv
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.