私は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を交換して初期のRAMディスクを準備します。
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.cfg
およびgrub-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
これで両方のディスクを使用してシステムを正常に起動しましたが、ディスクの1つを削除して起動しようとすると、次の結果が表示されます。
/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.
これで問題は、ディスクなしでシステムを起動する方法です。