읽기 및 쓰기를 위해 로컬 파일 시스템을 다시 마운트할 수 없습니다(RAID1).

읽기 및 쓰기를 위해 로컬 파일 시스템을 다시 마운트할 수 없습니다(RAID1).

저는 Asus P9X79 마더보드에 새 시스템을 구축하고 해당 RAID 컨트롤러를 사용하여 2개의 500Gb 드라이브로 구성된 RAID1 어레이를 만들었습니다.

/dev/md126외장 드라이브에서 아치를 부팅할 때 해당 어레이에 해당하는 드라이브를 문제 없이 사용할 수 있습니다 . 이런 식으로 파티션과 파일 시스템을 만든 다음 드라이브를 루트로 바꾸고 Arch Linux를 설치했습니다.

그러나 RAID: 에서 성공적으로 부팅할 수 없고 /읽기 -쓰기 모드로 다시 설치( 뒤로 )할 수 /boot없어 비상 콘솔이 표시됩니다. 거기에서 다시 설치하려는 시도도 실패했으며 드라이브가 쓰기 금지되어 있다고 말했습니다./homemount32

일부 필수 커널 모듈이 로드되지 않고 부팅 시 사용되지 않는 것 같습니다 mkinitcpio.conf( mdadm_udevudev, 전 filesystems). 내가 이해한 바에 따르면 이것으로 충분하지만 배열 에 raid1, raid456ext2를 추가해 보았지만 아무 것도 변경되지 않았습니다.ext4MODULES

mdadm_udevRAID1 자체는 Hook(장치가 존재함)로 인해 초기 환경에서 인식됩니다. raid1이 후크에 의해서도 자동으로 로드되는 것 같아요.

나는 여전히 외부 드라이브에서 부팅하고 RAID1 장치를 마운트할 수 있었기 때문에 lsmod그 작업을 수행하고 lsmod"로컬" 시스템과 비교했습니다. 나는 의심스러운 것이 없다고 생각합니다.

$ diff <(sort lsmod.old | cut -f1 -d ' ') <(sort lsmod.new | cut -f1 -d ' ')
7a8,12
> async_memcpy
> async_pq
> async_raid6_recov
> async_tx
> async_xor
13a19,20
> drm
> drm_kms_helper
24a32
> i2c_algo_bit
43c51
< nvidia
---
> nouveau
48a57,58
> raid456
> raid6_pq
64a75,76
> ttm
> uas
71a84
> xor

old효과적입니다. 보시다시피 로 시작하는 유일한 줄 <은 입니다 < nvidia. 따라서 필요한 모든 모듈이 로드됩니다(추가 모듈 중 일부는 new내가 로드하려는 종속성입니다 raid456).

내가 여기서 무엇을 놓치고 있는 걸까요? 두 시스템 간에 어떤 차이점이 있을 수 있나요? 커널 버전은 3.6.8과 동일합니다. (그런데 제가 처음 사용해 본 설치 미디어는 3.6.6이었고 해당 배열에서는 작동하지 않았습니다. 결국 모든 것이 끝없이 중단되었습니다.)

답변1

(레프해결책을 찾았습니다, 왜 작동하는지 설명하는 중입니다. )

RAID 컨트롤러를 사용하여 RAID1 어레이 생성

이것은 나쁜 징조입니다.가짜 공격— 펌웨어의 약간의 도움을 받아 주로 Windows 드라이버로 구현되는 RAID 구현입니다. 하드웨어 RAID의 모든 단점(펌웨어 의존성)과 소프트웨어 RAID의 모든 단점(성능 이점 없음)이 있습니다.

RAID 메타데이터는 펌웨어에 의해 처리됩니다. (메타데이터는 RAID 장치에 저장된 파일 시스템이나 파티션의 일부가 아닌 곳에 저장해야 하는 추가 데이터입니다. 예를 들어 각 데이터 블록을 정렬해야 하는 위치, 재동기화를 처리할 추가 데이터 등) 구현(적어도 이 드라이버의 경우) 이는 커널만으로는 처리되지 않습니다.mdmon유용그것은 또한 필요합니다.

시스템이 부팅되면 커널과 초기 RAM 드라이버(파일 시스템 초기화). 이 초기 RAM 드라이브에는 루트 파일 시스템을 마운트하는 데 필요한 로드 가능한 모든 모듈과 프로그램이 포함되어 있어야 합니다. RAM에 맞아야 하기 때문에 대부분의 배포판은 시스템에 필요한 드라이버를 기반으로 요청 시 initramfs를 생성합니다. 이는 일반적으로 커널을 업그레이드할 때마다 수행됩니다.

mdmonArch Linux의 initramfs 생성 스크립트는 부팅 시 이 프로그램이 필요하다는 것을 감지하지 못하여 작동하지 않는 initramfs를 생성한 것으로 보입니다 . mdmoninitramfs가 작동하도록 하려면 initramfs에 강제로 존재해야 합니다.

답변2

나는 그것을 작동시키기 위해 아래 제안을 따랐습니다.여기. 즉, /sbin/mdmon배열 BINARIES에 추가했습니다 mkinitcpio.conf.

이것은 나에게 약간 흑마법처럼 보이므로 어쨌든 설명과 함께 자세한 답변을 환영합니다.

관련 정보