1

При дублировании файла (например, копирование-вставка в ОС или в python) изображение представляет собой все необработанные данные, считанные с SSD и переданные через CPU, а затем обратно на SSD, или только некоторые метаданные, считанные для процессор и остальное обрабатываются локальным контроллером SSD? Существуют ли твердотельные накопители, способные к локальному копированию и вставке, то есть сохраняющие исходные данные, не покидающие твердотельный накопитель?

Например, следующий код Python:

from shutil import copyfile

src = "src.JPG"
dst = "dst.JPG"
copyfile(src, dst)

Я хотел бы снизить энергопотребление при миграции данных и использовать высокую внутреннюю пропускную способность SSD ...

2 ответа2

4

Твердотельные накопители не могут этого сделать - по крайней мере, с текущей прошивкой и не с текущими ОС.

В SSD реализован тот же набор команд (с некоторыми дополнениями, как TRIM), что и в традиционных жестких дисках SATA. Просто нет команды, которую можно отправить на диск для "копирования содержимого блока x в блок y".

Есть команды для чтения с диска, т.е. копирования содержимого указанных блоков на диске в системную память. И есть команды для записи, т.е. копирования из оперативной памяти системы в указанные блоки на диске. И есть много других команд, которые не являются командами чтения или записи. Но нет никаких команд "копировать внутри диска".

Итак, диск просто не "знает", как это сделать.

Команда "copy" может быть реализована в прошивке привода. Но работа не будет выполнена там. Разработчики ОС должны будут модифицировать файловую систему и драйверы различных ОС, чтобы поддерживать ее, и должны будут предоставить API для нее. И утилиты управления файлами каждой ОС должны быть изменены, чтобы использовать его. Но сегодня, поскольку никакие SSD (или жесткие диски) не реализуют встроенную команду "копирования", операционные системы также не поддерживают такую вещь.

Я знаю, что вы спрашивали о файлах, но диски ничего не знают о файлах. Или каталоги ("папки"), или даже разделы в этом отношении. Файловая система ОС и другие драйверы реализуют все это. Команды чтения и записи, отправляемые на накопитель, всегда работают с учетом номеров блоков. Драйвер файловой системы ОС знает, какие блоки составляют каждый файл. Для этого вопроса, однако, это не имеет значения. Диски не реализуют какую- либо функцию "копирования", будь то с точки зрения блоков или файлов.

Кстати, если вам интересно , о том , что в наборе команд ATA можно найти в свободном доступе и относительно последней версии спецификации здесь.

0

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

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

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

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