Как заменить неисправный диск в программном RAID с использованием LVM

Вопрос или проблема

один из серверов SuSE 12 LinuxServers сообщил о сбое диска. К счастью, сервер базы данных использует программный RAID, поэтому система всё ещё работает. Но, как рекомендовано, мы хотели бы заменить неисправный диск на новый и перестроить программный RAID на нём.

Информация о системе:

Всего 4 внутренних диска. sda, sdb, sdc и sdd

Разделы fdisk:

fdisk -l 
Disk /dev/sdb: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors 
Units: sectors of 1 * 512 = 512 bytes 
Sector size (logical/physical): 512 bytes / 4096 bytes 
I/O size (minimum/optimal): 4096 bytes / 4096 bytes 
Disklabel type: dos 
Disk identifier: 0x0007d757

Device    Boot   Start           End    Sectors   Size Id Type 
/dev/sdb1 *          2048    2105343    2103296     1G fd Linux raid autodetect 
/dev/sdb2         2105344   39858175   37752832    18G fd Linux raid autodetect 
/dev/sdb3        39858176 1953523711 1913665536 912.5G fd Linux raid autodetect

Disk /dev/sdc: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors
Units: sectors of 1 * 512 = 512 bytes 
Sector size (logical/physical): 512 bytes / 4096 bytes 
I/O size (minimum/optimal): 4096 bytes / 4096 bytes 
Disklabel type: dos 
Disk identifier: 0x000a0e8a

Device    Boot Start        End Sectors      Size Id Type 
/dev/sdc1       2048 1953523711 1953521664 931.5G fd Linux raid autodetect

Disk /dev/sdd: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors
Units: sectors of 1 * 512 = 512 bytes 
Sector size (logical/physical): 512 bytes / 4096 bytes 
I/O size (minimum/optimal): 4096 bytes / 4096 bytes 
Disklabel type: dos 
Disk identifier: 0x000caaad

Device    Boot Start        End    Sectors Size   Id Type 
/dev/sdd1       2048 1953523711 1953521664 931.5G fd Linux raid autodetect

Программный RAID –> sda + sdb (sda – сбойный диск) Программный RAID –> sdb + sdc

DBServer# cat /proc/mdstat 
Personalities : [raid1] 

md3 : active raid1 sdc1[0] sdd1[1] 976760640 blocks super 1.0 [2/2] [UU] bitmap: 2/8 pages [8KB], 65536KB chunk

md0 : active raid1 sdb1[1] sda10 1051584 blocks super 1.0 [2/1] [_U] bitmap: 1/1 pages [4KB], 65536KB chunk

md2 : active raid1 sdb3[1] sda30 956832576 blocks super 1.0 [2/1] [_U] bitmap: 2/8 pages [8KB], 65536KB chunk

md1 : active raid1 sdb2[1] sda20 18876288 blocks super 1.0 [2/1] [_U]  bitmap: 0/1 pages [0KB], 65536KB chunk 

unused devices:

Таким образом, в md0, md1 и md2 имеются сбойные устройства, а именно sda1, sda2 и sda3

Обратите внимание, что также определены 2 VG, как показано ниже,

1 VG – system (/dev/md2) 2 VG – ora_db (/dev/md3)

pvdisplay
--- Physical volume --- 
PV Name /dev/md3 
VG Name ora_db 
PV Size 931.51 GiB / not usable 3.81 MiB 
Allocatable yes 
PE Size 4.00 MiB 
Total PE 238466 
Free PE 84866 
Allocated PE 153600 
PV UUID vgPdWQ-x6CW-vvdF-moxh-FKyb-wpSU-NdJqSm

--- Physical volume --- 
PV Name /dev/md2 
VG Name system 
PV Size 912.51 GiB / not usable 2.81 MiB 
Allocatable yes 
PE Size 4.00 MiB 
Total PE 233601 
Free PE 182401 
Allocated PE 51200 
PV UUID rdff2n-ztxd-lcBY-nAqk-8O9u-fnFG-BVI91v

