Чому Linux копіює файли на 30 разів швидше, ніж Windows 10?


20

У мене вийшло 20,3 гіга файлів і папок загальною вагою 100 к + елементів. Я копіював усі ці файли в одному каталозі з Windows 10, і це забрало у мене копітких 3 годин копіювання. Зроблено.

Днями я завантажився в Linux Fedora 24, перезапустив ту саму папку і бам! На це мені знадобилося всього 5 хвилин, щоб копіювати його в тому ж місці, але в різних каталогах.

Чому Linux настільки швидкий? А Windows кропітка повільність?

Тут є подібне питання

Чи алгоритм копіювання файлів (Ubuntu) Linux кращий, ніж Windows 7?

Але прийнятої відповіді зовсім бракує.


Ви не використовуєте "Windows" або "Linux" для копіювання файлів, ви використовуєте певну програму, що працює в кожній з цих операційних систем. Програми сильно різняться між методами, якими вони користуються, та компромісами, які вони здійснюють. Які ви використовували? І як?
kreemoweet

5
@kreemoweet: Так і операційні системи - Відомо, що NTFS Windows дуже погано справляється з великою кількістю невеликих файлів, порівняно з більшістю інших файлових систем.
користувач1686

2
І приємне голосування від вентилятора Windows. Розумієте, копіювання файлів, хоч і просте, має багато застосувань, починаючи від резервного копіювання даних у ділових ситуаціях і закінчуючи науковими дослідженнями. Наприклад, у ЦЕРН є петабайти даних, з якими можна обробити, повільне копіювання було б неприйнятним.
Джонс Г

З цього ж посилання - перевірте другу відповідь знизу. Linux зберігає всі файли в доступній оперативній пам’яті і записує на диск, коли вони можуть - отже, чому вона виглядає швидше (як це потрібно читати лише зараз, і писати, коли вони можуть).
Дарій

Файлові системи @DominicGuana виконують свою частину (ext3 / ext4 може виділяти шматки 100Mb одночасно). Чи вважали ви, що антивірус під Windows також може грати (уповільнює) роль? До речі, для подібних проблем із потоком збору даних SLAC (після тригера 1-го рівня було занадто багато даних) ми навчились писати на жорсткому диску паралельно ...
Hastur

Відповіді:


25

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

Ідучи назад, NTFSде-факто для Windows був деякий час, тоді як де-факто для основних варіантів Linux є extфайлова система. Сама файлова система NTFS не змінилася після Windows XP (2001), багато функцій, які існують (наприклад, скорочення / загоєння розділів, транзакційний NTFS тощо) - це особливості ОС (Windows Vista / 7/8/10) а не сам NTFS. У extфайловій системі був останній головний стабільний випуск ( ext4) у 2008 році. Оскільки сама файлова система визначає, як і де доступ до файлів, якщо ви користуєтесь ext4, є ймовірний шанс, що ви помітите поліпшення швидкості роботи над NTFS; зауважте, але якщо ви використовували, ext2ви можете помітити, що вона порівнянна за швидкістю.

Можливо, одна секція відформатована меншими фрагментами, ніж інша. За замовчуванням для більшості систем розмір кластера 4096 byte 1 , 2 , але якщо ви відформатували свій ext4розділ на щось на зразок 16k 3, то кожне зчитування в ext4системі отримало б 4-х дані проти системи NTFS (це може означати, що файли в 4 рази залежно від того, що зберігається де / як і як великі тощо). Фрагментація файлів також може грати роль у швидкості. NTFS обробляє фрагментацію файлів дуже інакше, ніж extфайлова система, і зі 100k + файлами є хороший шанс, що є якась фрагментація.

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

Наприклад, скопіюйте багато файлів на USB-накопичувач у форматі FAT в Windows та Linux. У Windows це може зайняти 10 хвилин, а в Linux - 10 секунд; одразу після того, як ви скопіювали файли, обережно вийміть диск, вийнявши його. У Windows він буде негайно викинутий із системи, і, таким чином, ви зможете вийняти накопичувач із порту USB, тоді як в Linux це може зайняти 10 хвилин, перш ніж ви зможете фактично вийняти диск; це через кешування (тобто Linux записує файли в оперативну пам’ять, потім записує їх на диск у фоновому режимі, тоді як система, що не має кешу, записувала файли відразу на диск).

Останнє - це інтерфейс користувача (графічна частина, з якою користувач взаємодіє). Користувальницький інтерфейс може бути гарним вікном із крутими графіками та хорошими барами, які дають мені загальне уявлення про те, скільки файлів копіюється та наскільки це велике і скільки часу це може зайняти; інтерфейс користувача також може бути консоллю, яка не друкує будь-яку інформацію, за винятком випадків, коли це зроблено. Якщо інтерфейс повинен спочатку пройти кожну папку та файл, щоб визначити, скільки файлів є, а також наскільки вони великі та дати приблизну оцінку, перш ніж вона дійсно може розпочати копіювання, процес копіювання може зайняти більше часу через необхідний інтерфейс користувача зробити це. Знову ж таки, це вірно незалежно від ОС.

Ви можете налаштувати деякі речі на рівні (наприклад, кешування диска чи розмір кластера), але реально кажучи, це просто зводиться до того, як всі частини з’єднуються, щоб система працювала, а точніше, наскільки часто ці фрагменти коду насправді оновлюються. ОС Windows пройшла довгий шлях від Windows XP, але дискова підсистема - це область, яка протягом багатьох років не бачила багато TLC в ОС у всіх версіях (порівняно з екосистемою Linux, яка, здається, бачить нові FS або покращення досить часто).

Сподіваюсь, що додасть ясності.


Жахлива відповідь, на мою думку, і проголосував. Ви вносите відмінності там, де їх немає. Ніхто не запитував, як виконуються диски з різним розподілом. Звичайно, питання спирається на застереження "всі інші рівні". Я можу вибрати fs для 8 nvme raid0 будь-яким способом, коли я бажаю зі швидкістю читання, що перевищує 16 гігабайт в секунду, і все ж копія файлів Windows досягає 1,4-1,5 гігабайта в будь-який час, весь час. Не має нічого спільного з кешуванням, fs, розділами, але більше з обмеженнями ОС Windows.
Маттіас Вовк

@Matt, у якій файловій системі ви форматуєте згаданий масив RAID? Якщо це NTFS, це може пояснити уповільнення .. але якщо у вас є додаткова інформація, ви можете додати відповідну відповідь, особливо якщо у вас є будь-який вихідний код (а не збірник) до основної ОС Windows прямо пояснити, чому відбувається сповільнене сповільнення (я для когось особливо це зацікавив би!).
txtechhelp

Я використовую ntfs, який кращий варіант є як fs на сервері Windows?
Маттіас Вовк

Я зв’язався з MSFT і провів багато дискусій і спробував багато речей протягом багатьох років, і ніколи не домігся перевищення 1,5 Гб / секунду, незважаючи на те, що 100Gb nics на кожній машині та весь інший трафік за інструментами для профілювання Mellanox показують, що з'єднання працюють чудово Пропускна здатність 94-95 Гбіт / сек. Ніяких уповільнень між машинами Linux, але як тільки задіяна машина з ОС Windows, я бачу ці вузькі місця
Маттіас Вольф

Я говорю про передачу одного файлу, всі одинарні потоки. Немає жодного вузького вузького місця, його суто ОС.
Маттіас Вовк
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.