Создание отказоустойчивого сетевого хранилища ГИС данных
Введение
Встала задача создания хранилища ГИС данных большого объема (десятки Тб) "задешево". Посмотрел имеющиеся на рынке NAS - цены порядка 70 тыс. р. за 8 ячеечную модель и это без дисков. Оказалось что дешевле собрать компьютер на базе Linux с программным RAID5.
Железо
Решил брать все в одном месте. Вот какой набор получился.
№ | Наименование | Цена (на март 2012 г.) | Количество | Сумма |
---|---|---|---|---|
1. | Жесткий диск 3000ГБ Hitachi "Deskstar 5K3000 HDS5C3030ALA630" 5700об./мин., 32МБ (SATA III) | 5544.82 | 3 | 16634.46 |
2. | Мат. плата Socket1155 ASUS "P8Z68-V LX" (iZ68, 4xDDR3, SATA III, SATA II, RAID, 2xPCI-E, D-Sub, DVI, HDMI, SB, 1Гбит LAN, USB2.0, USB3.0, ATX) | 3115.2 | 1 | 3115.2 |
3. | Корпус Miditower Zalman "MS1000-HS1", ATX, черный (без БП) | 4012 | 1 | 4012 |
4. | Кулер для процессора Socket775/115x Arctic Cooling "Alpine 11 Plus" | 328.04 | 1 | 328.04 |
5. | Привод BD-ROM/DVD±RW 12xBD/16x8x16xDVD/48x32x40xCD Samsung "SH-B123L/BSBP", черный (SATA) | 2185.36 | 1 | 2185.36 |
6. | Модуль памяти 2x2ГБ DDR3 SDRAM Kingston "ValueRAM" KVR1333D3S8N9K2/4G (PC10600, 1333МГц, CL9) | 767 | 1 | 767 |
7. | Процессор Intel "Core i3-2100" (3.10ГГц, 2x256КБ+3МБ, EM64T, GPU) Socket1155 | 3314.62 | 1 | 3314.62 |
8. | Блок питания 750Вт Corsair "TX750 V2" CMPSU-750TXV2EU ATX12V V2.3 (20/24+4/8+6/8pin, вентилятор d140мм) + кабель питания EURO (1.8м) | 3890.46 | 1 | 3890.46 |
9. | Жесткий диск 250ГБ Seagate "Barracuda ST250DM000" 7200об./мин., 16МБ (SATA III) | 2153.5 | 1 | 2153.5 |
Итого: 36400.64 р.
Выбор комплектующих особо не принципиален и осуществлялся на основе имеющихся в одном магазине. Для сетевого хранилища не нужен производительный процессор, но в перспективе предполагается развертывание на нем дополнительных сервисов (Веб сервер, база данных и т.д.), поэтому был выбран Core i3-2100.
Основа массива - 3 диска Hitachi Deskstar 5K3000 (для RAID 5 нужно минимум 3 диска) емкостью 3Тб. Это "зеленые" диски и не совсем подходят для производительных решений, но выбора не было, да и получилось "задешево". Кроме того, не стояла задача по скорости - главное объем и надежность. Предполагается получить объем хранения порядка 7-8Тб.
Для установки системы предусмотрим отдельный маленький жесткий диск 250ГБ Seagate Barracuda.
Материнская плата имеет видеовыходы, которые работают в случае поддержки процессором (выбранный поддерживает). На материнской плате 4 разъема SATA3 и 2 SATA6. Я подключил их следующим образом: 1 SATA3 к приводу BD-ROM/DVD±RW, 3 к корзине из 3-х дисков с возможностью hot-swap (это особенность корпуса - в нем установлена корзина на 3 диска), 1 SATA6 к нашему системному диску и 1 SATA6 к внешнему eSATA.
В перспективе наш NAS может быть модернизирован добавлением второй сетевой карты для объединение их в единый пул. Для добавления дисков необходима отдельная плата с необходимым количеством портов SATA (PCI или PCI-1x,4x,16x), т.к. на данный момент портов SATA не осталось.
Выглядеть это будет так.
Дверца снизу закрывает корзину на 3 диска.
Софт
В качестве операционной системы для нашего сервера будем использовать Ubuntu Server 12.04 LTS. Скачиваем со страницы загрузки Ubuntu Server 12.04 LTS 64 bit. Будем ставить 64-битную операционную систему.
Полный адрес загрузки следующий: http://mirror.bytemark.co.uk/ubuntu-releases//precise/ubuntu-12.04-server-amd64.iso
Альтернативные образы: http://mirror.bytemark.co.uk/ubuntu-releases//precise
Скачанный образ записываем на диск.
Установка
Запускаем наш NAS и грузимся с только что записанного диска. Выполняем установку на отдельный маленький диск (250ГБ Seagate).
По окончанию процесса установки перезагружаемся. Если все ОК, то дальнейшую работу с NAS будем проводить удаленно. Для этого необходим DHCP сервер, который автоматически выдаст NAS адрес (можно и статически IP адрес назначить). Отключаем от NAS мышь, клавиатуру, монитор. Устанавливаем его в новом месте и обеспечиваем подключение сети питания и информационной сети (локалки). Дальнейшую работу будем проводить через PuTTY.
login as: bishop bishop@192.168.2.86's password: Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.2.0-23-generic x86_64) * Documentation: https://help.ubuntu.com/ System information as of Sun Apr 29 00:00:42 MSK 2012 System load: 0.0 Processes: 83 Usage of /: 1.9% of 228.70GB Users logged in: 0 Memory usage: 0% IP address for eth0: 192.168.2.86 Swap usage: 0% Graph this data and manage this system at https://landscape.canonical.com/ Last login: Sat Apr 28 22:40:57 2012 from bishop-hp.bishop-dom bishop@ubuntu-nas:~$
Устанавливаем mdadm (Mirrored Device Admin).
sudo apt-get install mdadm
Смотрим наши диски.
bishop@ubuntu-nas:~$ ls -l /dev/sd* brw-rw---- 1 root disk 8, 0 апр. 28 23:04 /dev/sda brw-rw---- 1 root disk 8, 1 апр. 28 23:04 /dev/sda1 brw-rw---- 1 root disk 8, 2 апр. 28 23:04 /dev/sda2 brw-rw---- 1 root disk 8, 5 апр. 28 23:04 /dev/sda5 brw-rw---- 1 root disk 8, 16 апр. 28 23:04 /dev/sdb brw-rw---- 1 root disk 8, 32 апр. 28 23:04 /dev/sdc brw-rw---- 1 root disk 8, 48 апр. 28 23:04 /dev/sdd
Как видим диск /dev/sda разбит на /dev/sda1,sda2 и sda5 - это наш системный диск, а вот sdb, sdc, sdd нужно добавить в массив.
Выполняем команду:
sudo mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/sdb /dev/sdc /dev/sdd
или более короткую запись для дисков с именами подряд
sudo mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/sd[b-d]
Получаем следующий вывод:
mdadm: layout defaults to left-symmetric mdadm: layout defaults to left-symmetric mdadm: chunk size defaults to 512K mdadm: layout defaults to left-symmetric mdadm: layout defaults to left-symmetric mdadm: size set to 2930265088K mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md0 started.
Выполним команду:
bishop@ubuntu-nas:~$ watch cat /proc/mdstat Every 2,0s: cat /proc/mdstat Sun Apr 29 01:11:38 2012 Personalities : [raid6] [raid5] [raid4] md0 : active raid5 sdd[3] sdc[1] sdb[0] 5860530176 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_] [>....................] recovery = 0.9% (26581700/2930265088) finish=656.1min speed=73755K/sec unused devices: <none>
Из которой узнаем, что массив создан и инициализируется. Как видно понадобится на это 10 часов. Пока идет процесс, посмотрим детали массива:
bishop@ubuntu-nas:~$ sudo mdadm --detail /dev/md0 /dev/md0: Version : 1.2 Creation Time : Sun Apr 29 01:05:41 2012 Raid Level : raid5 Array Size : 5860530176 (5589.04 GiB 6001.18 GB) Used Dev Size : 2930265088 (2794.52 GiB 3000.59 GB) Raid Devices : 3 Total Devices : 3 Persistence : Superblock is persistent Update Time : Sun Apr 29 01:09:39 2012 State : clean, degraded, recovering Active Devices : 2 Working Devices : 3 Failed Devices : 0 Spare Devices : 1 Layout : left-symmetric Chunk Size : 512K Rebuild Status : 2% complete Name : ubuntu-nas:0 (local to host ubuntu-nas) UUID : 5d16e4f0:04b6622a:d4649121:25fba69e Events : 5 Number Major Minor RaidDevice State 0 8 16 0 active sync /dev/sdb 1 8 32 1 active sync /dev/sdc 3 8 48 2 spare rebuilding /dev/sdd
Запишем на всякий случай серийники дисков в RAID5.
bishop@ubuntu-nas:~$ sudo hdparm -I /dev/sd[b-d] | grep "Serial Number" /dev/sdb Serial Number: MJ1311YNG6J5NA /dev/sdc Serial Number: MJ1311YNG6LWZA /dev/sdd Serial Number: MJ1311YNG6JMYA
TODO: скриншот выполненого массива
bishop@ubuntu-nas:~$ sudo mdadm --detail /dev/md0
В качестве файловой системы будем использовать xfs. Я особо не выбирал исходя из текущей ситуации - взял проверенное ранее решение. Кроме того, я планирую расширять xfs на добавляемые в RAID диски. Она это позволяет.
Создаем файловую систему.
mkfs.xfs /dev/md0
Это происходит очень быстро. Монтируем созданную файловую систему.
mkdir /mnt/fs0 && mount -t xfs /dev/md0 /mnt/fs0