Файл grub.conf показывает: (Соответствующая часть)

if [ x$feature_default_font_path = xy ] ; then
  font=unicode 
else
  insmod part_msdos msdos 
  insmod diskfilter mdraid1x lvm 
  insmod ext2 
  set root="lvmid/m7AEp0-79EG-D2Vi-ELzE-BTzh-C8mN-CLxrpz/S0eZEl-PlBX-E1ZL-oCwL-SmUx-4Qe4-Mz9NHX"
  if [ x$feature_platform_search_hint = xy ]; then 
    search --no-floppy --fs-uuid --set=root --hint="lvmid/m7AEp0-79EG-D2Vi-ELzE-BTzh-C8mN-CLxrpz/S0eZEl-PlBX-E1ZL-oCwL-SmUx-4Qe4-Mz9NHX" 7c2e3a9c-5f5b-47e3-8a0a-d1e66f12747c 
  else 
    search --no-floppy --fs-uuid --set=root 7c2e3a9c-5f5b-47e3-8a0a-d1e66f12747c 
  fi 
  font="/share/grub2/unicode.pf2" 
fi

if loadfont $font ; then 
  set gfxmode=auto 
  load_video 
  insmod gfxterm
  set locale_dir=$prefix/locale 
  set lang=POSIX 
  insmod gettext 
fi
terminal_output gfxterm 
insmod part_msdos msdos 
insmod diskfilter mdraid1x 
insmod ext2 
set root="mduuid/531cd341e2c7d5a71c542ad04d9ea589" 
if [ x$feature_platform_search_hint = xy ]; then 
  search --no-floppy --fs-uuid --set=root --hint="mduuid/531cd341e2c7d5a71c542ad04d9ea589" 96c11697-c3b7-4f11-90fc-3aef207db526 
else 
  search --no-floppy --fs-uuid --set=root 96c11697-c3b7-4f11-90fc-3aef207db526 
fi

Цитата: Процедура следующая,

Сначала отмечаем /dev/sda1 как сбойный:

mdadm --manage /dev/md0 --fail /dev/sda1

Затем удаляем /dev/sda1 из /dev/md0:

mdadm --manage /dev/md0 --remove /dev/sda1

Теперь повторяем эти же действия снова для /dev/sda2 и sda3 (часть /dev/md1 и /dev/md2)

Затем выключаем систему:

shutdown -h now 

и заменяем старый жесткий диск /dev/sdb на новый

После вставки нового SATA диска /dev/sda загружаем систему.

Затем создаем те же разделы, что и на /dev/sda. Мы можем сделать это одной простой командой:

sfdisk -d /dev/sdb | sfdisk /dev/sda

Проверяем, имеют ли оба диска те же разделы (fdisk -l)
8.Теперь добавляем /dev/sda1 в /dev/md0 и /dev/sda2 в /dev/md1 и /dev/sda3 в /dev/md3:

mdadm --manage /dev/md0 --add /dev/sda1 mdadm --manage /dev/md1 --add /dev/sda2 mdadm --manage /dev/md2 --add /dev/sda3

Подтвердите, что синхронизация проходит

cat /proc/mdstat

Пожалуйста, сообщите мне, если я что-то упустил. 2 важных момента, которые я полагаю: как мне правильно следить за lvm и grub в этом случае.

Нужно ли мне делать что-то дополнительно, чтобы следить за этим или команда sfdisk -d /dev/sdb | sfdisk /dev/sda должна позаботиться и о LVM.

Как мне следить за grub в этом случае? Так как grub.conf показывает записи, относящиеся как к LVM, так и к MDADM. Нужно ли что-то менять здесь, прежде чем я выключу систему?

Я понимаю, что система имеет 2 указателя для наблюдения за mdadm+lvm. Что усложнило всё. Иначе не проще ли было бы настроить совершенно новую систему?

Ещё ничего не пробовали. Только собираем информацию.

grub.cfg

### BEGIN /etc/grub.d/00_header ###
if [ -f ${config_directory}/grubenv ]; then
  load_env -f ${config_directory}/grubenv
