О блоге

Все новые материалы размещаются на Блогосайте alv.me. Старые - в процессе переноса.

07.09.2008

Fujitsu HandyDrive в Linux: парадоксы быстродействия

2004 г

Сразу должен предупредить - данная заметка содержит весьма тривиальное заключение о работе в Linux устройства, имя которого вынесено в подзаголовок. А именно: устройство это в Linux работает:-). Так что те, кому требуется лишь конечный вывод, дальше могут не читать. И еще: заметка была написана давно - летом 2004 года. И где-то заваляляась - или я ее куда-то посылал, и ответа не получил. А нынче вспомнил в связи с измерением быстродействия флешек - и решил разместить.

Возможно, по сему поводу не стоило бы и огород городить. Если бы не некоторое время назад не попалось мне на глаза сообщение о том, что приводы ZiV-типа (также с USB-интерфейсом) сертифицированы на совместимость с ASPLinux. Хотя, казалось бы, чего сертифицировать - USB-привод он и в ASPLinux'е USB-привод... И я подумал - а нет ли тут каких-нибудь подводных камней? А когда их не обнаружилось, дабы не было мучительно больно за..., ну, наверное, за несложившийся сюжет, подверг титульный дивайс всяким измерительным издевательствам. Которые принесли результат совершенно неожиданный...

Однако начну по порядку.

Зачем нужны мобильные накопители

За последние годы ноутбуки катастрофически приблизились к настольным машинам по своим возможностям. Они обзавелись 15- и более дюймовыми матрицами, процессорами, годными для почти любых реальных задач, объем памяти в них достиг практически разумного максимума, приводами DVD-CD/RW и даже DVD/RW. А изобилие портов USB 2 и Firewire позволяет подключать практически любую, в том числе и высокоскоростную, периферию.

Лишь в одном отношении ноутбуки продолжают радикально проигрывать десктопам (не считая цены, конечно) - в объеме винчестеров. Действительно, стандартные 40 и даже 80 ноутбучных гигабайт выглядят весьма бледно по сравнению со своеобычными для их настольных собратьев винтами в 120-160 Гбайт. Главное же - наращивание дискового пространства, столь легкое в десктопах, в ноутбуках выглядит несколько проблематично как с финансовой точки зрения (ноутбучные винчестеры при прочих равных вдвое дороже настольных), так и технически. Далеко не в каждый ноутбук можно вкрутить второй винчестер (и, как правило, вместо чего-то другого). Замена же имеющегося а) не всегда решает проблему дискового пространства (при нынешних объемах данных что 40 Гбайт, что 80 - разницы часто нет) и б) связано с весьма сложной процедурой переноса системы и данных.

И вот тут на помощь приходят разнообразные мобильные накопители, коих последнее время развелось, что собак нерезаных. Разумеется, всякого рода флэш-приводы и карточки, аналогичные используемым в цифровых камерах, ввиду своего малого объема и высокой удельной стоимости проблемы не решают. Но - свято место пусто не бывает, и вот кто-то (пикейные жилеты сказали бы, что этот кто-то - голова, не хуже Гувера с Гинденбургом) надоумился созданием внешних мобильных винчестеров, функционально аналогичных внутренним и не очень обременительным для пользовательского кармана.

Так что когда я волею судеб сменил свой громоздкий декстоп, забитый винчестерами (суммарным объемом более 200 Гбайт) по самые уши, на компактный ноутбук со скромным винтиком в 40 Гбайт, первой насущной проблемой стало расширение дискового пространства.

Какие они бывают

Принцип устройства мобильных винчестеров настолько прост, что остается только удивляться - почему до него никто не додумался ранее. Действительно, это - всего-навсего коробка (пластмассовая или металлическая), в которую вставляется самый обычный настольный винчестер - обычно ноутбучный, 2,5", хотя имеются и трехдюймовые решения.

Поскольку внутренность такой коробки снабжена обычным IDE-разъемом, не предусматривающим возможности внешнего подключения, она должна быть снабжена интерфейсом, таковое допускающим - ATA -> USB или ATA -> Firewire. Не худо также озаботиться электропитанием винчестера, хотя в случае подключения к USB-шине последняя способна справиться со снабжением энергией самостоятельно.

Мобильные накопители предлагаются в продаже в двух вариантах - как голые коробки, которые пользователь должен комплектовать винчестером самостоятельно, как готовые решения, с уже подобранным накопителем. Чем обуславливается более высокая суммарно цена последних. Хотя, как будет показано в дальнейшем, это не лишено оснований.

