Мои сайты
Частые вопросы
Полезные ссылки
Операционные системы
Программное обеспечение
Оборудование
СУБД
Кулинария
У вас есть NVMe SSD с файловой системой XFS.
Понять почему на NVMe SSD с файловой системой XFS даже огромные файлы копируются практически мгновенно.
Это одно из самых впечатляющих преимуществ современного SSD + XFS. То, что вы видите «мгновенное» копирование, на самом деле — не совсем копирование в традиционном смысле. Это комбинация нескольких передовых технологий.
Давайте разберем по пунктам, почему это происходит.
Это самая важная часть ответа. Файловая система XFS (начиная с ядра Linux ~4.9) поддерживает reflink.
Обычное копирование (без reflink): когда вы копируете файл, система читает все данные исходного файла с диска, помещает их в оперативную память, а затем записывает новую копию этих данных на новое место на диске. Это долго, особенно для больших файлов.
Копирование с reflink: система не трогает сами данные. Она просто создает новую запись в файловой системе (метаданные), которая указывает на те же самые блоки данных на диске, что и исходный файл. Процесс занимает миллисекунды, так как копируются только метаданные (информация о файле), а не гигабайты самих данных.
Простая аналогия:
Без Reflink: у вас есть книга. Чтобы сделать копию, вы переписываете ее от руки (долго и требует ресурсов).
С Reflink: у вас есть книга в библиотеке. Вы просто вносите две разные карточки в каталог, которые указывают на одну и ту же книгу. Книга осталась в единственном экземпляре, но по каталогу ее можно найти под двумя разными именами.
Что происходит при изменении? Магия в том, что если вы теперь измените копию, система с помощью механизма «Copy-on-Write» (CoW) скопирует только те блоки, которые вы меняете, и перенаправит вашу копию на новые блоки. Исходный файл останется нетронутым. Это быстро и эффективно.
Даже если reflink по какой-то причине не сработал (например, вы копируете между разными файловыми системами), комбинация XFS и быстрого NVMe-диска все равно будет ощущаться очень быстро.
XFS была разработана для высокопроизводительных систем и исключительно быстро работает с метаданными (операции создания файлов, каталогов, поиск и т.д.). Процесс начала копирования, выделения места под файл и обновления каталогов — мгновенен.
NVMe SSD, который работает через шину PCIe, обладает чудовищной скоростью как чтения/записи (последовательной и случайной), так и чрезвычайно низкой задержкой (latency). Операция, которая на HDD занимала бы секунды (поиск блоков, запись), на NVMe занимает микросекунды.
Операционная система активно использует оперативную память для кэширования дисковых операций. Когда вы впервые прочитали исходный файл, его данные, скорее всего, остались в кэше в ОЗУ. При последующем копировании система может просто быстро скопировать данные из кэша ОЗУ, а не ждать медленного чтения с диска. Это, конечно, не так быстро как reflink, но на порядки быстрее, чем работа с диском напрямую.
В Linux есть утилита cp у которой есть ключ –reflink.
Принудительно использовать reflink, если возможно.
cp --reflink=always big_file.iso big_file_copy.iso
Использовать значение по умолчанию (скорее всего, так и так сработает в вашем случае)
cp --reflink=auto big_file.iso big_file_copy.iso
Принудительно отключить reflink и выполнить настоящее, «честное» копирование.
cp --reflink=never big_file.iso big_file_copy.iso
Попробуйте скопировать один и тот же файл с --reflink=always и –reflink=never — вы сразу почувствуете колоссальную разницу.
«Мгновенное» копирование больших файлов на вашем M.2 NVMe SSD с XFS — это в большинстве случаев не копирование данных, а создание новой ссылки на существующие данные с помощью технологии reflink. Даже если reflink не используется, феноменальная скорость самого накопителя и оптимизация файловой системы XFS делают процесс копирования невероятно быстрым по сравнению с традиционными HDD.