elif [ -s $prefix/grubenv ]; then
  load_env
fi

if [ "${env_block}" ] ; then
  load_env -f "${env_block}"
fi

if [ "${next_entry}" ] ; then
   set default="${next_entry}"
   set next_entry=
   save_env next_entry
   if [ "${env_block}" ] ; then
     save_env -f "${env_block}" next_entry
   fi
   set boot_once=true
else
   set default="${saved_entry}"
fi

if [ x"${feature_menuentry_id}" = xy ]; then
  menuentry_id_option="--id"
else
  menuentry_id_option=""
fi

export menuentry_id_option

if [ "${prev_saved_entry}" ]; then
  set saved_entry="${prev_saved_entry}"
  save_env saved_entry
  set prev_saved_entry=
  save_env prev_saved_entry
  set boot_once=true
fi

function savedefault {
  if [ -z "${boot_once}" ]; then
    saved_entry="${chosen}"
    save_env saved_entry
  fi
}

function load_video {
  if [ x$feature_all_video_module = xy ]; then
    insmod all_video
  else
    insmod efi_gop
    insmod efi_uga
    insmod ieee1275_fb
    insmod vbe
    insmod vga
    insmod video_bochs
    insmod video_cirrus
  fi
}

if [ x$feature_default_font_path = xy ] ; then
   font=unicode
else
insmod part_msdos msdos
insmod diskfilter mdraid1x lvm
insmod ext2
set root="lvmid/m7AEp0-79EG-D2Vi-ELzE-BTzh-C8mN-CLxrpz/S0eZEl-PlBX-E1ZL-oCwL-SmUx-4Qe4-Mz9NHX"
if [ x$feature_platform_search_hint = xy ]; then
  search --no-floppy --fs-uuid --set=root --hint="lvmid/m7AEp0-79EG-D2Vi-ELzE-BTzh-C8mN-CLxrpz/S0eZEl-PlBX-E1ZL-oCwL-SmUx-4Qe4-Mz9NHX"  7c2e3a9c-5f5b-47e3-8a0a-d1e66f12747c
else
  search --no-floppy --fs-uuid --set=root 7c2e3a9c-5f5b-47e3-8a0a-d1e66f12747c
fi
    font="/share/grub2/unicode.pf2"
fi

if loadfont $font ; then
  set gfxmode=auto
  load_video
  insmod gfxterm
  set locale_dir=$prefix/locale
  set lang=POSIX
  insmod gettext
fi
terminal_output gfxterm
insmod part_msdos msdos
insmod diskfilter mdraid1x
insmod ext2
set root="mduuid/531cd341e2c7d5a71c542ad04d9ea589"
if [ x$feature_platform_search_hint = xy ]; then
  search --no-floppy --fs-uuid --set=root --hint="mduuid/531cd341e2c7d5a71c542ad04d9ea589"  96c11697-c3b7-4f11-90fc-3aef207db526
else
  search --no-floppy --fs-uuid --set=root 96c11697-c3b7-4f11-90fc-3aef207db526
fi
insmod gfxmenu
loadfont ($root)/grub2/themes/SLE/DejaVuSans-Bold14.pf2
loadfont ($root)/grub2/themes/SLE/DejaVuSans10.pf2
loadfont ($root)/grub2/themes/SLE/DejaVuSans12.pf2
loadfont ($root)/grub2/themes/SLE/ascii.pf2
insmod png
set theme=($root)/grub2/themes/SLE/theme.txt
export theme
if [ x${boot_once} = xtrue ]; then
  set timeout=0
elif [ x$feature_timeout_style = xy ] ; then
  set timeout_style=menu
  set timeout=8
# Fallback normal timeout code in case the timeout_style feature is
# unavailable.
else
  set timeout=8
