저는 지난 10년 동안 중소기업을 위한 저렴한 서버를 구축해 왔습니다. 각 서버에는 raid1을 통해 미러링되는 두 개의 동일한 드라이브가 있습니다. 나중에 SATA가 나왔고 그 다음에는 eSATA가 나왔습니다. 과거에는 드라이브 장애가 발생하면 드라이브 2개만 교체하는 것이 전략이었습니다. 드라이브가 내장되어 있으므로 가동 중지 시간이나 시간당 드라이브 교체 비용을 피하기 위해 할 수 있는 일이 많지 않습니다.
저는 최근에 2개의 외부 SATA 드라이브가 있는 소형 xi3 서버로 전환했습니다. 스퀴즈로는 할 수 없지만 천명음 등의 경우에는 외장 드라이브를 쉽게 핫스왑할 수 있는 것 같습니다. 이전에 두 개의 드라이브를 교체한 가장 큰 이유는 두 번째 드라이브의 비용이 상자를 제거하고 드라이브 작업에 드는 비용을 정당화하지 못했다는 것입니다. 또 다른 이유는 드라이브에 장애가 발생하면 시장에 더 이상 동일한 드라이브가 없기 때문입니다. eSATA 드라이브를 사용하면 작고 저렴한 서버에서 드라이브 하나만 교체하는 것이 이미 가능합니다.
LVM이 어떻게 RAID1 미러링을 지원할 수 있는지에 대해 읽었지만, 이 기술이 아직 너무 새롭기 때문에 이에 대한 정보가 많지 않다는 것도 읽었습니다. 답변여기많은 정보를 제공하지만 고장난 드라이브를 교체하는 것이 얼마나 쉬운지 판단하는 데는 실제로 도움이 되지 않습니다. 내가 여전히 가장 편한 옵션은 md 파티션을 만든 다음 md 장치를 PV로 만드는 것입니다. 오늘은 고장난 드라이브를 동일한 드라이브로 교체할 수 있었습니다. 새 드라이브는 첫 번째 드라이브처럼 파티션을 나누기만 하면 됩니다(파티션을 완전히 제거하고 /boot를 lvm에 넣는 것을 고려하고 있는데 이것도 최근 기능입니다). 새 드라이브가 실패한 드라이브보다 크면 실행 중인 드라이브에 적어도 md 파티션만큼 큰 파티션을 만들 수 있고 작동할 것이라고 확신합니다. 새 드라이브에 추가 공간을 남겨두기만 하면 됩니다.
서버의 목표는 내부 IT가 전혀 없는 환경에서 가장 저렴한 가격으로 최대한 많은 기능과 안정성을 제공하는 것입니다. 유형 1 미러링 외에는 RAID가 없습니다. 주로 제가 원하는 것은 드라이브 장애 후 서비스 시간을 최소화하는 것인데, 이는 외부 핫스왑 가능한 드라이브를 통해 달성할 수 있습니다. 둘째, 사용 가능한 중복 공간을 파일 저장 공간에 할당하고 싶은데 미리 설정된 md 파티션을 사용할 때는 더 어렵습니다. 위에 링크된 답변에서 lvextend
드라이브가 더 커지면 작동한다는 것을 읽을 수 있지만 특히 간단한 raid1의 경우 재조립에 대한 답변이 명확하지 않습니다. 이는 전통적인 lvm 기반의 raid에서 더 큰 문제이며, 아래에서 lvm을 직접 사용하고 mdraid를 사용하여 공부하고 있는 이유이기도 합니다. "준비됐나요? 그렇다면 RTFM은 어디서 해야 하나요?"
간단히 말해서:
- LVM의 RAID1은 신뢰할 수 있습니까?
- 현재 dm-raid RAID1을 통해 LVM을 사용하고 있는 볼륨을 LVM RAID-1로 변환할 수 있습니까?
- 또는 디스크를 더 큰 디스크로 교체할 때 dm-raid RAID1 볼륨을 늘릴 수 있습니까?
답변1
md RAID1의 고장난 장치를 더 큰 파티션으로 교체할 수 있으며 동일한 크기의 구성 요소를 사용할 필요가 없습니다. 그러나 RAID1 미러링에서는 가장 작은 구성 요소의 크기만 사용됩니다.
나는 이것을 더 큰 디스크로 라이브 마이그레이션하는 데 사용합니다.
- 하나의 구성 요소가 실패하고 더 큰 구성 요소로 교체합니다(
mdadm -f /dev/mdX /dev/sdX1; mdadm -r /dev/mdX /dev/sdX1; mdadm -a /dev/mdX /dev/sdY1
디스크를 핫스왑할 수 있는 경우 새 구성 요소는 제거한 /dev 항목과 동일할 가능성이 높습니다. 새 디스크를 사용하기 전에 파티션을 나누어야 할 수도 있습니다.) - 동기화가 완료될 때까지 기다리세요
- 실패하고 다른 구성 요소를 더 큰 구성 요소로 다시 교체하십시오.
- 동기화가 완료될 때까지 기다리세요
- RAID1 크기 조정
mdadm --grow --array-size=max /dev/mdX
- 예를 들어 파일 시스템 크기를 조정하는 데 사용합니다
resize2fs /dev/mdX
(기본적으로resize2fs
사용 가능한 최대 공간이 사용됩니다). - 모두 완료되었습니다.