Для меня в силу ряда причин (в частности, отсутствия требования собственно мобильности) наибольший интерес представляли решения на базе настольних трехдюймовых винчестеров. Однако в пределах досягаемости таковых не обнаружилось (и, честно говоря, я уже не помнил, где мне попадались их описания). Так что пришлось заняться изучением двухдюймовых конструкций - благо, только что они были очень подробно описаны в специальном обзоре.

Правда, сведения из этого обзора (очень информативного) практически помогли мне мало: в тех же пределах досягаемости предложение исчерпывалось ZiV-приводами, которые я не рассматривал ввиду явно неоправданной цены, и приводами Fujitsu Handy Drive. Один из представителей которых и был приобретен.

Упомянутый обзор избавляет меня от необходимости подробного описания дивайса. Скажу только, что мне в руки попала модель с интерфейсом USB 2 (т.н. Data Edition) объемом 40 Гбайт.

Подключение

Новый дивайс предназначался мной к работе в паре с ноутбуком Toshiba A40 (подробно описанным в соответствующей заметке), на который был установлен Archlinux в самом актуальном, регулярно обновляемом через собственную систему портов, исполнении (прекомпилированное ядро 2.6.8, установленное из штатного пакета по умолчанию). Единственно заслуживающей упоминания в данном контексте особенностью системы было то, что не так давно я задействовал в ней механизм udev (ему также посвящена специальная заметка) вместо файловой системы devfs.

Итак, присоединяю один конец штатного кабеля к накопителю, другой - к USB-разъему выключенного ноутбука (обходясь без сетевого питания, ибо соответствующий шнур в комплекте не прилагается) и запускаю машину. На корпусе драйва загорается индикатор питания. Однако по окончании загрузки операционки никакого намека на новое устройство в каталоге /dev не обнаруживается. В душу закрадываются всякие нехорошие мысли (например, что питала через USB-разъем приводу не хватает). Однако духом не падаю - выдираю кабель из разъема и втыкаю уже "на горячее". Ура - команда

 ls /dev 

показывает сразу два новых устройства - /dev/sda, соответствующее накопителю в целом, и /dev/sda1, отвечающее дисковому разделу на нем. Что позволяет сделать сразу два вывода:

  • подобно флэш-накопителям с USB-интерфейсом, HandyDrive предстает перед системой в качестве обычного SCSI-винчестера;
  • фабрично он размечен как единый первичный раздел (что отнюдь не представлялось мне очевидным - те же флэш-драйвы фабрично размечаются самым причудливым образом, а иногда просто предстают перед системой как неразмеченное raw-устройство).

Попытка монтирования устройства командой

 mount /dev/sda1 /mount_point 

вызывает требование задать явным образом тип файловой системы. Из чего делается третий (уже вполне тривиальный) вывод - первичный раздел фабрично отформатирован под файловую систему FAT32. Указав ее должным образом

 mount -t vfat /dev/sda1 /mount_point 

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

Сохранять на HandyDrive чуждую файловую систему в мои планы не входило. Так что размонтирую его и, после некоторого размышления, создаю на существующем разделе файловую систему ReiserFS, которой с некоторых пор начал отдавать предпочтение.

Теперь остается только обеспечить возможность монтирования привода в полуавтоматическом режиме, в том числе - и от лица обычного пользователя. Для чего в файл /etc/fstab вносится следующая запись:

 dev/sda1 /mnt/hd reiserfs \ user,noauto,notail,noatime,nodiratime,exec 0 0 

Значение первых трех полей очевидно (имя файла устройства, точка монтирования, файловая система). Смысл же опций монтирования следующий:

  • user позволяет монтировать устройство обычному пользователю, без прав root-оператора;
  • noauto означает отказ от автоматического монтирования при старте системы (тем паче, что устройство становится видным только при горячем подключении - впрочем, возможно, что это особенность конкретной реализации udev);
  • exec разрешает запуск с устройства исполняемых файлов, по умолчанию невозможный 9даже при наличии бита исполнения);
  • notail - специфичная для ReiserFS опция, вызывающая отказ от т.н. "упаковки хвостов" (что несколько экономит дисковое пространство, но приводит к ощутимому снижению производительности);
  • noatime и nodiratime - очень полезные опции, отменяющие обновление времени последнего обращения (атрибут atime) к файлу и каталогу, соответственно; специальное исследование показало, что таким простым средством именно для ReiserFS скорость некоторых файловых операций можно увеличить на 10-50%.