fi
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/10_linux ###
menuentry 'SLES12'  --class sles12 --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-690785da-f0f0-4250-b693-5a008acbba10' {
        load_video
        set gfxpayload=keep
        insmod gzio
        insmod part_msdos msdos
        insmod diskfilter mdraid1x
        insmod ext2
        set root="mduuid/531cd341e2c7d5a71c542ad04d9ea589"
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint="mduuid/531cd341e2c7d5a71c542ad04d9ea589"  96c11697-c3b7-4f11-90fc-3aef207db526
        else
          search --no-floppy --fs-uuid --set=root 96c11697-c3b7-4f11-90fc-3aef207db526
        fi
        echo    'Loading Linux 3.12.28-4-default ...'
        linux   /vmlinuz-3.12.28-4-default root=UUID=690785da-f0f0-4250-b693-5a008acbba10   resume=/dev/md1 splash=silent quiet crashkernel=232M-:116M  showopts
        echo    'Loading initial ramdisk ...'
        initrd  /initrd-3.12.28-4-default
}
submenu 'Advanced options for SLES12' --hotkey=1 $menuentry_id_option 'gnulinux-advanced-690785da-f0f0-4250-b693-5a008acbba10' {
        menuentry 'SLES12, with Linux 3.12.28-4-default' --hotkey=2 --class sles12 --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.12.28-4-default-advanced-690785da-f0f0-4250-b693-

5a008acbba10' {
                load_video
                set gfxpayload=keep
                insmod gzio
                insmod part_msdos msdos
                insmod diskfilter mdraid1x
                insmod ext2
                set root="mduuid/531cd341e2c7d5a71c542ad04d9ea589"
                if [ x$feature_platform_search_hint = xy ]; then
                  search --no-floppy --fs-uuid --set=root --hint="mduuid/531cd341e2c7d5a71c542ad04d9ea589"  96c11697-c3b7-4f11-90fc-3aef207db526
                else
                  search --no-floppy --fs-uuid --set=root 96c11697-c3b7-4f11-90fc-3aef207db526
                fi
                echo    'Loading Linux 3.12.28-4-default ...'
                linux   /vmlinuz-3.12.28-4-default root=UUID=690785da-f0f0-4250-b693-5a008acbba10   resume=/dev/md1 splash=silent quiet crashkernel=232M-:116M  showopts
                echo    'Loading initial ramdisk ...'
                initrd  /initrd-3.12.28-4-default
        }
        menuentry 'SLES12, with Linux 3.12.28-4-default (recovery mode)' --hotkey=3 --class sles12 --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.12.28-4-default-recovery-

690785da-f0f0-4250-b693-5a008acbba10' {
                load_video
                set gfxpayload=keep
                insmod gzio
                insmod part_msdos msdos
                insmod diskfilter mdraid1x
                insmod ext2
                set root="mduuid/531cd341e2c7d5a71c542ad04d9ea589"
                if [ x$feature_platform_search_hint = xy ]; then
                  search --no-floppy --fs-uuid --set=root --hint="mduuid/531cd341e2c7d5a71c542ad04d9ea589"  96c11697-c3b7-4f11-90fc-3aef207db526
                else
                  search --no-floppy --fs-uuid --set=root 96c11697-c3b7-4f11-90fc-3aef207db526
                fi
                echo    'Loading Linux 3.12.28-4-default ...'
                linux   /vmlinuz-3.12.28-4-default root=UUID=690785da-f0f0-4250-b693-5a008acbba10  showopts apm=off noresume edd=off powersaved=off nohz=off highres=off processor.max_cstate=1 nomodeset 

x11failsafe crashkernel=232M-:116M
                echo    'Loading initial ramdisk ...'
                initrd  /initrd-3.12.28-4-default
        }
}

### END /etc/grub.d/10_linux ###

### BEGIN /etc/grub.d/20_linux_xen ###
### END /etc/grub.d/20_linux_xen ###

### BEGIN /etc/grub.d/20_memtest86+ ###
### END /etc/grub.d/20_memtest86+ ###

### BEGIN /etc/grub.d/30_os-prober ###
### END /etc/grub.d/30_os-prober ###

### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
### END /etc/grub.d/40_custom ###

