16

Я получил 20,3 гигабайта файлов и папок на общую сумму более 100 тысяч. Я скопировал все эти файлы в один каталог из Windows 10, и мне потребовались мучительные 3 часа копирования. Готово.

На днях я загрузился в Linux Fedora 24, заново скопировал ту же папку и bam! Мне потребовалось всего 5 минут, чтобы скопировать его в том же месте, но в другом каталоге.

Почему Linux так быстр? А винда кропотливо медленная?

Здесь есть похожий вопрос

Является ли (Ubuntu) алгоритм копирования файлов Linux лучше, чем Windows 7?

Но принятого ответа совершенно не хватает.

1 ответ1

20

Его основы разбиты на несколько ключевых компонентов всей системы: элемент пользовательского интерфейса (графическая часть), само ядро (что говорит с аппаратным обеспечением) и формат, в котором хранятся данные (то есть файловая система). ).

Возвращаясь назад, 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 , и с файлами размером более 100 тыс. Существует большая вероятность фрагментации.

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

Например, скопируйте много файлов на USB-диск в формате FAT в Windows и Linux. В Windows это может занять 10 минут, в то время как в Linux это займет 10 секунд; сразу после того, как вы скопировали файлы, безопасно извлеките диск, извлекая его. В Windows он будет немедленно извлечен из системы, и, таким образом, вы сможете извлечь диск из USB-порта, в то время как в Linux может потребоваться 10 минут, прежде чем вы действительно сможете извлечь диск; это происходит из-за кеширования (то есть Linux записывает файлы в ОЗУ, а затем записывает их на диск в фоновом режиме, в то время как Windows без кеша записывает файлы сразу на диск).

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

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

Надеюсь, что это добавляет ясности.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .