나는 이것에 몇 시간을 보냈고 수십 개의 StackExchange 게시물을 찾아보았지만 여전히 멈춰 있습니다.
소프트웨어 RAID 1 구성의 Debian 시스템이 있습니다. 현재 기계가 정상적으로 시작됩니다.
내 컴퓨터의 하드 드라이브를 교체할 예정입니다. 이 과정에서 부팅 프로세스가 실제로 예상한 대로 미러링되지 않는다는 사실을 발견했습니다. 첫 번째 하드 드라이브( )를 제거하려고 하면 /dev/sda
서버가 시작되지 않습니다. 나 혼자서는( ) 시작할 수 없을 것 같다 /dev/sdb
.
나는 몇 가지를 시도했습니다:
sudo grub-install /dev/sdb
,sudo update-grub /dev/sdb
sudo dpkg-reconfigure grub-pc
sda
sdb
(참고로 이 작업을 완료했을 때 , , 및 에 설치할 수 있는 옵션이 제공되었습니다 . 및 을md0
확인했는데 설치에 성공한 것 같았습니다. 그러나 확인하려고 하면 설치에 실패했습니다 .sda
sdb
md0
또한 GRUB가 드라이브 md0
자체( sda
예: sdb
. 부팅하는 동안 GRUB가 로드될 때 어레이가 시작되지 않기 때문에 이것이 문제가 될 수 있다고 생각합니까? 하지만 GRUB2(설치된 것으로 가정)가 RAID 어레이를 처리할 수 있어야 한다는 것을 본 것 같습니다.
사람들이 갖고 있는 아이디어를 듣고 싶습니다. 미리 감사드립니다! 도움이 된다면 내 시스템 구성은 다음과 같습니다.
# taken from grub.cfg
if [ x$feature_default_font_path = xy ] ; then
font=unicode
else
insmod part_msdos
insmod part_msdos
insmod diskfilter
insmod mdraid09
insmod ext2
set root='mduuid/73f4f8fa4b4d9ea4dbaa835b9c9612ac'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint='mduuid/73f4f8fa4b4d9ea4dbaa835b9c9612ac' 20fb3f71-3911-4f65-8773-7cf6bf334
e0d
else
search --no-floppy --fs-uuid --set=root 20fb3f71-3911-4f65-8773-7cf6bf334e0d
fi
font="/usr/share/grub/unicode.pf2"
fi
~$ sudo blkid
/dev/sda1: UUID="73f4f8fa-4b4d-9ea4-dbaa-835b9c9612ac" TYPE="linux_raid_member"
/dev/sda5: UUID="882c3c60-15c3-d6f8-d399-c9bc0b1041c7" TYPE="linux_raid_member"
/dev/sda6: UUID="6b77ee71-58d7-20c2-e510-ea20661b7451" TYPE="linux_raid_member"
/dev/sda7: UUID="361b574d-18d0-f4a5-3076-c1e8f6240de2" TYPE="linux_raid_member"
/dev/sdb1: UUID="73f4f8fa-4b4d-9ea4-dbaa-835b9c9612ac" TYPE="linux_raid_member"
/dev/sdb5: UUID="882c3c60-15c3-d6f8-d399-c9bc0b1041c7" TYPE="linux_raid_member"
/dev/sdb6: UUID="6b77ee71-58d7-20c2-e510-ea20661b7451" TYPE="linux_raid_member"
/dev/sdb7: UUID="361b574d-18d0-f4a5-3076-c1e8f6240de2" TYPE="linux_raid_member"
/dev/md0: UUID="20fb3f71-3911-4f65-8773-7cf6bf334e0d" TYPE="ext3"
/dev/md1: TYPE="swap"
/dev/md2: UUID="089c64c1-fefc-4cb4-8b9f-f06439f6a757" TYPE="ext3"
/dev/md3: UUID="0865f8c6-95ac-4582-b7c5-9e9d02a34e8e" TYPE="ext3"
~$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
fd0 2:0 1 4K 0 disk
sda 8:0 0 698.7G 0 disk
├─sda1 8:1 0 18.6G 0 part
│ └─md0 9:0 0 18.6G 0 raid1 /
├─sda2 8:2 0 1K 0 part
├─sda5 8:5 0 1.9G 0 part
│ └─md1 9:1 0 1.9G 0 raid1 [SWAP]
├─sda6 8:6 0 169.4G 0 part
│ └─md2 9:2 0 169.4G 0 raid1 /home
└─sda7 8:7 0 465.7G 0 part
└─md3 9:3 0 465.7G 0 raid1 /time_mac
sdb 8:16 0 931.5G 0 disk
├─sdb1 8:17 0 18.6G 0 part
│ └─md0 9:0 0 18.6G 0 raid1 /
├─sdb2 8:18 0 1K 0 part
├─sdb5 8:21 0 1.9G 0 part
│ └─md1 9:1 0 1.9G 0 raid1 [SWAP]
├─sdb6 8:22 0 169.4G 0 part
│ └─md2 9:2 0 169.4G 0 raid1 /home
└─sdb7 8:23 0 465.7G 0 part
└─md3 9:3 0 465.7G 0 raid1 /time_mac
sr0 11:0 1 1024M 0 rom
$ sudo parted -l
Model: ATA SAMSUNG HD753LJ (scsi)
Disk /dev/sda: 750GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 32.3kB 20.0GB 20.0GB primary ext3 raid
2 20.0GB 704GB 684GB extended
5 20.0GB 22.0GB 1999MB logical linux-swap(v1) raid
6 22.0GB 204GB 182GB logical ext3 raid
7 204GB 704GB 500GB logical ext3 raid
Model: ATA WDC WD1005FBYZ-0 (scsi)
Disk /dev/sdb: 1000GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 32.3kB 20.0GB 20.0GB primary ext3 raid
2 20.0GB 704GB 684GB extended
5 20.0GB 22.0GB 1999MB logical linux-swap(v1) raid
6 22.0GB 204GB 182GB logical ext3 raid
7 204GB 704GB 500GB logical ext3 raid
$ sudo grub-probe --target=device /boot/grub
/dev/md0
답변1
매우 흥미로운 질문입니다.
당신은 다음과 같이 썼습니다:
내 시작 프로세스가 실제로 예상한 방식을 반영하지 않습니다.
여기서 볼 수 있는 가장 간단한 해결책은 GRUB를 설치할 세 번째 드라이브가 있고 이것이 RAID 어레이를 가리키는 것입니다( md0
가능한 경우 RAID는 두 번째 디스크 없이 어떤 방식으로든 부팅할 수 있습니다). , 아래 지침을 참조하세요). 또는 약간 축소하여 여유 공간 중 하나에 GRUB 파티션을 가져오는 방법도 있지만 sda
( sdb
RAID 구성을 사용하면 두 번째 디스크 없이 부팅할 수 있다는 점을 고려하면) 강제로 실행되기 때문에 원하는 것이 아닌 것 같습니다. 가지고 있는 모든 새(교체 디스크)에 대해 동일한 작업을 수행합니다.
이 문제를 해결하려면 GRUB는 다음을 지적해야 합니다.
드라이브 자체(예: sda 또는 sdb)
내가 아는 한 GRUB에는 다음 절을 처리하기 위해 구현된 논리적 조건이 없습니다.
if (md0) is not available:
boot from (sda)
또는
if (sda) is not available:
boot from (sdb)
불행하게도 이것이 현재 설정에서 GRUB가 부팅되도록 지정되어야 하는 이유이며 md0
, 처음에 RAID를 활성화하려면 두 드라이브가 모두 필요합니다.
나는 GRUB2(설치되어 있다고 생각함)가 RAID 어레이를 처리할 수 있어야 한다는 것을 본 줄 알았습니다.
실제로 두 드라이브가 모두 있고 어레이가 올바르게 부팅되면 RAID 어레이를 처리합니다. 귀하의 경우(드라이브 중 하나 제거) GRUB가 로드되지만 "어레이가 아직 시작되지 않았습니다"( )를 나타내 md0
므로 시스템이 부팅되지 않습니다.
즉, RAID를 사용하기로 결정하면 두 개의 드라이브가 필요합니다. 정확히 동일한 GRUB 설정을 가진 것으로 간단히 전환할 수는 없습니다.
내가 보기에 가능한 유일한 (이론적) 해결책은 외부 파티션과 GRUB 또는 일종의 사용자 정의 하위 수준 서비스(논리 구현)를 별도의 파티션에서 실행하여 조건에 직면할 수 있는 모든 것을 관리하는 것입니다. 생각하다:
md0
온보드sda
및sdb
오프보드 로 부팅- 그냥 시작하세요
sda
- 그냥 시작하세요
sdb
솔직히 말해서 RAID sda
부분을 무시해도 될지 모르겠어서 "이론적"이라고 썼습니다 sdb
. 마찬가지로, 예상한 대로 RAID가 원래 구성되었다는 사실을 건너뛰거나 무시하거나 무시하는 것은 GRUB가 아닌 RAID 구성 자체에 의해 처리되어야 할 것입니다(다시 말하지만). 그것이 사실인지, 아니면 우리가 원하는 방식으로 작동해야 하는지는 말할 수 없습니다. 이에 대해서는 다른 사람들이 논평해야 합니다.
마지막으로 유감스럽게도 GRUB과 RAID는 원하는 대로 설계되지 않은 것 같습니다. 그렇다고 해서 그러한 기능이 결코 구현되지 않을 것이라는 의미는 아니며, 확실히 구현될 수 있습니다. 원하는 대로 되는 경우는 매우 드뭅니다.
일반적으로 내가 들은 바에 따르면 디스크를 교체하고 GRUB를 계속 지정하면 md0
시스템이 하나의 디스크만 사용할 수 있는 것을 원하지 않습니다. 물론 제가 틀렸을 수도 있지만, 모든 의견을 물어보셨으니 이건 제 의견입니다. 귀하의 질문에 행운을 빕니다. 잠재적인 해결책이 정말 궁금하기 때문에 이 질문을 따르겠습니다.
답변2
감사합니다 Mikolaj!
나는 문제를 발견했다는 사실을 후속 조치로 수줍게 공유하고 싶었습니다! 내가 해야 할 일은 이전 드라이브가 /dev/sdb
원래 위치에 연결 되도록 드라이브 연결을 바꾸는 것뿐입니다 /dev/sda
. 그 시점에서는 모든 것이 잘 진행되었습니다!