The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

Создание Software RAID в Slackware Linux (linux slackware raid disk)


<< Предыдущая ИНДЕКС Правка src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: linux, slackware, raid, disk,  (найти похожие документы)
From: Serg Kuklin <ksv@cons.tsk.ru.> Newsgroups: email Date: Mon, 23 May 2005 18:21:07 +0000 (UTC) Subject: Создание Software RAID в Slackware Linux - Введение - Достаточности и необходимости - Перед началом - Первая загрузка - Файл конфигурации RAID-массива -- /etc/raidtab - Создание RAID устройств - Копирование операционной системы в RAID - Загрузка с RAID массива - Дополнение зеркал - Заключение Оригинал статьи: Building a Software RAID System in Slackware. http://slacksite.com/slackware/raid.html Перевод: stager (ksv@cons.tsk.ru) 3 мая 2005 года. Введение Установка Linux на RAID не является очень сложным делом, особенно если вы понимаете что делаете, а не полагаетесь на волшебные инструкции от RedHat Linux с описанием окон и кнопок, которые нужно двигать мышкой, а нажимать колесиком. Именно поэтому в качестве примера выбран Slackware Linux, так как он похоже единственный дистрибутив, в котором чтобы что-то сделать, нужно четко понимать, что делаешь. И как следствие, если вы поймете как это делается в Slackware, то спокойно разберетесь, как это сделать в вашем любимом дистрибутиве. Достаточности и необходимости Цель документа: установка Slackware 10.1 с нуля на IDE software RAID 1 (mirror) из двух дисков. Используется ядро из дистрибутива - 2.4.29, в котором есть поддержка soft-raid. На самом деле достаточно взять любой дистрибутив с ядром 2.4.x и выше. Для запуска raid на ядрах 2.2.х придется собирать свое ядро с соответствующими патчами. Необходимо: * Два одинаковых винчестера. (Использование дисков разного размера возможно, но не рекомендуется (Прим. пер.: интересно, почему?)) * Возможность загрузиться со Slackware Install CD. Для любителей других дистрибутивов: + ядро 2.4.х и выше + Рекомендуется LILO 22.5.7.2 и выше (Возможность загрузить систему с RAID появилась в LILO 22.0) + raidtools 0.90 или выше. * Умение пользоваться fdisk'ом. Ну или хотя бы понимать что такое таблица разделов, mbr, раздел и так далее. * Несильно погнутые руки для работы в командной строке. * Терпение и время. (Пиво опционально). Перед началом Если у вас IDE диски, то советуем вам поставить их на разные шины. Это не столько для обеспечения отказоустойчивости (в случае умирания одного винта есть вероятность, что он заблокирует шину и второй винчестер не сможет нормально работать), но и для увеличения производительности. Также убедитесь, что в BIOS стоит опция "Загрузка с CD-ROM". Я обычно на машине с двумя шинами IDE ставлю CD-ROM привод как secondary slave. Теперь загружайтесь со Slackware Install CD. Когда загрузка дойдет до приглашения "Boot:", вам нужно будет выбрать ядро, которое соответствует вашему железу. Далее загрузка будет продолжаться. На самом деле установка системы на RAID не сильно отличается от обычной установки Slackware Linux. Перед тем как запустить "setup" вы должны создать разделы на диске. Особо обращаем ваше внимание на то, что ставить систему нужно на второй винчестер (в нашем случае это /dev/hdc), который подключен к secondary IDE bus. Набирайте в консоли: # fdisk /dev/hdc Для создания RAID не требуется как то по особенному разбивать диск. Все делается так же, как будто это просто одно-дисковый сервер. Мне нравится следующая разбивка диска: разделы для /, swap, /usr/local, /var и /home. По причине того, что объем свободного пространства на IDE дисках слабо отражается на содержимом кошелька, не стоит скупиться, создавая / и swap. Избыточность в нашем случае не стоит ничего против вероятности возможных проблем с нехваткой места в разделе. Вот пример разбивки винчестера на 20G: Disk /dev/hdc: 255 heads, 63 sectors, 2434 cylinders Units = cylinders of 16065 * 512 bytes Device Boot Start End Blocks Id System /dev/hdc1 * 1 262 2104483+ 83 Linux native /dev/hdc2 263 524 2104515 82 Linux swap /dev/hdc3 525 1314 6345675 83 Linux native /dev/hdc4 1315 2434 8996400 5 Extended /dev/hdc5 1315 1837 4200966 83 Linux native /dev/hdc6 1838 2434 4795371 83 Linux native Обратите внимание, что /dev/hdc1 помечен, как загрузочный. Это обязательно нужно сделать, чтобы RAID работал нормально. После создания разделов выходите из fdisk'а и не забудьте убедиться, что таблица разделов записалась на диск и ядро ее применило. (Не поленитесь перевести сообщения fdisk'а. Вполне возможно, что там написано что-то типа "При записи таблицы разделов обнаружено, что устройство занято другим приложением. Таблица будет применена после перезагрузки".) Вообще перезагрузка после манипуляций с таблицей разделов не будет лишней, особенно если вы собираетесь использовать ReiserFS. После перезагрузки, запускайте "setup" и начинайте установку согласно инструкции по установке, не забыв обратить внимание на некоторые моменты: * Так как в дальнейшем процессе установки необходимо будет копировать содержимое раздела на другой винчестер, стоит подумать об сокращении времени этого копирования. То есть на этом этапе устанавливать минимальную Linux-систему, в дальнейшем можно будет доставить необходимые пакеты уже на raid. Я думаю вы прекрасно знаете, что нужно ставить, чтобы получить минимальную Slackware Linux-машину. Хотя могу и повторить: + Необходимые вам пакеты из серий A и AP. + Пакет glibcso из серии A или свежий пакет glibc из серии D. + Не забудьте поставить пакет raidtools из серии AP + (От переводчика: я еще поставил sshd из серии N. И всю настройку производил через сеть.) * Установите LILO используя "expert mode". Убедитесь, что LILO установлен в master boot record (MBR) правильного диска (/dev/hdc) и ваш / раздел (в нашем случае это /dev/hdc1) помечен как загрузочный (bootable flag, напротив этого раздела в fdisk'е будет стоять "*") Первая загрузка После окончания установки перегружайтесь с винчестера (не забудьте вынуть CD-ROM из привода и проверьте boot sequence в BOIS'е). Если все пройдет нормально, то система загрузится используя /dev/hdc1 в качестве / раздела. Если же все-таки система не грузится, то загружайтесь с CD-ROM'а или дискеты и тщательно проверяйте /etc/lilo.conf. Также будьте внимательны при выборе загрузочного устройства в BIOS'е, одинаковые винты будут выглядеть одинаково, возможно вы просто не с того винта грузитесь. Если же все-таки BIOS оказался слишком дурным, что не захотел грузить систему со второго винчестера, то как вариант попробуйте установить LILO в mbr первого диска, указав ему брать / раздел со второго, все равно LILO потом нужно будет переконфигурировать. Этот трюк помогал мне, когда попадались невнятные SCSI-контроллеры, которые не давали возможности указывать загрузочный диск. На следующем шаге нужно создать разделы на первом винчестере (в нашем случае это /dev/hda). Для лучшего использования дискового пространства диск следует разбить точно также, как и второй. Команда fdisk -l /dev/hdc поможет вам разбить диск цилиндр в цилиндр. В итоге у вас должно получиться два диска разбитых одинаково. Точнее, почти одинаково: на первом винчестере вам нужно будет сделать существенное изменение: тип разделов должен быть не "Linux native", а "Linux raid autodetect" c кодом 0xFD. Если вы все сделали правильно, то по идее у вас должно получиться что-то вроде этого: Disk /dev/hda: 255 heads, 63 sectors, 2434 cylinders Units = cylinders of 16065 * 512 bytes Device Boot Start End Blocks Id System /dev/hda1 * 1 262 2104483+ fd Linux raid autodetect /dev/hda2 263 524 2104515 82 Linux swap /dev/hda3 525 1314 6345675 fd Linux raid autodetect /dev/hda4 1315 2434 8996400 5 Extended /dev/hda5 1315 1837 4200966 fd Linux raid autodetect /dev/hda6 1838 2434 4795371 fd Linux raid autodetect Файл конфигурации RAID-массива - /etc/raidtab После того, как мы подготовили первый диск для создания RAID, самое время создать файл конфигурации массивов RAID, который будет использоваться драйвером md для корректной конфигурации массива. Запустите ваш любимый emacs и, руководствуясь нижеприведенным примером, создайте ваш raidtab. raiddev /dev/md0 raid-level 1 nr-raid-disks 2 nr-spare-disks 0 persistent-superblock 1 device /dev/hda1 raid-disk 0 device /dev/hdc1 failed-disk 1 chunk-size 32 raiddev /dev/md1 raid-level 1 nr-raid-disks 2 nr-spare-disks 0 persistent-superblock 1 device /dev/hda3 raid-disk 0 device /dev/hdc3 failed-disk 1 chunk-size 32 raiddev /dev/md2 raid-level 1 nr-raid-disks 2 nr-spare-disks 0 persistent-superblock 1 device /dev/hda5 raid-disk 0 device /dev/hdc5 failed-disk 1 chunk-size 32 raiddev /dev/md3 raid-level 1 nr-raid-disks 2 nr-spare-disks 0 persistent-superblock 1 device /dev/hda6 raid-disk 0 device /dev/hdc6 failed-disk 1 chunk-size 32 Для каждой пары совпадающих разделов на диске, из которых будут создаваться отдельные разделы массива, должен быть блок с директивой raiddev, объявляющий соответствующее разделу массива /dev/mdX устройство. Обратите внимание, что я использовал директиву failed-disk, которая позволяет запретить дублировать изменения первого диска на втором и которая указывает на второй диск, на /dev/hdc, с которого вы сейчас реально загрузили систему. Для подробной информации об возможных директивах этого файла можно прочитать в man 5 raidtab Создание RAID устройств После того, как вы создали /etc/raidtab уже пора окончательно создавать RAID. Запустите mkraid для каждого /dev/mdX, которые вы придумали в /etc/raidtab. Например так: # mkraid /dev/md0 Процесс создания массивов вы сможете посмотреть в псевдофайле /proc/mdstat, который вообще является очень полезным для мониторинга RAID подсистемы вашего компьютера. Сейчас например можете взглянуть, как выглядит система, у которой присутствует только половина массива, для каждого устройства, которые вы создали будет отдельная строчка. Примерно вот так: Personalities : [raid1] read_ahead 1024 sectors md0 : active raid1 hda1[0] 2104384 blocks [2/1] [U_] md1 : active raid1 hda3[0] 6345600 blocks [2/1] [U_] md2 : active raid1 hda5[0] 4200896 blocks [2/1] [U_] md3 : active raid1 hda6[0] 4795264 blocks [2/1] [U_] unused devices: Теперь наступает самое интересное, теперь, когда /dev/mdX созданы, пора создать на них файловые системы. # mkreiserfs /dev/md0 Или какую вы предпочитаете файловую систему, такую и делайте. Копирование операционной системы в RAID И снова здравствуйте! Вы уже практически подошли к самому интересному в создании RAID'а. Теперь вам надо скопировать все файлы со второго диска в raid-массив. Есть множество различных способов сделать это. Тут я опишу ни самый быстрый, ни самый красивый способ, но думаю этот способ будет ясно понят любым человеком, который в состоянии дочитать до этого места. Первое: монтируем новый / раздел к /mnt. # mount /dev/md0 /mnt Второе: создаем каталоги - точки монтирования других новых разделов. Не забудьте здесь указать ваши каталоги и ваши разделы. # mkdir -p /mnt/usr/local # mkdir -p /mnt/var # mkdir -p /mnt/home Третье: монтирует новые разделы. # mount /dev/md1 /mnt/usr/local # mount /dev/md2 /mnt/var # mount /dev/md3 /mnt/home Четвертое: копируем систему со второго винчестера на RAID. # cp -a /bin /mnt # cp -a /boot /mnt # cp -a /dev /mnt # cp -a /etc /mnt # cp -a /home /mnt # cp -a /lib /mnt # cp -a /root /mnt # cp -a /sbin /mnt # cp -a /tmp /mnt # cp -a /usr /mnt # cp -a /var /mnt # mkdir -p /mnt/mnt # mkdir -p /mnt/proc Пятое: исправляем /mnt/etc/fstab, чтобы он указывал на новые разделы, которые являются RAID массивом. Только убедитесь что вы редактируете fstab именно из /mnt/etc/fstab, а не с текущего / раздела. Загрузка с RAID массива Шестое и последнее: переконфигурирование LILO. Запускайте ваш любимый редактор и редактируйте /mnt/etc/lilo.conf. (Заметьте что редактируется lilo.conf, который лежит в RAID, не перепутайте). В нем вам нужно поправить две директивы boot и root. В итоге они должны указывать на устройство /dev/md0 (то есть на / раздел в RAID'e). Также вам нужно будет добавить опцию raid-extra-boot = mbr, которая появилась только в LILO 22.0, впрочем это неважно, все равно более старые версии не смогут загрузиться с /dev/md. В итоге ваш /mnt/etc/lilo.conf должен выглядеть примерно так: # LILO configuration file # generated by 'liloconfig' # # Start LILO global section boot = /dev/md0 raid-extra-boot = mbr #compact # faster, but won't work on all systems. # delay = 5 # Normal VGA console vga = normal # ramdisk = 0 # paranoia setting # End LILO global section # Linux bootable partition config begins image = /vmlinuz root = /dev/md0 label = Linux read-only # Non-UMSDOS filesystems should be mounted read-only for checking # Linux bootable partition config ends Теперь остается только установить LILO с этими новыми изменениями. Для этого у lilo предусмотрена опция -r, которая позволяет сменить корневой каталог до выполнения каких-либо операций: # lilo -r /mnt Теперь все. Перегружайтесь. Не забудьте только выставить в BIOS'е загрузку в первого винчестера. Дополнение зеркал Загрузились? Попробуйте проверьте командой df, откуда вы загрузились и куда: Filesystem 1k-blocks Used Available Use% Mounted on /dev/md0 2071288 566236 1399836 29% / /dev/md1 6245968 185484 5743204 4% /usr/local /dev/md2 4134832 3220 3921568 1% /var /dev/md3 4719868 38036 4442072 1% /home Похоже на RAID? Похоже, но только это не RAID. Вы наверное еще при загрузке наблюдали долгие протяжные ругательства на то, что система работает только с одной половиной. Сейчас мы находимся в точке, которая моделирует сбой одного винчестера. То есть как будто вы только что заменили отказавший винчестер и должны его разбить. Ситуация отличается только тем, что сейчас второй винчестер уже разбит на разделы, единственное что: неправильно разбит. Сейчас вам нужно изменить тип разделов на /dev/hdc с "Linux native" на "Linux raid autodetect". Если бы у вас был чистый винчестер, то сразу нужно было бы создавать разделы с типом 0xFD. Так что берите fdisk /dev/hdc и тренируйтесь восстанавливать. После создания/правки таблицы разделов вас скорее всего попросят перегрузиться. Теперь предпоследний шаг: дополнение зеркал. Здесь все очень просто. Выполняете raidhotadd mirror partition: # raidhotadd /dev/md0 /dev/hdc1 # raidhotadd /dev/md1 /dev/hdc3 # raidhotadd /dev/md2 /dev/hdc5 # raidhotadd /dev/md3 /dev/hdc6 и смотрите в /proc/mdstat, как RAID становится настоящим mirror'ом. В конечном итоге вы получите следующее: Personalities : [raid1] read_ahead 1024 sectors md0 : active raid1 hdc1[1] hda1[0] 2104384 blocks [2/2] [UU] md1 : active raid1 hdc3[1] hda3[0] 6345600 blocks [2/2] [UU] md2 : active raid1 hdc5[1] hda5[0] 4200896 blocks [2/2] [UU] md3 : active raid1 hdc6[1] hda6[0] 4795264 blocks [2/2] [UU] unused devices: Да, забыли последний шаг: поменяйте в /etc/raidtab директивы failed-disk на raid-disk. Поздравляю, теперь ваша система установлена на RAID 1 (mirroring). Заключение Теперь, если вы устанавливали Slackware Linux в минимальной установке, то самое время вернутся и продолжить установку необходимых пакетов. Также многие считают, что установка заканчивается только после пересборки ядра. Специально для таких хочу заметить, что для того чтобы вы смогли загрузиться с вашего RAID'а, поддержка "RAID support" и "RAID-1 (mirroring) mode" должны быть вкомпилены в ядро, а не собираться модулями.