Отныне HandyDrive можно в любой момент смонтировать простой командой

 mount /mnt/hd 

Важное замечание относится к совместному использованию HandyDrive с USB-флэшками: чтобы не утратить возможность монтировать его указанной командой, нужно следить за тем, чтобы он подключался к машине раньше последних, иначе имя файла устройства его будет отличным от определенного в файле /etc/fstab (например, /dev/sdb1). Сказанное относится не только к случаю задействования механизма udev, но и к использованию файловой системы devfs (где возможны еще и некоторые другие дополнительные осложнения - например, при неоднократном подключении/отключении HandyDrive в течении сеанса работы).

Как видите, использование HandyDrive в Linux очень просто, и ни в какой сертификации не нуждается (если угодно, мою ,заметку можно рассматривать в качестве таковой:-)). У меня есть глубокие подозрения, что и со всеми остальными мобильными приводами из числа USB-устройств дело обстоит не сложнее:-).

Методика измерения

Убедившись, что ни малейших проблем с HandyDrive нет и не предвидится, впору было задуматься: а как же его использовать? Первоначально я предназначал его на роль файлового архива и хранилища резервных копий - из общих соображений трудно было ожидать от него хорошего быстродействия. Тем не менее, для очистки совести я решил выполнить пару-тройку замеров производительности. Первые же результаты показались мне столь неожиданными, что я решил провести тестирование по полной программе.

В свое время для целей сравнения быстродействия файловых систем я подобрал набор простеньких тестов - копирование массива смешанных данных общим объемом около 800 Мбайт, копирование большого (700 Мбайт avi-файла), развертывание, копирование и уничтожение архива дерева портов FreeBSD (подробно методика описана здесь). И ничто не мешало применить эти тесты, с некоторыми коррективами, для измерения физического быстродействия дисковых устройств. Чем я и занялся.

Результаты теста по окучиванию дерева портов определяются преимущественно не физическим носителем, а особенностями устройства файловой системы на нем, и потому из рассмотрения я его исключил. Учет времени удаления файлов также представлялся нецелесообразным (по тем же причинам). В итоге остались: копирование смешанного массива данных и копирование большого файла.

Копирование и массива данных, и большого файла производилось на ноутбучном винчестере и на винчестере, помещенном в HandyDrive, а также а также с одного устройства на другое - как "изнутри наружу", так и "снаружи внутрь". В каждом случае оба теста выполнялись по три раза, с размонтированием всех задействованных файловых систем в промежутке, после чего рассчитывались средние значения, приведенные в таблице.

Да, чуть не забыл сказать: перед началом измерений в BIOS ноутбука были выключены все опции, имеющие отношение к энергосбережению. Правда, избавиться от "засыпания" винчестера совсем BIOS Setup данной машины не позволяет, однако я выставил его на максимум - 30 минут; а поскольку все тесты занимают существенно меньшее время, это не должно сказаться на из результатах. Ну и сами измерения производились при питании ноутбука от сети.

Таблица. Результаты копирования, с, среднее из 3
Тест Data Big file
Barracuda 89 47
Int HDD 146 106
Fujitsu HD 140 70
Int2HDD 91 60
HDD2Int 68 58

Примечание: Int2HDD - в разделе внутреннего винчестера ноутбука; Fujitsu HD - в разделе на винчестере HandyDrive; Int2HDD - с раздела ноутбучного винчестера на HandyDrive; HDD2Int - с HandyDrive на винчестер ноутбука.

Для начала в качестве точки отсчета я решил выполнить оба теста на винчестере моего ноутбука - как можно заключить по косвенным данным (в документации сведения на сей счет отсутствовали), производства Toshiba (как ни странно:-)), объемом 40 Гбайт и скоростью вращения 4200 об./мин. Быстродействие его утилитой hdparm определялось так:

/sbin/hdparm -t /dev/hda
/dev/hda:
Timing buffered disk reads: \
74 MB in 3.06 seconds = 24.15 MB/sec

Для сравнения, мои предыдущие настольные винчестеры (Seagate Barracuda IV, 40 и 80 Гбайт, 7200 об./мин.) показывали таким образом более 40 MB/sec, относительно низкоскоростной (5400 об./мин.) 30-гигабайтник Fujitsu (из тех самых приснопамятных, случайно уцелевший:-)) - около 30 MB/sec. То есть винт, прямо скажем, в моей Toshiba стоит не рекордный. Что и подтвердилось измерениями, результаты которых приведены в таблице и на диаграмме.

