GRUB는 RAID 1 어레이의 두 번째 하드 드라이브에서 부팅할 수 없습니다.

GRUB는 RAID 1 어레이의 두 번째 하드 드라이브에서 부팅할 수 없습니다.

나는 이것에 몇 시간을 보냈고 수십 개의 StackExchange 게시물을 찾아보았지만 여전히 멈춰 있습니다.

소프트웨어 RAID 1 구성의 Debian 시스템이 있습니다. 현재 기계가 정상적으로 시작됩니다.

내 컴퓨터의 하드 드라이브를 교체할 예정입니다. 이 과정에서 부팅 프로세스가 실제로 예상한 대로 미러링되지 않는다는 사실을 발견했습니다. 첫 번째 하드 드라이브( )를 제거하려고 하면 /dev/sda서버가 시작되지 않습니다. 나 혼자서는( ) 시작할 수 없을 것 같다 /dev/sdb.

나는 몇 가지를 시도했습니다:

  • sudo grub-install /dev/sdb,sudo update-grub /dev/sdb
  • sudo dpkg-reconfigure grub-pcsdasdb(참고로 이 작업을 완료했을 때 , , 및 에 설치할 수 있는 옵션이 제공되었습니다 . 및 을 md0확인했는데 설치에 성공한 것 같았습니다. 그러나 확인하려고 하면 설치에 실패했습니다 .sdasdbmd0

또한 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( sdbRAID 구성을 사용하면 두 번째 디스크 없이 부팅할 수 있다는 점을 고려하면) 강제로 실행되기 때문에 원하는 것이 아닌 것 같습니다. 가지고 있는 모든 새(교체 디스크)에 대해 동일한 작업을 수행합니다.


이 문제를 해결하려면 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 또는 일종의 사용자 정의 하위 수준 서비스(논리 구현)를 별도의 파티션에서 실행하여 조건에 직면할 수 있는 모든 것을 관리하는 것입니다. 생각하다:

  1. md0온보드 sdasdb오프보드 로 부팅
  2. 그냥 시작하세요sda
  3. 그냥 시작하세요sdb

솔직히 말해서 RAID sda부분을 무시해도 될지 모르겠어서 "이론적"이라고 썼습니다 sdb. 마찬가지로, 예상한 대로 RAID가 원래 구성되었다는 사실을 건너뛰거나 무시하거나 무시하는 것은 GRUB가 아닌 RAID 구성 자체에 의해 처리되어야 할 것입니다(다시 말하지만). 그것이 사실인지, 아니면 우리가 원하는 방식으로 작동해야 하는지는 말할 수 없습니다. 이에 대해서는 다른 사람들이 논평해야 합니다.


마지막으로 유감스럽게도 GRUB과 RAID는 원하는 대로 설계되지 않은 것 같습니다. 그렇다고 해서 그러한 기능이 결코 구현되지 않을 것이라는 의미는 아니며, 확실히 구현될 수 있습니다. 원하는 대로 되는 경우는 매우 드뭅니다.

일반적으로 내가 들은 바에 따르면 디스크를 교체하고 GRUB를 계속 지정하면 md0시스템이 하나의 디스크만 사용할 수 있는 것을 원하지 않습니다. 물론 제가 틀렸을 수도 있지만, 모든 의견을 물어보셨으니 이건 제 의견입니다. 귀하의 질문에 행운을 빕니다. 잠재적인 해결책이 정말 궁금하기 때문에 이 질문을 따르겠습니다.

답변2

감사합니다 Mikolaj!

나는 문제를 발견했다는 사실을 후속 조치로 수줍게 공유하고 싶었습니다! 내가 해야 할 일은 이전 드라이브가 /dev/sdb원래 위치에 연결 되도록 드라이브 연결을 바꾸는 것뿐입니다 /dev/sda. 그 시점에서는 모든 것이 잘 진행되었습니다!

관련 정보