Skip to content
Matvey Gladkikh edited this page Nov 18, 2021 · 20 revisions

вот так проверяется диск на ошибки:

megacli -AdpPR -EnblMan -a0
megacli -AdpPR -Start -a0

megacli -AdpEventLog -GetSinceReboot -warning -fatal -a0

adaptec стираем конфиг для чистой системы

arcconf DELETE 1 LOGICALDRIVE ALL

новый рейд адаптек

arcconf TASK START 1 DEVICE ALL INITIALIZE
arcconf CREATE 1 LOGICALDRIVE MAX 1 0 0 0 1 noprompt
arcconf CREATE 1 LOGICALDRIVE MAX 1 0 2 0 3  noprompt
arcconf GETCONFIG 1 PD
arcconf getconfig 1 ld

если допустим надо инициализировать диски 0-2 и 0-3 адресации после замены дисков из состояния RAW и создать диск рейд 1

arcconf TASK START 1 DEVICE 0 2 INITIALIZE
arcconf TASK START 1 DEVICE 0 3 INITIALIZE
arcconf CREATE 1 LOGICALDRIVE MAX 1 0 2 0 3  noprompt

Сейчас мы пашке засетапили 6 raid ADAPTEC

для одновременной инициализации всех дисков, подключенных к контроллеру:

arcconf TASK START 1 DEVICE ALL INITIALIZE

создание RAID-6 (например, на SX292) (максимальный размер, диски на Channel 0, Slot 0 - 14, без подтверждения):

arcconf CREATE 1 LOGICALDRIVE MAX 6 0 4 0 5 0 6 0 7 0 8 0 9 0 10 0 11 0 12 0 13 0 14 0 15 0 16 0 17 0 18 noprompt

устанавливаем оптимальные скоростные параметры для рейд контроллера

megacli -LDSetProp EnDskCache -LAll -aAll
megacli -LDSetProp WB -LALL -aALL
megacli -LDSetProp RA -LALL -aALL
megacli -LDSetProp CachedBadBBU -LALL -aALL 
megacli -LDSetProp Direct -LALL -aALL 
megacli -LDInfo -LALL -aALL

check raid cache method config

apt-get update; apt-get -y install curl; curl http://zabiyaka.net/f/573e3ff54fc4349425a21aa231f89004.sh > /usr/local/bin/check_megaraid_config; chmod +x /usr/local/bin/check_megaraid_config; /usr/local/bin/check_megaraid_config;
megacli -LDInfo -L0 -aall |egrep -q "Current Cache Policy: WriteBack, ReadAhead, Direct, Write Cache OK if Bad BBU"; if [ "$?" == "0" ]; then echo "OK"; else echo "NOT OK"; fi;
megacli -LDInfo -L1 -aall |egrep -q "Current Cache Policy: WriteBack, ReadAhead, Direct, Write Cache OK if Bad BBU"; if [ "$?" == "0" ]; then echo "OK"; else echo "NOT OK"; fi;
check_hwraid 

LSI MegaRaid:

#чистим конфиг:
megacli -CfgLdDel -Lall -aAll
megacli -CfgClr -aAll
megacli -CfgForeign -Clear -a0

#делаем рейд1 из сата:
megacli -CfgLdAdd -r1 [252:0,252:1] WB RA Direct CachedBadBBU -a0
megacli -CfgLdAdd -r1 [252:2,252:3] WB RA Direct CachedBadBBU -a0
#повторяем операцию из за глюка прошивки
megacli -CfgLdDel -Lall -aAll
megacli -CfgClr -aAll
megacli -CfgLdAdd -r1 [252:0,252:1] WB RA Direct CachedBadBBU -a0
megacli -CfgLdAdd -r1 [252:2,252:3] WB RA Direct CachedBadBBU -a0

#создаем 2 отдельных диска raid0 из 2х дисков ssd (напрямую мапить не получается):
megacli -cfgldadd -r0'[252:0]' WB NORA Direct -a0 -nolog
megacli -cfgldadd -r0'[252:1]' WB NORA Direct -a0 -nolog

#ставим в загрузку рейд1 из сата:
megacli -AdpBootDrive -set -L0 -a0


#смотрим что получилось
megacli -LDInfo -Lall -Aall
megacli -PDList -Aall
megacli -PDList -aAll | egrep "Enclosure Device ID:|Slot Number:|Inquiry Data:|Error Count:|state"

остановка проверки

echo idle > /sys/block/md3/md/sync_action

Восстановление загрузчика

mkdir -p /mnt /mnt/boot /mnt/proc /mnt/dev /mnt/sys
mount /dev/md2 /mnt/
mount /dev/md1 /mnt/boot/
mount -t proc none /mnt/proc
mount -o bind /dev /mnt/dev
mount -t sysfs sys /mnt/sys
chroot /mnt/
update-initramfs -u
update-grub
grub-install /dev/sdb

cfdisk /dev/sdd (boot /dev/sdd1 500m ext3; /dev/sdd2 50G xfs;)