### BEGIN /etc/grub.d/41_custom ###
if [ -f  ${config_directory}/custom.cfg ]; then
  source ${config_directory}/custom.cfg
elif [ -z "${config_directory}" -a -f  $prefix/custom.cfg ]; then
  source $prefix/custom.cfg;
fi
### END /etc/grub.d/41_custom ###

### BEGIN /etc/grub.d/80_suse_btrfs_snapshot ###
### END /etc/grub.d/80_suse_btrfs_snapshot ###

### BEGIN /etc/grub.d/90_persistent ###
### END /etc/grub.d/90_persistent ###

Я установил grub на /dev/sdb. Пожалуйста, найдите вывод.

# grub2-install /dev/sdb
Installing for i386-pc platform.
error: cannot read `/dev/sda': Input/output error.
error: cannot read `/dev/sda': Input/output error.
error: cannot read `/dev/sda': Input/output error.
error: cannot read `/dev/sda': Input/output error.
error: cannot read `/dev/sda': Input/output error.
grub2-install: warning: Couldn't find physical volume `(null)'. Some modules may be missing from core image..
error: cannot read `/dev/sda': Input/output error.
error: cannot read `/dev/sda': Input/output error.
error: cannot read `/dev/sda': Input/output error.
error: cannot read `/dev/sda': Input/output error.
error: cannot read `/dev/sda': Input/output error.
grub2-install: warning: Couldn't find physical volume `(null)'. Some modules may be missing from core image..
Installation finished. No error reported.

Не уверен, почему это дало ошибки sda.

