Slackware 14.2 실행 시 RAID 1을 어떻게 생성합니까?

Slackware 14.2 실행 시 RAID 1을 어떻게 생성합니까?

저는 sda에서 Slackware 14.2(커널 4.4.14-smp 포함)를 사용하고 있으며, 추가 sdb로 RAID 1을 생성하려고 합니다. 저는 가상 머신인 VirtualBox를 사용하고 있습니다.

먼저 sdb를 정리했습니다.

dd if=/dev/zero of=/dev/sdb bs=8M count=1000

그리고 sda의 파티션을 sdb에 복사합니다.

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

다음으로 파티션 유형을 "Linux raid 자동 감지"로 변경했습니다.

Device     Boot     Start       End   Sectors Size Id Type
/dev/sda1            2048   8390655   8388608   4G 82 Linux swap
/dev/sda2  *      8390656 113248255 104857600  50G 83 Linux
/dev/sda3       113248256 209715199  96466944  46G  5 Extended
/dev/sda5       113250304 144707583  31457280  15G 83 Linux
/dev/sda6       144709632 176166911  31457280  15G 83 Linux
/dev/sda7       176168960 209715199  33546240  16G 83 Linux

그리고

Device     Boot     Start       End   Sectors Size Id Type
/dev/sdb1            2048   8390655   8388608   4G fd Linux raid autodetect
/dev/sdb2  *      8390656 113248255 104857600  50G fd Linux raid autodetect
/dev/sdb3       113248256 209715199  96466944  46G  5 Extended
/dev/sdb5       113250304 144707583  31457280  15G fd Linux raid autodetect
/dev/sdb6       144709632 176166911  31457280  15G fd Linux raid autodetect
/dev/sdb7       176168960 209715199  33546240  16G fd Linux raid autodetect

각 파티션(md1, md2, md5, md6, md7)에 대해 다음을 수행했습니다.

mdadm --create /dev/md1 --level=1 --metadata=0.90 --raid-disk=2 missing /dev/sdb1

그리고 생성된 배열에 파일 시스템을 만듭니다.

mkswap /dev/md1
mkreiserfs -fq /dev/md2
mkreiserfs -fq /dev/md5
mkreiserfs -fq /dev/md6
mkreiserfs -fq /dev/md7

RAID 구성 저장:

mdadm --examine --scan >> /etc/mdadm.conf

다음으로 /etc/fstab 및 /etc/mtab을 편집하고 sdaX->mdX를 교체하여 초기 램디스크를 준비합니다.

mkinitrd -c -k 4.4.14-smp -f reiserfs -r /dev/md2 -m reiserfs:dm-raid -u -o /boot/initrd_raid.gz

그럽 구성:

cp /etc/grub.d/40_custom /etc/grub.d/09_swraid1_setup
#!/bin/sh
exec tail -n +3 $0
# 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.
menuentry 'Slackware-14.2 GNU/Linux' --class slackware-14.2 --class gnu-linux --class os {
    insmod mdraid09
    insmod mdraid1x
    insmod gzio
    insmod part_msdos
    insmod reiserfs
    set root='md2,msdos2'
    echo    'Loading Linux 4.4.14-smp ...'
    linux   /boot/vmlinuz-huge-smp-4.4.14-smp root=/dev/md2 ro
    echo    'Loading inital ramdisk ...'
    initrd  /boot/initrd_raid.gz
}

주석을 제거하여 /etc/default/grub을 편집했습니다.

GRUB_TERMINAL=console
GRUB_DISABLE_LINUX_UUID=true

마침내:

grub-mkconfig -o /boot/grub/grub.cfg

데이터는 sda에서 sdb로 복사됩니다( cp -dpRx / /mnt/md2등).

GRUB가 설치되었습니다:

grub-install /dev/sda/
grub-install /dev/sdb/

로드 시 출력:

Loading Linux 4.4.14-smp ...
error: disk 'md0,msdos2' not found.
Loading inital ramdisk ...
error: you need to load the kernel first.

문제는 initrd에 어떤 모듈을 추가해야 하며 grub을 어떻게 구성해야 합니까?입니다.

고쳐 쓰다: /etc/grub.d/09_swraid1_setup 편집됨:

...
set root='md/md2'
...
initrd  /boot/initrd.gz

initrd 이미지를 생성하려면 /etc/mkinitrd.conf를 추가하세요.

# mkinitrd.conf.sample
# See "man mkinitrd.conf" for details on the syntax of this file
#
#SOURCE_TREE="/boot/initrd-tree"
#CLEAR_TREE="0"
OUTPUT_IMAGE="/boot/initrd.gz"
KERNEL_VERSION="$(uname -r)"
#KEYMAP="us"
MODULE_LIST="reiserfs"
#LUKSDEV="/dev/sda2"
#LUKSKEY="LABEL=TRAVELSTICK:/keys/alienbob.luks"
ROOTDEV="/dev/md2"
ROOTFS="reiserfs"
RESUMEDEV="/dev/md1"
RAID="1"
#LVM="0"
UDEV="1"
#MODCONF="0"
WAIT="5"

initrd 이미지는 다음 명령을 사용하여 생성됩니다.

mkinitrd -F

grub( grub-mkconfig -o /boot/grub/grub.cfggrub-install /dev/sda, grub-install /dev/sdb)을 업데이트한 후 시스템이 성공적으로 재부팅되었습니다. 그 후, sda파티션 유형을 Linux RAID 자동 감지로 변경배열에 파티션을 추가합니다.

mdadm --add /dev/md1 /dev/sda1
mdadm --add /dev/md2 /dev/sda2
mdadm --add /dev/md5 /dev/sda5
mdadm --add /dev/md6 /dev/sda6
mdadm --add /dev/md7 /dev/sda7

이제 두 디스크를 모두 사용하여 시스템을 성공적으로 부팅했지만 디스크 중 하나를 제거하고 부팅을 시도하면 다음과 같은 결과가 나타납니다.

/boot/initrd.gz: Loading kernel modules from initrd image:
insmod /lib/modules/4.4.14-smp/kernel/fs/reiserfs/reiserfs.ko
modprobe: ERROR: could not insert 'reiserfs': Device or resource busy
Trying to resume from /dev/md1
[    12.529675] PM: Starting manual resume from disk
[    12.552222] REISERFS warning (device md2): sh-2006 read_super_block: bread failed (dev md2, block 2, size 4096)
[    12.557432] REISERFS warning (device md2): sh-2006 read_super_block: bread failed (dev md2, block 16, size 4096)
mount: mounting /dev/md2 on /mnt failed: Invalid argument
ERROR: No /sbin/init found on rootdev (or not mounted). Trouble ahead.

이제 문제는 디스크 없이 시스템을 부팅하는 방법입니다.

관련 정보