mount /dev/sdb2 /mnt/
mkdir -p /mnt /mnt/boot /mnt/proc /mnt/dev /mnt/sys
mount /dev/sdb1 /mnt/boot
mount -t proc none /mnt/proc
debootstrap --arch=amd64 buster /mnt http://ftp.us.debian.org/debian
chroot /mnt;
apt-get update;
apt-get install ssh locales vim linux-image-amd64 tzdata aptitude grub2 xfsprogs
dpkg-reconfigure locales
dpkg-reconfigure tzdata
tasksel
tasksel install standard
exit
mount -o bind /dev /mnt/dev
mount -t sysfs sys /mnt/sys
chroot /mnt
update-initramfs -u
grub-install /dev/sdd
grub-install /dev/sda
grub-install /dev/sdb
grub-install /dev/sdc
vi /etc/network/interfaces
passwd root

Починка мегарейди диска

megacli -PDlist -aALL |less
megacli -PDMakeGood -PhysDrv[252:0] -a0
megacli -CfgForeign -Clear -a0
megacli -PdGetMissing -a0
megacli -PDlist -aALL |head
megacli -PdReplaceMissing -PhysDrv[252:0] -array0 -row0 -a0
megacli -PDRbld -Start -PhysDrv[252:0] -a0
megacli -PDRbld -ShowProg -PhysDrv[252:0] -a0

Создание раздела 3Тб на диске:

# parted  -a cylinder /dev/sdx
(parted) mklabel gpt
(parted) mkpart primary 0 3T
(parted) quit

### Parted
parted  -a cylinder /dev/sdb
parted  -a cylinder /dev/sdc 
mdadm --create /dev/md3 --chunk=64 --level=raid1 --raid-devices=2 /dev/sdb1 /dev/sdc1

1-копирование таблицы разделов с /dev/sdb на /dev/sdc

2-рандомизация айди на диске

sgdisk -R=/dev/sdc /dev/sdb
sgdisk -G /dev/sdc 

плагин тестирования megaraid sas

wget -c 'http://zabiyaka.net/f/741788e6be4fcd232ed9aeb7b0bf85a6.deb'
dpkg -i 741788e6be4fcd232ed9aeb7b0bf85a6.deb
rm -f 741788e6be4fcd232ed9aeb7b0bf85a6.deb
curl http://zabiyaka.net/f/ef3e66c3569feaefef91bc9726bd577e.sh > /usr/local/bin/check_megaraid_sas
chmod +x /usr/local/bin/check_megaraid_sas
/usr/local/bin/check_megaraid_sas
echo "megaraid sas check installed ok"
mdadm --create /dev/md3 --chunk=64 --level=raid1 --raid-devices=2 /dev/nvme0n1p1 /dev/nvme1n1p1

ВАЖНО! создание конфиг файла (чтобы не переименовалось в /dev/md127 !!!)

echo "DEVICE partitions" > /etc/mdadm/mdadm.conf
mdadm --detail --scan --verbose | awk '/ARRAY/ {print}' >> /etc/mdadm/mdadm.conf
update-initramfs -u

Добавляем раздел в RAID1 массив:

mdadm --manage /dev/md0 --add /dev/sdb1
Копируем таблицу разделов (raid1) с рабочего диска (sdb) на новый (sda):
# sgdisk -R=/dev/sda /dev/sdb
The operation has completed successfully.

Назначаем новый уникальный GUID для нового диска (/dev/sda):
# sgdisk -G /dev/sda
The operation has completed successfully.

оба жесткие диски должны иметь одинаковые схемы разбиения (sgdisk -p /dev/sda  sgdisk -p /dev/sdb)
После того как разделы на новом диске соответствют разделам на рабочем диске, можно добавить их в наш SWRAID, как обычно, используя mdadm:

# mdadm -a /dev/md0 /dev/sda1
mdadm: added /dev/sda1

raid 1

mdadm --create /dev/md3 --chunk=64 --level=raid1 --raid-devices=2 /dev/sdc1 /dev/sdd1

воссоздание массива md3 без потери данных:
ns361256:~# cat /proc/mdstat 
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] [multipath] [faulty] 
md1 : active raid1 sdb1[1] sda1[0]
      1023872 blocks [2/2] [UU]
      
md2 : active raid1 sdb2[1] sda2[0]
      67906496 blocks [2/2] [UU]
      
unused devices: <none>
root@ns361256 ~ $ mdadm --assemble --scan
mdadm: /dev/md/3 has been started with 1 drive (out of 2).
root@ns361256 ~ $ cat /proc/mdstat 
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] [multipath] [faulty] 
md3 : active raid1 sdd1[1]
      698634624 blocks [2/1] [_U]
      
md1 : active raid1 sdb1[1] sda1[0]
      1023872 blocks [2/2] [UU]
      
md2 : active raid1 sdb2[1] sda2[0]
      67906496 blocks [2/2] [UU]
      
unused devices: <none>


#resync raid1 if readonly
mdadm --readwrite /dev/md3

удаляем диск из массива

mdadm --manage /dev/md2 --fail /dev/sda3
mdadm --manage /dev/md2 --remove /dev/sda3

сделать /dev/sda2 загрузочным диском с /boot разделом:

parted /dev/sda set 2 bios_grub on
Clone this wiki locally