Чому копіювання на мій USB-диск так повільно в Linux (і швидше в Windows)?
Кешування Причина 1. Файл може зробити запис з'являються повільніше або швидше
Проблема, яку я, мабуть, бачу в графічному інтерфейсі, полягає в тому, що панель прогресу йде до 90% майже миттєво, завершується до 100% трохи повільніше, а потім зависає там протягом 10 хвилин.
Одне, що вам потрібно зрозуміти, - це кешування файлів. Linux (і Windows) використовуватимуть в іншому випадку "порожню" оперативну пам'ять для кешування операцій читання / запису та прискорюють їх при наступних доступах. Кешування операцій копіювання на повільних пристроях призводить до поведінки, яку ви бачите - "швидке завершення" насправді записується в кеш, а потім він сповільнюється і припиняється, оскільки фактичне передавання даних у кеш (синхронізація) повільному пристрою займає дуже довго. Якщо ви перервали в цей момент, дані пошкоджуються (як ви зазначали), оскільки синхронізація ніколи не закінчувалася.
Таке копіювання в Windows може здаватися швидшим (включаючи повідомлені швидкості МБ / сек), оскільки іноді Windows не чекатиме синхронізації, і оголошує завдання виконаним, як тільки дані записуються в кеш.
Причина 2. Запис багатьох файлів, особливо невеликих, відбувається повільно
Скопіювати 1,8 Гб
Через спосіб роботи флеш-пам’яті та файлових систем найшвидша пропускна здатність (швидкість) досягається при записі дуже великих файлів. Запис безлічі невеликих файлів або навіть змішаних даних, що містять ряд невеликих файлів, може значно уповільнити процес. Це впливає і на жорсткі диски, але дещо меншою мірою.
Причина 3. Швидкість запису на USB-накопичувач та SSD не можна порівняти
У мене супер сусідній порт 32 ГБ SSD, він працює з очікуваною швидкістю.
USB-накопичувач для садових сортів зазвичай складається з мікросхем флеш-пам’яті, які записуються послідовно (послідовно), і не має власного кешу.
SSD, з іншого боку, містить контролер, який записує в мікросхему флеш-пам'яті паралельно , збільшуючи пропускну здатність в два рази або більше через USB-накопичувач.
- Якщо на вашому SSD-диску 32 Гб був 4х 8 Гб мікросхем, він все одно був би в 4 рази швидшим, ніж USB-накопичувач при будь-якій операції запису.
- SSD також містить кеш оперативної пам’яті (як жорсткі диски), тому він може швидко зберігати вхідні дані в кеш-пам'ять і повідомляти ОС, що це зроблено, в той час як він все ще повинен насправді записати ці дані у флеш-пам’ять.
Таким чином, з одним великим файлом ваш 32 Гб ГБ зі структурою 4x, яку ми припускали, був би швидко на 4 рази; з багатьма невеликими файлами, це було б в 10 разів або більше, оскільки воно могло інтелектуально зберігати їх у своєму кеші.
Підводячи підсумок , це причини, через які копіювання файлів на USB-накопичувачі може виглядати повільніше в Linux. Це насправді повільніше через проблему з апаратним забезпеченням / драйвером чи що завгодно ....
Правильне порівняння швидкості запису між Linux та Windows
- Перш за все, забудьте про SSD через причину 3. Це як апельсини та яблука.
- Щоб заперечити наслідки причини 1 (кешування) та причини 2 (невеликі файли), вам потрібно протестувати один великий файл, більший за об'єм оперативної пам’яті в тестовій системі.
- У Linux ви можете створити його, завдяки
dd if=/dev/urandom of=largetest bs=1M count=7500
чому ви отримаєте тестовий файл 7500 Мб. Якщо припустити, що у вашій системі є менше 4 Гб оперативної пам’яті, це досить добре. Скопіюйте це на щойно відформатовану паличку Sandisk 8GB та вкажіть її.
- Перезавантажте в Windows і скопіюйте
largetest
з USB-накопичувача на ваш жорсткий диск. Перезавантажте знову (щоб видалити його з кеша). Потім відформатуйте USB-накопичувач (той же vfat / FAT32!) Та скопіюйте largetest
з жорсткого диска на накопичувач.
- Як порівнюються часи?
sync
і побачити, чи не прискорить процес. <- неперевірений, але можливий