Вот на работе встала необходимость создания о-о-очень большого файлообменника, куда люди должны собирать всё-всё-всё и даже больше. Для этой цели был специально куплен сервер Intel SSR212MC2R2 - этакий монстр, в который вставляется аж 12 терабайтных дисков SATA. Штука очень тяжелая - и в лифт еле-еле влезла. А в стойку мы ее втроём запихивали. И вот первый запуск. Оказалось что всё это работает под контроллером LSI - противоречивая штука. С одной стороны надежная, а с другой - тормозная. Но в принципе, сервер-то бюджетный. Эконом-класс для малого и среднего офиса наших дней. Зато LSI позволяет сделать много разных комбинаций RAID - а с 12-ю дисками этих комбинаций просто реально много. Первый блин - комом. FreeBSD 7 не видит таких больших дисков - выдает ошибки геометрии уже на стадии sysinstall. Оно и понятно: fdisk, disklabel, df - до сих пор не заточены под такие объемы - об этом сказано и на официальном сайте. Идея - отрезать от массива один диск под ОС, а остальные одиннадцать - объединить в RAID тоже провалилась. Точнее, я так и сделал - но когда стал заливать реальные данные, то проверка показала, что производительность системы крайней низка - 10-15Mb/s. Для сервера, пусть даже буджетного, это неприемлемо. Поэтому корпус пришлось разобрать и внутри компьютера поковыряться. Как и ожидалось нашлись крайне любопытные вещи. Итак, внутри нашлось специально выделенное место для двух загрузочных дисков SAS/SATA размером 2'5 и разъем для подключения флешки прямо на материнской плате. Причем, судя по биосу - грузиться можно было с чего угодно. Быстро купил Seagate SAS объемом 70Gb и поставился на него. Остальные 12 дисков были объединены в RAID5, который, на проверку, оказался не самым быстрым решением. Быстрее (оно и понятно) - RAID0 (зеркалирование), но оно сокращает объем массива в два раза, а главным требованием всё-таки был большой объем. FreeBSD встала и обновилась за 5 минут, а вот с мутантским RAID-диском пришлось повозиться. Решение для этого - GPT. Загрузившись с устройства /dev/ad0 я вижу свой многострадальный RAID как /dev/mfid0 и разбиваю его таким образом: # gpt create mfid0 # gpt add mfid0 # gpt label -a -le mfid0 # newfs /dev/mfid0p1 Последняя операция пишет много-много разных чисел и делает это больше часа. Но, в итоге, все получается: # tunefs -n enable /dev/mfid0p1 # mount /dev/mfid0p1 /mnt # df -h Filesystem Size Used Avail Capacity Mounted on /dev/mfid0p1 9.8T 4.0K 9.8T 0% /mnt Обратите внимание, что перед монтирование я сделал tunefs - включил флажок SoftUpdates, тем самым немного ускорив работу своей файловой системы. Эта операция делается 1 раз на размонтированном диске и сохраняется во время перезагрузок. Еще примечательно вот что. Когда мы всталяем 12 терабайтных дисков в массив, то ожидаем, что получим объем в 12Тб. А вот и нет. 1Тб целиком уходит на формирование RAID5. И еще один терабайт - на newfs, т.е файловая система на таком большом массиве сама занимает почти терабайт! Это, конечно, можно варьировать наводя детальный тюнинг, но по умолчанию происходит именно так. И напоследок вот о чем. Сервер удался не сразу - несколько дней я точно помучался, изучая вопрос. Эффективных решений под FreeBSD для таких массивов на самом деле только два: * либо мы используем UFS2 и GPT (но с GPT пока нельзя загрузиться - в стандартных загрузчиках этот метод не реализован) * либо мы используем ZFS (и тогда нас предупреждают, что множественные операции чтения-записи могут приводить к дедлокам и задержкам) Все другие варианты - либо беты, либо сырые, либо нестабильные. Я выбрал первый вариант как более консервативный. Судя по различной докуменации он уступает второму по скорости, но потребляет меньше ресурсов и как-то "роднее" самой фряхе. == Примечание == Как утверждают официальные источники, в версии FreeBSD 6.4 появилась долгожданная возможность грузиться с gpt-дисков, а также исправлены многие глюки с zfs-системой. Теперь работать с большими дисками будет проще. Аналогичные возможности будут добавлены к FreeBSD 7.1.
Linux/Windows Справочник v0.05 © 2007-2024 Igor Salnikov aka SunDoctor