Копирование осуществлялось внутри каталога /home, расположенного на отдельном первичном разделе объемом около 30 Гбайт и несущем ту же файловую систему ReiserFS, монтируемую автоматически с теми же опциями, что и сменный носитель HandyDrive:

/dev/hda4 /home reiserfs notail,noatime,nodiratime 0 0

В качестве объекта сравнения я использовал также ранее полученные результаты для Seagate Barracuda IV, 80 Гбайт (скорость вращения 7200 об./мин.), при использовании той же файловой системы ReiserFS, смонтированной с аналогичными опциями. Напрямую сравнивать их в нынешними не следует (они были получены на машине с другим процессором (Pentium-4/2,53 против Pentium-4M/2,66 в ноутбуке), при другом ядре (2.6.6) и при других версиях прочего софта, однако качественное представление в разнице быстродействия десктопного (весьма среднего по современным мерка) и ноутбучного винчестеров получить можно.

Парадоксы быстродействия

В итоге время копирования массива данных на внутреннем винчестере заняло 144-149 с, большого файла - 100-118 с. То есть в полтора-два раза больше, чем на своеобычном десктопном диске. Что было вполне ожидаемо, хотя обращает внимание приличный разброс результатов - для настольних винчестеров воспроизводимость была, как правило, существенно лучшей.

Рисунок. Диаграмма результатов тестов, по данным таблицы.

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

И тут показалась первая ласточка грядущих неожиданностей: время копирования массива данных действительно оказалось близким (138-141 с), причем результаты HandyDrive если и отклонялись, то в лучшую сторону. А вот на большом файле внешний накопитель вырвался вперед почти на треть, при лучшей воспроизводимости результатов (68-72 с).

А дальше начались совсем странные вещи. Собственно, предметом моего исследования была скорость обмена данными между внутренним и внешним накопителями в том и в другом направлении. Так вот, копирование с ноутбучного винчестера на HandyDrive заняло 90-92 с для массива данных и 59-60 с - для большого файла, что уже сопоставимо с "внутренней" скоростью десктопного диска (причем стоит обратить внимание, что воспроизводимость результатов ее улучшилась по сравнению с обоими "внутренними" тестами). А соответствующие значения в обратном направлении (с HandyDrive на ноутбук) составили 66-69 и 56-59 с - то есть для массива данных даже лучше, чем для настольной "Барракуды" с почти вдвое большей скоростью вращения...

Заключение

Приведенные результаты измерений ставят больше вопросов, чем дают ответов. Если разницу в быстродействии между ноутбучным винчестером и винчестером из HandyDrive можно, при некотором напряжении фантазии, списать на особенности конкретных экземпляров (хотя 30-процентный разрыв при копировании большого файла - через чур большой lupus ets от экземпляра к экземпляру:-)), то результаты "обменных тестов" объяснить этим невозможно.

Более вероятно, что объяснение отмеченному феномену следует искать в особенностях файловых систем Unix-подобных операционок с их эффективным кэшированием дисковых операций. Что особенно ярко проявляется в отчаянно-асинхронной ReiserFS. Правда, остается не вполне понятным, почему эта асинхронность сильнее проявляется при передаче данных через интерфейс USB, нежели через внутренний ATA-контроллер...

Как бы то ни было, практический вывод для конечного пользователя однозначен: внешний накопитель HandyDrive с позиций быстродействия не уступает, мягко говоря, внутреннему ноутбучному винчестеру. И потому может использоваться не только для целей резервирования/транспортировки данных, но и как повседневный рабочий носитель информации.

Так что если вам волею судеб достался ноутбук с винчестером, не удовлетворяющим ваши потребности в дисковом пространстве, не спешите в сервис-центр для замены последнего: возможно, внешний накопитель описанного типа окажется лучшим выбором с точки зрения не только гибкости, но и быстродействия.

Разумеется, при выполнении трех условий: наличия интерфейса USB 2, использования ОС Linux и файловой системы ReiserFS. Первая оговорка в комментариях не нуждается (о перекачивании гигабайтов данных через USB 1.1 страшно даже подумать). Что же касается последней - нельзя гарантировать столь же быстрой работы HabdyDrive с иными файловыми системами, поддерживаемыми Linux (исходя из общих соображений, можно предположить, что в случае с XFS более эффективным окажется интерфейс FireWire). Что же касается ОС - от FreeBSD с ее полусинхронной UFS/UFS2 высокой производительности ожидать трудно. Ну а про Windows и говорить не хочется - тем более, что выводы в этом отношении можно сделать из цитировавшегося обзора.