-ѕоиск по дневнику

ѕоиск сообщений в csh

 -ѕодписка по e-mail

 

 -—татистика

—татистика LiveInternet.ru: показано количество хитов и посетителей
—оздан: 06.10.2009
«аписей: 50
 омментариев: 189
Ќаписано: 356


—обираем mdadm soft RAID5 из 3Tb WD Red с Advanced Format

„етверг, 25 »юл€ 2013 г. 23:02 + в цитатник
¬ »нтернет можно найти достаточно статей по созданию софтовых RAID под Linux при помощи mdadm, однако мне хотелось бы рассказать об особенност€х, которые возникают если это делать с дисками объЄмом 3000√б и более. ≈щЄ более интересно, когда диски имеют физический сектор 4  Ѕ ал€ Advanced Format, со всеми вытекающими последстви€ми по выравниванию и оптимизации.

»так сразу переходим к сути вопроса.
¬ качестве примера € рассмотрю случай создани€ RAID5 из 3-х дисков, хот€ всЄ нижеизложенное справедливо и дл€ массивов с бќльшим количеством дисков и дисков бќльшего объЄма.

≈сли говорить по простому, то soft RAID по средствам mdadm организуетс€ путЄм объединени€ нескольких разделов расположенных на физически разных дисках. “.е. mdadm оперирует разделами на дисках, а не самими дисками. ¬ принципе можно оперировать и самими дисками, но это в корне не правильно, о чЄм чуть позже.

»так, прежде всего, дл€ организации RAID надо создать соответствующие разделы на дисках.
¬ качестве дисков будут использоватьс€ - Western Digital Red WD30EFRX. Ёто 3Tb диски с Advanced Format (AF), а значит необходимо учитывать физический размер сектора 4 б дл€ оптимального быстродействи€.
ѕоскольку мы будем иметь дело с дисками объЄмом более 2000√б, то будем пользоватьс€ утилитой parted, котора€ их корректно поддерживает, в отличи€ от fdisk и еЄ производных.

 роме 3-х дисков под RAID5, в системе также есть ещЄ один небольшой диск под систему. ¬опросы почему система находитьс€ не на RAID рассматривать здесь не будем, но если в вкратце, то так проще и правильнее.

ƒл€ начала просмотрим информацию по имеющимс€ в системе дискам, дл€ чего даЄм соответствующую команду:

[root@nas ]# parted -l
ћодель: ATA WDC WD30EFRX-68A (scsi)
ƒиск /dev/sda: 3001GB
–азмер сектора (логич./физич.): 512B/512B
“аблица разделов: unknown
Disk Flags:

ћодель: ATA WDC WD30EFRX-68A (scsi)
ƒиск /dev/sdb: 3001GB
–азмер сектора (логич./физич.): 512B/512B
“аблица разделов: unknown
Disk Flags:

ћодель: ATA WDC WD30EFRX-68A (scsi)
ƒиск /dev/sdc: 3001GB
–азмер сектора (логич./физич.): 512B/512B
“аблица разделов: unknown
Disk Flags:

ћодель: ATA WDC WD5003AZEX-0 (scsi)
ƒиск /dev/sdd: 500GB
–азмер сектора (логич./физич.): 512B/512B
“аблица разделов: msdos
Disk Flags:

Ќомер Ќачало  онец –азмер “ип ‘айлова€ система ‘лаги
1 1049kB 472GB 472GB primary ext4 загрузочный


—оответственно:
/dev/sda Ц RAID5
/dev/sdb Ц RAID5
/dev/sdc Ц RAID5
/dev/sdd Ц системный.

 ак было написано ранее, mdadm оперирует разделами, а следовательно их необходимо создать, дл€ чего воспользуемс€ parted.

[root@nas ]# parted /dev/sda
GNU Parted 3.1
»спользуетс€ /dev/sda
(parted) mklabel gpt
(parted) mkpart raid ext4 1Mib 3000GB
(parted) set 1 raid on
(parted) print
ћодель: ATA WDC WD30EFRX-68A (scsi)
ƒиск /dev/sda: 3001GB
–азмер сектора (логич./физич.): 512B/512B
“аблица разделов: gpt
Disk Flags:

Ќомер Ќачало  онец –азмер ‘айлова€ система »м€ ‘лаги
1 1049kB 3000GB 3000GB ext4 raid
(parted) q


“еперь несколько подробнее по тому, что здесь написано:
parted /dev/sda
«апустили parted и начали работать с диском /dev/sda

(parted) mklabel gpt
Cоздали разметку диска в GPT формате.

≈сли коротко, то разметка в системе MBR (MSDOS) не позвол€ет работать с разделами более 2-х “б, а нам то как раз надо больше, именно по этому будем использовать GPT.

(parted) mkpart raid ext4 1Mib 3000GB
—оздали 1 раздел (в системе GPT разделы идут по номерам без разделени€ primary, extended и т.д.) с именем raid в котором будет файлова€ система ext4, с началом 1ћiB (т.†е. честные - 1024) и окончанием 3000GB (не честные Ч 1000).