<< Предыдущая ИНДЕКС Правка src Установить закладку Перейти на закладку Следующая >>

Обсуждение [ RSS ]
 
  • 1.1, Belen, 09:46, 24/05/2005 [ответить] [смотреть все]
  • +/
    Ага... а я как-то писал об установке 10-й слаки сразу на Soft-RAID:  http://linuz.pp.ru/mylin.php?id=19
    Это тоже работает
     
  • 1.2, Sergey, 16:33, 30/06/2005 [ответить] [смотреть все]
  • +/
    А нафиг морочиться с зеркалированием отдельных разделов, когда можно просто диски отзеркалить?
    Про это:
    >* Два одинаковых винчестера. (Использование >дисков разного размера возможно, но не >рекомендуется (Прим. пер.: интересно, почему?))
    для борьбы с амфибиогенной асфексией чтобы не было соблазна разметить и использовать несколько десятков мегабайт при не симметричном зеркале. Вреда от этого теоретически нету, но и пользы тоже - зачем в зеркальной системе "непривязанный" раздел? Разве что под swap его пустить..

     
     
  • 2.4, Pepelatc, 14:55, 19/02/2006 [^] [ответить] [смотреть все]
  • +/
    > ...можно просто диски отзеркалить...
    А как отзеркалить диски, а то везде в доках речь идеть только о зеркалировании разделов :(
     
  • 1.3, Антон, 12:47, 15/12/2005 [ответить] [смотреть все]
  • +/
    Мне статейка понравилась, с учётом того что я первый раз делаю зеркало на линухе. Описано хорошо. Только я ставил не на IDE а на SATA. Помучался однахо но к исходу дня всё заворкало ))))
     
  • 1.5, gnom, 22:53, 28/06/2006 [ответить] [смотреть все]
  • +/
    Попрубуйте по этой статье поставить на Slackware10.2
    :)))))))))
     
     
  • 2.6, guest, 07:38, 10/07/2006 [^] [ответить] [смотреть все]  
  • +/
    Попробовал...все нормально заработало.В чем смысл Вашего поста если не секрет?
    Намек на отсутсвие raidtools в системе? Если да то советую перечитать 1 абзац статьи.
     
  • 1.7, Tyler, 11:38, 22/01/2007 [ответить] [смотреть все]  
  • +/
    Какая скорость записи на таком зеркале?
     
  • 1.8, TtY, 13:11, 26/07/2007 [ответить] [смотреть все]  
  • +/
    Эта же статейка на англ.:
    http://slacksite.com/slackware/raid.html
     
  • 1.9, Николай, 09:00, 22/01/2010 [ответить] [смотреть все]  
  • +/
    И комментарии, без которых, если делать точно по приведенной статье, у Вас ничего не заработает. Например, не запишется загрузчик в MBR, если использовать команду, которую приводит автор. А далее, если после дополнения зеркал второй раз не выполнить команду lilo, то после аппаратного выхода из строя одного из дисков, система у Вас не загрузится со второго зеркального диска и т.д.
    http://www.futureservice.ru/index.php?cid=125
     

    Ваш комментарий
    Имя:         
    E-Mail:      
    Заголовок:
    Текст:





      Закладки на сайте
      Проследить за страницей
    Created 1996-2017 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    Hosting by Ihor