Уже года полтора, проезжая по ул. Глыбочицкой возле магазина Эльдорадо, на офисе страховой компании "N" я вижу огромное объявление о том, что из автомобиля украден ноутбук, но ворам предлагают полную стоимость ноутбука в обмен на его возвращение. Объявление уже растрёпано и части его нет. Я сомневаюсь, что ноутбук вернули. В этом случае железо по сравнению с данными стоит копейки. Вариант полной потери данных рассматривать не будет - конечно же, бекапы нужно иметь обязательно (причём диск с ними не должен храниться в сумке с ноутбуком). Давайте подумаем о том, что к данным может получить доступ злоумышленник - либо конкурент, либо просто "интересующийся", который может использовать данные в своих целях. Страшно представить, если на ноутбуке хранятся базы данных по персональным данным и кредитным картам клиентов.

Неискушённые люди думают, что пароль на вход в систему (а скорее всего его нет) может спасти данные от чужих глаз. Да, но замок спасает от честных людей - воры его взломают за секунды. И что дальше? Имея физический доступ, можно не напрягаясь сбросить пароль входа в Mac OS X или получить административный доступ за 5 минут. А уже администратор получит доступ ко всем данным, если они находятся в открытом виде.

Здесь на помощь приходит штатная технология FileVault. Домашний каталог находится в зашифрованном по алгоритму AES-128 образе SparseBundle (в 10.5 для удобства резервного копирования через TimeMachine от монолитных образов Sparse Image перешли к набору файлов по 8 MB). К сожалению, для того, чтобы Time Machine провела резервное копирование каталога FileVault, нужно выйти из системы (сделать logout, а не shutdown).

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

Для тестирования я создал двух пользователей - одного с включённым FileVault, второго - с обычным домашним каталогом. Для каждого из них я по очереди запустил утилиту IOZone (это кроссплатформенная утилита с открытыми исходными кодами, она работает как на Unix, так и на Windows).

Описание тестов есть в документации IOZone (PDF). В заголовке указаны размеры блоков от 64 до 16384 KB, на которых производится тестирование. Значения приведены в KB в секунду. "8192 On" - тест при включённом FileVault, "8192 Off" - с выключенным. В процентах сравнивается разница в производительности между включенным и выключенным FileVault - 116% обозначает потеря 16% производительности на FileVault. Запуск: "/opt/local/bin/iozone -aRb fv1.xls".

Результаты для размера файла 8196 KB (таблицу можно увеличить):

В среднем падение производительности для размера файла 8196 составило от 0 до 12%.

Результаты для размера файла 524288 KB:

В среднем падение производительности минимально, есть даже эффект кеширования, когда производительность улучшается (пример - Record Rewrite Test). Занятость CPU было не слишком значительным, к сожалению, у меня не было возможности произвести интервальные измерения.

Резюме. На тестах IOZone потеря производительности FileVault не настолько значительна, как казалось, средние 12% это отличная плата за безопасность данных.

Теперь мне осталось перейти на FileVault и проверить реальную работу системы при включенном FileVault. Проведённые тесты были в идеальных условиях, интересно будет посмотреть производительность при параллельном доступе различных программ к данным.