“еперь несколько подробнее, почему были выбранены именно такие значени€.
ѕоскольку мы имеем дело с Advanced Format, то необходимо учитывать, что физический размер сектора равен 4  б, и дл€ предотвращени€ потери производительности необходимо, чтобы разметка диска была кратной 4 Ѕ.
¬ данном случае - 1ћiB, т.е отступ он начала, составил 1024 Ѕ/4 Ѕ=256 физических секторов.

¬ообще, при современном размере жЄстких дисков советую в любом случае разбивать их на разделы кратные 1ћiB (т.†е. честные мегабайты), в не зависимости от того используетс€ ли Advanced Format или нет. Ёто гарантированно защитит вас от возможной потери производительности, от несовпадени€ физического и логического секторов. Ќу да ладно, мы отвлеклись, все кому будет интересна эта тема более подробно, смогут сами изучить еЄ в полной мере.

ќкончание раздела надо выбирать исход€ из тех соображений, что он должен быть несколько меньше физического объЄма диска.
¬сЄ дело в том, что диски разных производителей и разные моделей имеют несколько разные размеры, несмотр€ на то, что на всех них написан один и тот же объЄм. –азличи€ минимальны, но они есть.
ѕолучаетс€, что в случае поломки одного из дисков в RAID массиве, может возникнуть ситуаци€ при которой, новый купленный диск окажетс€ чуть меньшего объЄма чем вышедший из стро€. ¬осстановить работу RAID массива тогда не получитьс€, поскольку размер раздела на новом диске должен быть равен либо больше размера, что и существующие в RAID массиве.
»менно по этому окончание раздела выбираетс€ с некоторым запасом относительно физического объЄма. ‘уф, вроде пон€тно объ€снил...

¬ моЄм случа€ € выбрал 3000GB (не честные Ч 1000), т.†е. меньше чем физический размер 3001GB, в принципе можно было сделать даже 2999GB, но тут уже надо действовать по обсто€тельствам. —амое главное при этом руководствоватьс€ выше изложенными соображени€ми.

ѕочти всЄ, осталось совсем немного.
(parted) set 1 raid on
ƒл€ того чтобы mdadm корректно восприн€л разделы, необходимо установить флаг raid в состо€ние on. „то соответственно и было сделано на 1-вом разделе.

Ќу и последн€€ команда print просто вывела информацию о диске после проделанных манипул€ций.

јналогичным образом поступаем с остальными дисками, после чего у нас получаетс€ примерна така€ картина :

[root@nas ]# parted -l
ћодель: ATA WDC WD30EFRX-68A (scsi)
ƒиск /dev/sda: 3001GB
–азмер сектора (логич./физич.): 512B/512B
“аблица разделов: gpt
Disk Flags:

Ќомер Ќачало  онец –азмер ‘айлова€ система »м€ ‘лаги
1 1049kB 3000GB 3000GB raid raid

ћодель: ATA WDC WD30EFRX-68A (scsi)
ƒиск /dev/sdb: 3001GB
–азмер сектора (логич./физич.): 512B/512B
“аблица разделов: gpt
Disk Flags:

Ќомер Ќачало  онец –азмер ‘айлова€ система »м€ ‘лаги
1 1049kB 3000GB 3000GB raid raid


ћодель: ATA WDC WD30EFRX-68A (scsi)
ƒиск /dev/sdc: 3001GB
–азмер сектора (логич./физич.): 512B/512B
“аблица разделов: gpt
Disk Flags:

Ќомер Ќачало  онец –азмер ‘айлова€ система »м€ ‘лаги
1 1049kB 3000GB 3000GB raid raid


ћодель: ATA WDC WD5003AZEX-0 (scsi)
ƒиск /dev/sdd: 500GB
–азмер сектора (логич./физич.): 512B/512B
“аблица разделов: msdos
Disk Flags:

Ќомер Ќачало  онец –азмер “ип ‘айлова€ система ‘лаги
1 1049kB 472GB 472GB primary ext4 загрузочный


¬сЄ, все разделы созданы, теперь можно собирать наш RAID по средствам mdadm:

[root@nas ]# mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/hda1 /dev/hdb1 /dev/hdc1


ѕосмотреть текущее состо€ние RAID можно следующим образом:

[root@nas ]# mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Fri Jul 12 21:14:31 2013
Raid Level : raid5
Array Size : 5859322880 (5587.89 GiB 5999.95 GB)
Used Dev Size : 2929661440 (2793.94 GiB 2999.97 GB)
Raid Devices : 3
Total Devices : 3
Persistence : Superblock is persistent

Update Time : Thu Jul 25 15:13:09 2013
State : clean
Active Devices : 3
Working Devices : 3
Failed Devices : 0
Spare Devices : 0

Layout : left-symmetric
Chunk Size : 512K

Name : localhost:0
UUID : d73b4ae7:45ecf208:4fefc59e:33f8bcaf
Events : 2553

Number Major Minor RaidDevice State
4 8 1 0 active sync /dev/sda1
1 8 17 1 active sync /dev/sdb1
3 8 33 2 active sync /dev/sdc1