А затем снова перепроверено с помощью следующей команды.

  # dd bs=512 count=1 if=/dev/sdb 2>/dev/null| strings
    ZRr=
    `|f
    \|f1
    GRUB
    Geom
    Hard Disk
    Read
     Error

LVM использует устройства /dev/md*, и соответствующие устройства /dev/sd* заблокированы программным RAID для исключительного доступа. Пока работает RAID, LVM не обращает внимания на устройства /dev/sd*, которые являются частью массивов программного RAID.

Таким образом, пока обе половины любого RAID-массива не выходят из строя одновременно, вам вообще не нужно ничего делать для LVM.

С GRUB ситуация иная. Поскольку программный RAID зеркалирует только то, что находится в разделах компонентов RAID, Master Boot Record и часть GRUB, встроенная между MBR и началом первого раздела, не будут дублироваться RAID. Однако это будет легко исправить: просто запустите grub-install /dev/sda и grub-install /dev/sdb, чтобы убедиться, что на обеих копиях вашего системного диска установлен загрузчик.

Ваш фрагмент grub.conf включает ссылки на lvmid и mduuid, поэтому он уже правильный для использования с RAID.

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

Однако, если вы пропустили этот шаг изначально, или если вы даже немного не уверены, возможно, лучше выполнить grub-install /dev/sdb прямо сейчас, прежде чем перезагружать систему, чтобы убедиться, что вторичная копия вашего системного диска (которая теперь является единственной хорошей оставшейся копией) действительно имеет загрузчик на нём.

Чтобы проверить, установлен ли GRUB на вашем /dev/sdb, вы можете выполнить эту команду:

dd if=/dev/sdb bs=512 count=1 2>/dev/null | od -t x1z -A x

Если ответ указывает на то, что байты от начала MBR до байта 0x1c0 равны нулю, значит, GRUB определённо не установлен на /dev/sdb.

Пример вывода без GRUB:

000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
*
0001c0 02 00 ee fe bf 66 01 00 00 00 ff ff ff ff 00 00  >.....f..........<
0001d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
*
0001f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa  >..............U.<
000200

Обратите внимание, что первая строка состоит из нулей, а последующие строки до 0001c0 пропущены od (отмечены звездочкой), так как они также полностью состоят из нулей.

Если GRUB установлен, вы не должны увидеть линий из нулей до 0001c0, и должна появиться строка GRUB где-то в текстовом представлении справа.

Пример вывода с установленным GRUB:

000000 eb 63 90 10 8e d0 bc 00 b0 b8 00 00 8e d8 8e c0  >.c..............<
000010 fb be 00 7c bf 00 06 b9 00 02 f3 a4 ea 21 06 00  >...|.........!..<
000020 00 be be 07 38 04 75 0b 83 c6 10 81 fe fe 07 75  >....8.u........u<
000030 f3 eb 16 b4 02 b0 01 bb 00 7c b2 80 8a 74 01 8b  >.........|...t..<
000040 4c 02 cd 13 ea 00 7c 00 00 eb fe 00 00 00 00 00  >L.....|.........<
000050 00 00 00 00 00 00 00 00 00 00 00 80 01 00 00 00  >................<
000060 00 00 00 00 ff fa 90 90 f6 c2 80 74 05 f6 c2 70  >...........t...p<
000070 74 02 b2 80 ea 79 7c 00 00 31 c0 8e d8 8e d0 bc  >t....y|..1......<
000080 00 20 fb a0 64 7c 3c ff 74 02 88 c2 52 be 80 7d  >. ..d|<.t...R..}<
000090 e8 17 01 be 05 7c b4 41 bb aa 55 cd 13 5a 52 72  >.....|.A..U..ZRr<
0000a0 3d 81 fb 55 aa 75 37 83 e1 01 74 32 31 c0 89 44  >=..U.u7...t21..D<
0000b0 04 40 88 44 ff 89 44 02 c7 04 10 00 66 8b 1e 5c  >[email protected]..\<
0000c0 7c 66 89 5c 08 66 8b 1e 60 7c 66 89 5c 0c c7 44  >|f.\.f..`|f.\..D<
0000d0 06 00 70 b4 42 cd 13 72 05 bb 00 70 eb 76 b4 08  >..p.B..r...p.v..<
0000e0 cd 13 73 0d 5a 84 d2 0f 83 d8 00 be 8b 7d e9 82  >..s.Z........}..<
0000f0 00 66 0f b6 c6 88 64 ff 40 66 89 44 04 0f b6 d1  >[email protected]....<
000100 c1 e2 02 88 e8 88 f4 40 89 44 08 0f b6 c2 c0 e8  >[email protected]......<
000110 02 66 89 04 66 a1 60 7c 66 09 c0 75 4e 66 a1 5c  >.f..f.`|f..uNf.\<
000120 7c 66 31 d2 66 f7 34 88 d1 31 d2 66 f7 74 04 3b  >|f1.f.4..1.f.t.;<
000130 44 08 7d 37 fe c1 88 c5 30 c0 c1 e8 02 08 c1 88  >D.}7....0.......<
000140 d0 5a 88 c6 bb 00 70 8e c3 31 db b8 01 02 cd 13  >.Z....p..1......<
000150 72 1e 8c c3 60 1e b9 00 01 8e db 31 f6 bf 00 80  >r...`......1....<
000160 8e c6 fc f3 a5 1f 61 ff 26 5a 7c be 86 7d eb 03  >......a.&Z|..}..<
000170 be 95 7d e8 34 00 be 9a 7d e8 2e 00 cd 18 eb fe  >..}.4...}.......<
000180 47 52 55 42 20 00 47 65 6f 6d 00 48 61 72 64 20  >GRUB .Geom.Hard <
000190 44 69 73 6b 00 52 65 61 64 00 20 45 72 72 6f 72  >Disk.Read. Error<
0001a0 0d 0a 00 bb 01 00 b4 0e cd 10 ac 3c 00 75 f4 c3  >...........<.u..<
0001b0 00 00 00 00 00 00 00 00 23 c1 00 00 00 00 80 20  >........#...... <
0001c0 21 00 8e fe ff ff 00 08 00 00 00 f8 ff 00 00 00  >!...............<
0001d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
*
0001f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa  >..............U.<
000200

Иметь загрузчик на диске с программным RAID всегда сложно, поэтому я рекомендую администраторам систем с программным RAID знать, как использовать опцию загрузки восстановления с загрузочного носителя. Вот официальные инструкции для загрузки восстановления на SuSE 11 и 12.

