Skip to content
matveynator edited this page Sep 5, 2023 · 20 revisions

check-memory: apt-get install edac-utils

edac-util -v
edac-utils -v

new megaraid:

curl -L "https://github.com/matveynator/sysadminscripts/raw/main/debian/megacli_8.07.14-2_all.deb" > /tmp/megacli_8.07.14-2_all.deb; dpkg -i /tmp/megacli_8.07.14-2_all.deb;

new arcconf:

curl -L "https://github.com/matveynator/sysadminscripts/raw/main/debian/arcconf_3.07-23972_amd64.deb" > /tmp/arcconf_3.07-23972_amd64.deb; dpkg -i /tmp/arcconf_3.07-23972_amd64.deb;

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

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;

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 "Adapter #|Enclosure Device ID:|Slot Number:|Firmware state:|Raw Size:|Inquiry Data:|^$"

megaraid hot swap 252-1 drive

выполняем три команды и пишем в техподдержку чтобы меняли диск онлайн (без выключения сервера)

megacli pdoffline physdrv[252:1] a0
megacli pdmarkmissing physdrv[252:1] a0
megacli pdprprmv physdrv[252:1] a0

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

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

Восстановаление потерянного megaraid на DELL после hot-swap

#сканируем потерянные конфигурации:

#Bring bad to good
megacli -CfgForeign -Scan -aALL 
#megacli -CfgForeign -Clear -aALL <- незнаю зачем????! может быть опасно?

#восстанавливаем потерянную конфигурацию

megacli -CfgForeign -Import -a0

Принудительно втыкаем поломанный диск обратно: (если случайно отвалился)

megacli -PDList -aAll | egrep "Adapter #|Enclosure Device ID:|Slot Number:|Firmware state:|Raw Size:|Inquiry Data:|^$"
megacli -LDInfo -Lall -Aall
megacli -PDList -Aall
megacli -PDMakeGood -PhysDrv[252:7] -a0
megacli -CfgForeign -Clear -a0
megacli -PdGetMissing -a0
megacli -PdReplaceMissing -PhysDrv[252:7] -array2 -row0 -a0
megacli -PDRbld -Start -PhysDrv[252:7] -a0
megacli -PDRbld -ShowProg -PhysDrv[252:7] -a0

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

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

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

Disable periodic software raid checks:

systemctl disable mdcheck_start.timer;
systemctl disable mdcheck_continue.timer;

Check periodic software raid checks status:

systemctl status mdcheck_start.timer;
systemctl status mdcheck_continue.timer;

Soft RAID1

mdadm --create /dev/md2 --chunk=64 --level=raid1 --raid-devices=2 /dev/nvme0n1p1 /dev/nvme1n1p1
mdadm --create /dev/md2 --chunk=64 --level=raid1 --raid-devices=2 /dev/sdc1 /dev/sdd1

ВАЖНО! создание конфиг файла (чтобы не переименовалось в /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/md2 --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