Ќа самом деле если дать такую команду сразу после создани€ массива, то в строке State будет сообщение о том, что массив провер€етс€. ¬ моЄм же случае массив был уже давно собран, по этому статус Ц Clean.

“еперь надо создать файловую систему на собранном массиве:

[root@nas ]# mkfs.ext4 /dev/md0


я предпочитаю ext4, но вы можете использовать любую другую на ваш вкус. “ут следует обратить внимание на то, что файлова€ система создаЄтс€ сразу поверх устройства, без создани€ разделов на нЄм.

ѕосле этого можно подмонтировать наш RAID к файловой системе:

[root@nas ]# mount /dev/md0 /mnt/raid


”знаем UUID дл€ нашего раздела и внесЄм соответствующие изменени€ в файлы конфигураций, дл€ того чтобы RAID автоматически монтировалс€ при загрузке:

[root@nas ]# blkid
/dev/sda1: UUID="d73b4ae7-45ec-f208-4fef-c59e33f8bcaf" UUID_SUB="93735f8c-6b20-0070-c982-b337e93c2524" LABEL="localhost:0" TYPE="linux_raid_member" PARTLABEL="ext4" PARTUUID="44c83b1d-fdf3-40b6-a2be-3bea81671452"
/dev/sdb1: UUID="d73b4ae7-45ec-f208-4fef-c59e33f8bcaf" UUID_SUB="e3998895-141b-b983-4735-9ecb262b6cf8" LABEL="localhost:0" TYPE="linux_raid_member" PARTLABEL="ext4" PARTUUID="6847b62f-2801-45c7-b1ba-85b8eeb182e0"
/dev/sdc1: UUID="d73b4ae7-45ec-f208-4fef-c59e33f8bcaf" UUID_SUB="884944c3-11fa-1be9-672c-e0bfb0387a9c" LABEL="localhost:0" TYPE="linux_raid_member" PARTLABEL="ext4" PARTUUID="22a3daf5-38b9-41a0-80d3-db37381f3e0e"
/dev/sdd1: UUID="0884b59a-439e-4586-a512-a8621344b0a2" TYPE="ext4"
/dev/md0: UUID="a13f2c38-cf60-4e05-bc19-147b909e462c" TYPE="ext4"


ѕосле чего внесЄм необходимую запись в конфиг:

[root@nas ]# echo УUUID=a13f2c38-cf60-4e05-bc19-147b909e462c /mnt/raid ext4 autoФ >> /etc/fstab


¬ принципе на этом можно было бы и закончить, но хотелось бы дать ещЄ пару советов, которые помогут избежать проблем в будующем.

¬ силу некоторых обсто€тельств, иногда /dev/md0 вдруг становитьс€ /dev/md127, дл€ того чтобы этого не возникало достаточно сделать запись о нашем массиве в конфигурационном файле mdadm:

[root@nas ]# echo УARRAY /dev/md0 UUID=d73b4ae7:45ecf208:4fefc59e:33f8bcafФ >> /etc/mdadm.conf


UUID, можно узнать из:

[root@nas dark705]# mdadm --detail /dev/md0


 роме этого хочу дать ещЄ одну полезную команду, котора€ существенно увеличивает производительность записи дл€ RAID 5 и 6-тых уровней:

[root@nas dark705]# /usr/bin/echo 16384 > /sys/block/md0/md/stripe_cache_size


Ѕолее подробно дл€ что нужна эта команда, можно узнать по адресу:
http://romanrm.ru/mdadm-raid

јвтор великолепно всЄ расписал, и повтор€тьс€ € думаю не имеет смысла.

¬несЄнные изменени€ действуют до перезагрузки, поэтому неплохо бы организовать выполнение этой команды автоматически.  ак это сделать зависит от дистрибутива.

ƒл€ Mageia 1-3 и многих других достаточно внести еЄ в файл:

[root@nas rc.d]# echo У/usr/bin/echo 16384 > /sys/block/md0/md/stripe_cache_sizeФ >> /etc/rc.d/rc.local


Ќу и напоследок простенькое тестирование производительности получившегос€ у мен€ массива:

[root@nas rc.d]# dd if=/dev/zero of=/mnt/raid/test.hdd bs=1G count=40
40+0 записей получено
40+0 записей отправлено
скопировано 42949672960 байт (43 GB), 145,78 c, 295 MB/c
[root@nas rc.d]# dd of=/dev/zero if=/mnt/raid/test.hdd bs=1G count=40
40+0 записей получено
40+0 записей отправлено
скопировано 42949672960 байт (43 GB), 141,144 c, 304 MB/c


—корость чтени€ - 304 MB/c, а скорость записи - 295 MB/c, по моему результаты просто отличные!



 

ƒобавить комментарий:
“екст комментари€: смайлики

ѕроверка орфографии: (найти ошибки)

ѕрикрепить картинку:

 ѕереводить URL в ссылку
 ѕодписатьс€ на комментарии
 ѕодписать картинку