웹사이트 검색

Linux 소프트웨어 RAID에서 고장난 하드 디스크를 교체하는 방법


이 페이지에서

  1. 1 서문
  2. 2 하드 디스크에 장애가 발생했는지 어떻게 알 수 있습니까?\n
  3. 3 고장난 디스크 제거
  4. 4 새 하드 디스크 추가\n

이 안내서는 Linux RAID1 어레이(소프트웨어 RAID)에서 고장난 하드 드라이브를 제거하는 방법과 데이터 손실 없이 RAID1 어레이에 새 하드 디스크를 추가하는 방법을 보여줍니다. GPT(GUID 파티션 테이블)가 있는 대용량 하드디스크에서도 작동하도록 gdisk를 사용하여 파티션 구성표를 복사하겠습니다.

1 서문

이 예에서는 /dev/sda1 및 /dev/sda2 파티션과 /dev/sdb1 및 /dev/sdb2 파티션이 있는 두 개의 하드 드라이브 /dev/sda 및 /dev/sdb가 있습니다.

/dev/sda1 및 /dev/sdb1은 RAID1 어레이 /dev/md0을 구성합니다.

/dev/sda2 및 /dev/sdb2는 RAID1 어레이 /dev/md1을 구성합니다.

/dev/sda1 + /dev/sdb1 = /dev/md0
/dev/sda2 + /dev/sdb2 = /dev/md1

/dev/sdb가 실패했으며 교체하고 싶습니다.

2 하드 디스크에 장애가 발생했는지 어떻게 알 수 있습니까?

디스크에 장애가 발생한 경우 로그 파일에서 많은 오류 메시지를 찾을 수 있습니다. /var/log/messages 또는 /var/log/syslog.

당신은 또한 실행할 수 있습니다

cat /proc/mdstat

성능이 저하된 RAID1 어레이가 있는 경우 문자열 [UU] 대신 [U_]가 표시됩니다.

3 고장난 디스크 제거

/dev/sdb를 제거하기 위해 /dev/sdb1 및 /dev/sdb2를 실패로 표시하고 각각의 RAID 어레이(/dev/md0 및 /dev/md1)에서 제거합니다.

먼저 /dev/sdb1을 실패로 표시합니다.

mdadm --manage /dev/md0 --fail /dev/sdb1

의 출력

cat /proc/mdstat

다음과 같아야 합니다.

server1:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]
md0 : active raid1 sda1[0] sdb1[2](F)
      24418688 blocks [2/1] [U_]

md1 : active raid1 sda2[0] sdb2[1]
      24418688 blocks [2/2] [UU]

unused devices: <none>

그런 다음 /dev/md0에서 /dev/sdb1을 제거합니다.

mdadm --manage /dev/md0 --remove /dev/sdb1

출력은 다음과 같아야 합니다.

server1:~# mdadm --manage /dev/md0 --remove /dev/sdb1
mdadm: hot removed /dev/sdb1

그리고

cat /proc/mdstat

다음을 표시해야 합니다.

server1:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]
md0 : active raid1 sda1[0]
      24418688 blocks [2/1] [U_]

md1 : active raid1 sda2[0] sdb2[1]
      24418688 blocks [2/2] [UU]

unused devices: <none>

이제 /dev/sdb2(/dev/md1의 일부)에 대해 동일한 단계를 다시 수행합니다.

mdadm --manage /dev/md1 --fail /dev/sdb2
cat /proc/mdstat
server1:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]
md0 : active raid1 sda1[0]
      24418688 blocks [2/1] [U_]

md1 : active raid1 sda2[0] sdb2[2](F)
      24418688 blocks [2/1] [U_]

unused devices: <none>
mdadm --manage /dev/md1 --remove /dev/sdb2
server1:~# mdadm --manage /dev/md1 --remove /dev/sdb2
mdadm: hot removed /dev/sdb2
cat /proc/mdstat
server1:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]
md0 : active raid1 sda1[0]
      24418688 blocks [2/1] [U_]