В этом случае, если система не сможет загрузиться после удаления сбойного диска, вам нужно будет сначала выполнить процедуру в этом документе, а затем запустить grub-install /dev/sda (так как оставшаяся половина RAID-набора, вероятно, будет обнаружена как /dev/sda после удаления сбойного диска).

Ответ или решение

Обработка замены поврежденного диска в конфигурации программного RAID с использованием LVM на сервере под управлением SuSE Linux 12 требует точного подхода и понимания всех компонентов системы. Рассмотрим шаг за шагом, как выполнить эту задачу, начиная с идентификации и удаления проблемного диска и заканчивая обновлением GRUB.

Теория

Программный RAID (Redundant Array of Independent Disks) — это технология, которая позволяет объединять несколько физических дисков в массив, предоставляющий повышенную отказоустойчивость, производительность или оба эти преимущества. В данном случае используется RAID 1, который предлагает зеркалирование, обеспечивая сохранение данных в случае отказа одного из дисков.

LVM (Logical Volume Manager) поверх RAID позволяет создавать логические тома, которые упрощают управление объемами дисков и добавляют гибкость в модернизацию серверов. Однако важно помнить, что физические устройства, участвующие в RAID, должны быть полностью работоспособными для полноценного функционирования LVM.

Пример

Ваше текущее состояние системы:

  • Всего дисков: sda, sdb, sdc, sdd.
  • Поврежденный диск: sda.
  • Конфигурация RAID: md0, md1, md2, md3.
  • Используемые VG (группы томов): system и ora_db, размещенные на /dev/md2 и /dev/md3 соответственно.

Применение

  1. Идентификация и удаление поврежденного диска.

    • Сначала необходимо пометить части дерева RAID на sda как ошибочные и удалить их:
      mdadm --manage /dev/md0 --fail /dev/sda1
      mdadm --manage /dev/md0 --remove /dev/sda1
      mdadm --manage /dev/md1 --fail /dev/sda2
      mdadm --manage /dev/md1 --remove /dev/sda2
      mdadm --manage /dev/md2 --fail /dev/sda3
      mdadm --manage /dev/md2 --remove /dev/sda3
  2. Замена диска.

    • Отключите систему:
      shutdown -h now
    • Физически замените поврежденный диск sda новым.
  3. Подготовка нового диска.

    • После загрузки системы создайте аналогичную таблицу разделов на новом диске:
      sfdisk -d /dev/sdb | sfdisk /dev/sda
  4. Добавление нового диска в массив RAID.

    • После проверки совпадения разделов добавьте новый диск в массивы RAID:
      mdadm --manage /dev/md0 --add /dev/sda1
      mdadm --manage /dev/md1 --add /dev/sda2
      mdadm --manage /dev/md2 --add /dev/sda3
  5. Обновление загрузочного сектора GRUB.

    • Установите GRUB на новый диск sda:

      grub-install /dev/sda
      grub-install /dev/sdb
    • Проверьте правильность установки GRUB:

      dd if=/dev/sda bs=512 count=1 | strings | grep "GRUB"
  6. Подтверждение синхронизации RAID.

    • Убедитесь, что все синхронизации завершены:
      cat /proc/mdstat
  7. Дополнительные рекомендации.

    • Убедитесь, что в случае сбоя процессы восстановления зубодробительно документированы и что администраторы знают, как использовать опцию rescue boot из носителей установки SUSE для восстановления работоспособности системы.

Необходимость интервенции в LVM в случае изменения RAID минимальна, если RAID продолжает поддерживать целостность данных. Однако об успешной установке GRUB на новые части массива RAID необходимо позаботиться дополнительно.

Для обеспечения высокой степени готовности, знание и готовность использовать средства аварийного восстановления крайне важны. Загрузка в режиме восстановления из дистрибутива и повторное выполнение grub-install, если потребуется, после замены диска гарантирует, что новый диск будет правильно работать как часть вашего программного RAID/LVM массива.

Оцените материал
Добавить комментарий

Капча загружается...