데비안, livecd 대신 initramfs 스크립트를 사용하여 md 이름을 변경하는 방법은 무엇입니까?

데비안, livecd 대신 initramfs 스크립트를 사용하여 md 이름을 변경하는 방법은 무엇입니까?

MD가 활성화된 상태에서 MD 이름을 변경할 수 있나요? 내가 아는 한 그것은 불가능하다.

mdadm -A --update=name --name=ibmlinux-root /dev/md126
ls /dev/md/126_0 
/dev/md/126_0 
ls /dev/md/ibmlinux-root
error: no such file or directory

그냥 중지하고 이름을 업데이트하고 다시 조립하세요.

mdadm --stop /dev/md126
mdadm -A --update=name --name=ibmlinux-root /dev/md126

이제 문제는... /dev/md126은 /에 마운트된 루트 장치이므로 마운트 해제가 불가능합니다.

가장 좋은 방법은 live-cd를 사용하여 재부팅하고 이름을 바꾼 다음 재부팅하는 것입니다(작동합니다. 이 작업을 여러 번 수행했습니다).

하지만 나는 이 디렉토리에 Debian 스크립트를 사용하는 더 빠르고 간단한 솔루션을 원합니다.

/usr/share/initramfs-tools/scripts/local-premount

내 생각은 스크립트를 만들고 md의 이름을 바꾼 다음 재부팅 후 스크립트를 삭제하는 것입니다.

스크립트를 만들었습니다.

vim /usr/share/initramfs-tools/scripts/local-premount/md

#!/bin/sh -e

PREREQ=""

prereqs()
{
        echo "$PREREQ"
}

case $1 in
# get pre-requisites
prereqs)
        prereqs
        exit 0
        ;;
esac

mdadm --stop /dev/md126
mdadm -A --update=name --name=ibmlinux-root /dev/md126

실행 가능하게 만들고 initramfs와 grub을 업데이트했습니다.

chmod +x /usr/share/initramfs-tools/scripts/local-premount/md                                                   
update-initramfs -cv -k all
update-grub2

재부팅했더니 짜잔... 새 이름이 ..127이 되었네요! :(

   ls /dev/md/127_0 
   /dev/md/127_0 
   ls /dev/md/ibmlinux-root
   error: no such file or directory

내가 무엇을 놓치고 있나요? 또한 스크립트를 /etc/initramfs-tools/scripts/init-premount/에 넣으려고 시도했지만 아무것도 변경되지 않았습니다.

답변1

내 루트 배열이 0.90 메타데이터로 생성되었다는 사실을 잊어버렸습니다. 메타데이터 1.2로 다시 생성했고(현대 grub은 문제 없이 부팅할 수 있음) 이름을 업데이트하기 위해 /etc/mdadm /mdadm.conf를 편집했습니다(메타데이터 0.90에서는 허용되지 않음) MD Raid에서 이름 지정)

vim /etc/mdadm/mdadm.conf

ARRAY /dev/md/root   metadata=1.2 name=root   UUID=331728d9:c4d12r4f:f589d3ze:01ab3c17
ARRAY /dev/md/backup metadata=1.2 name=backup UUID=429845f1:d5e24f5g:8135dgte:120ff5c0

initramfs와 grub을 업데이트하고 재부팅하세요.

update-initramfs -cv -k all
update-grub2
shutdown -r now

다시 시작한 후...

ls /dev/md
ibmlinux:backup  ibmlinux:root

initramfs를 사용하는 스크립트는 md127의 이름을 md0 또는 우리가 원하는 대로 변경할 수도 있습니다.

/etc/initramfs-tools/scripts/init-premount에 스크립트를 생성합니다.

vim /etc/initramfs-tools/scripts/init-premount/md

#!/bin/sh

# Stop lvm
lvm vgchange -an vg-backup
lvm vgchange -an vg-ppclinux
sleep 3

# Stop raid
mdadm --stop /dev/md126
mdadm --stop /dev/md127
sleep 3

# Assemble with new names 
mdadm -A /dev/md0 /dev/sda2 /dev/sdb2
mdadm -A /dev/md1 /dev/sdc1 /dev/sdd1
sleep 3

# Create the symlinks
mkdir /dev/md
ln -sv /dev/md1 /dev/md/ibmlinux:backup
ln -sv /dev/md0 /dev/md/ibmlinux:root

# Start lvm
lvm vgchange -ay vg-ppclinux
lvm vgchange -ay vg-backup

권한 업데이트

chmod 755 /etc/initramfs-tools/scripts/init-premount/md

initramfs 및 grub 업데이트

update-initramfs -cv -k all
update-grub2

그리고 다시 시작한 후..

find /dev/md -ls
    11344      0 drwxr-xr-x   2 root     root           80 nov  8 06:12 /dev/md
    11345      0 lrwxrwxrwx   1 root     root            8 nov  8 06:12 /dev/md/ibmlinux:root -> /dev/md0
     9440      0 lrwxrwxrwx   1 root     root            8 nov  8 06:12 /dev/md/ibmlinux:backup -> /dev/md1

로그에는 이 오류/경고 메시지만 표시됩니다.

PV /dev/md0 9:0 is duplicate for PVID ........ on 9:126 /dev/md126 failed to create online file

하지만 모든 것이 잘 작동합니다(pvs, lvcreate, mdadm..)

관련 정보