md1 : active raid1 sda2[0]
      24418688 blocks [2/1] [U_]

unused devices: <none>

그런 다음 시스템 전원을 끕니다.

shutdown -h now

이전 /dev/sdb 하드 드라이브를 새 하드 드라이브로 교체합니다(기존 하드 드라이브와 크기가 최소한 같아야 합니다. 이전 하드 드라이브보다 몇 MB만 작으면 어레이 재구축이 실패합니다).

4 새 하드 디스크 추가

하드 디스크 /dev/sdb를 변경한 후 시스템을 부팅합니다.

지금 해야 할 첫 번째 작업은 /dev/sda에서와 정확히 동일한 파티셔닝을 생성하는 것입니다. gdisk 패키지의 sgdisk 명령으로 이 작업을 수행할 수 있습니다. gdisk를 아직 설치하지 않은 경우 다음 명령을 실행하여 Debian 및 Ubuntu에 설치합니다.

apt-get install gdisk

CentOS와 같은 RedHat 기반 Linux 배포판의 경우 다음을 사용합니다.

yum install gdisk

OpenSuSE 사용:

yast install gdisk

다음 단계는 선택 사항이지만 권장됩니다. 파티션 구성표를 백업하려면 sgdisk를 사용하여 두 디스크의 파티션 구성표를 파일에 쓸 수 있습니다. /root 폴더에 백업을 저장하겠습니다.

sgdisk --backup=/root/sda.partitiontable /dev/sda
sgdisk --backup=/root/sdb.partitiontable /dev/sdb

오류가 발생한 경우 sgdisk 명령의 --load-backup 옵션을 사용하여 파티션 테이블을 복원할 수 있습니다.

이제 파티션 구성표를 /dev/sda에서 /dev/sdb로 복사합니다.

sgdisk -R /dev/sdb /dev/sda

나중에 고유한지 확인하기 위해 새 하드 디스크의 GUID를 무작위로 지정해야 합니다.

sgdisk -G /dev/sdb

당신은 실행할 수 있습니다

sgdisk -p /dev/sda
sgdisk -p /dev/sdb

이제 두 하드 드라이브가 동일한 파티셔닝을 가지고 있는지 확인하십시오.

다음으로 /dev/sdb1을 /dev/md0에 추가하고 /dev/sdb2를 /dev/md1에 추가합니다.

mdadm --manage /dev/md0 --add /dev/sdb1
server1:~# mdadm --manage /dev/md0 --add /dev/sdb1
mdadm: re-added /dev/sdb1
mdadm --manage /dev/md1 --add /dev/sdb2
server1:~# mdadm --manage /dev/md1 --add /dev/sdb2
mdadm: re-added /dev/sdb2

이제 두 어레이(/dev/md0 및 /dev/md1)가 동기화됩니다. 달리다

cat /proc/mdstat

언제 완료되는지 확인합니다.

동기화하는 동안 출력은 다음과 같습니다.

server1:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]
md0 : active raid1 sda1[0] sdb1[1]
      24418688 blocks [2/1] [U_]
      [=>...................]  recovery =  9.9% (2423168/24418688) finish=2.8min speed=127535K/sec

md1 : active raid1 sda2[0] sdb2[1]
      24418688 blocks [2/1] [U_]
      [=>...................]  recovery =  6.4% (1572096/24418688) finish=1.9min speed=196512K/sec

unused devices: <none>

동기화가 완료되면 출력은 다음과 같습니다.

server1:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]
md0 : active raid1 sda1[0] sdb1[1]
      24418688 blocks [2/2] [UU]

md1 : active raid1 sda2[0] sdb2[1]
      24418688 blocks [2/2] [UU]

unused devices: <none>

이상으로 /dev/sdb를 성공적으로 교체했습니다!