먼저, POWER8, 즉 ppc64le 아키텍처의 Ubuntu를 설치할 때, RAID adapter의 HW 기능이 아닌, Linux OS에서 지원하는 SW RAID를 이용하여 mirroring을 하면서 OS 설치하는 방법은 아래 URL을 참조하십시요.
https://wiki.kubuntu.org/ppc64el/SoftwareRAID
위 URL에서는 구성 및 설치 방법까지만 나옵니다. 특히, PReP 파티션, 즉 ppc64le의 bootloader용 파티션은 이렇게 SW RAID로는 설치가 안 된다는 이야기만 있을 뿐, 그래서 어떻게 하라는 말이 없습니다.
여기서는 이렇게 SW RAID로 Ubuntu OS 설치 후, PReP 파티션은 어떻게 보호할 것인가, 그리고 이렇게 mirroring된 HDD 2장 중 1장에 문제가 생겼을 경우 어떻게 복구하는지에 대해 간단히 정리했습니다.
요약하면
1) PReP 파티션 부분은 OS 설치 이후, 그냥 dd 명령으로 /dev/sda1에서 /dev/sdb1으로 copy해주면 됩니다.
2) Mirroring된 HDD 2장 중 1장에 문제가 생긴 경우, 복구는 madam 명령을 이용합니다.
먼저, 위 URL과 같이 OS를 SW RAID로 구성하여 설치를 끝내면 다음과 같이 disk가 2개 보입니다.
/dev/sda1, sdb1 : PReP 파티션
/dev/sda2, sdb2 : 일반 Linux 파일시스템
/dev/sda3, sdb3 : Swap space용 파티션
이중 sda2와 sdb2는 뭉쳐져 md0 (mirror device 0)를 만들게 되고, sda3와 sdb3는 md1을 만들게 됩니다.
$ fdisk -l
Disk /dev/sda: 894.3 GiB, 960197124096 bytes, 1875385008 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 2C810299-3222-421A-B19C-6FF8B8E8E181
Device Start End Sectors Size Type
/dev/sda1 2048 16383 14336 7M PowerPC PReP boot
/dev/sda2 16384 1799501823 1799485440 858.1G Linux RAID
/dev/sda3 1799501824 1875384319 75882496 36.2G Linux RAID
Disk /dev/sdb: 894.3 GiB, 960197124096 bytes, 1875385008 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: E5BCD6F3-25B0-42B9-A0C3-87851E049FB8
Device Start End Sectors Size Type
/dev/sdb1 2048 16383 14336 7M Linux filesystem
/dev/sdb2 16384 1799501823 1799485440 858.1G Linux RAID
/dev/sdb3 1799501824 1875384319 75882496 36.2G Linux RAID
Disk /dev/md1: 36.2 GiB, 38818283520 bytes, 75816960 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/md0: 858 GiB, 921202327552 bytes, 1799223296 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
md1이 swap space인지는 swapon -s 명령으로 확인 가능합니다.
test@ubuntu:~$ swapon -s
Filename Type Size Used Priority
/dev/md1 partition 37908416 0 -1
위에서 언급한 것처럼, PReP 파티션은 OS 설치시에 SWRAID로는 mirror 구성이 안 되므로, 아래와 같이 그냥 dd 명령으로 copy 해주면 됩니다. 이렇게 copy를 완료한 뒤, 실제로 /dev/sda를 뽑아 문제를 일으킨 뒤 일단 shutdown을 하고 나서, /dev/sdb만 가지고 booting을 해보면 booting도 잘 되는 것을 확인했습니다.
test@ubuntu:~$ sudo dd if=/dev/sda1 of=/dev/sdb1 bs=1024
이제 mirror device의 복구에 대해 보겠습니다. 먼저, 현재 상태가 어떤지 확인하는 방법은 아래와 같이 /proc/mdstat을 보는 것입니다. 아래는 mirror device가 정상적인 상태입니다.
test@ubuntu:~$ cat /proc/mdstat
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sda2[0] sdb2[2]
899611648 blocks super 1.2 [2/2] [UU]
bitmap: 0/1 pages [0KB], 65536KB chunk
md1 : active raid1 sda3[3] sdb3[2]
37908480 blocks super 1.2 [2/2] [UU]
unused devices: <none>
좀더 상세하게는, mdadm 명령을 써서 볼 수 있습니다.
test@ubuntu:~$ sudo mdadm --detail /dev/md0
[sudo] password for test:
/dev/md0:
Version : 1.2
Creation Time : Fri Dec 2 15:21:29 2016
Raid Level : raid1
Array Size : 899611648 (857.94 GiB 921.20 GB)
Used Dev Size : 899611648 (857.94 GiB 921.20 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Intent Bitmap : Internal
Update Time : Mon Dec 5 17:34:38 2016
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Name : ubuntu:0 (local to host ubuntu)
UUID : 458b6f3e:8289b00c:a4e641ea:134631e7
Events : 35835
Number Major Minor RaidDevice State
0 8 2 0 active sync /dev/sda2
2 8 18 1 active sync /dev/sdb2
test@ubuntu:~$ sudo mdadm --detail /dev/md1
/dev/md1:
Version : 1.2
Creation Time : Fri Dec 2 15:21:41 2016
Raid Level : raid1
Array Size : 37908480 (36.15 GiB 38.82 GB)
Used Dev Size : 37908480 (36.15 GiB 38.82 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Mon Dec 5 16:36:22 2016
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Name : ubuntu:1 (local to host ubuntu)
UUID : a6154655:667b3e4a:922a28a0:3fb5af6b
Events : 87
Number Major Minor RaidDevice State
3 8 3 0 active sync /dev/sda3
2 8 19 1 active sync /dev/sdb3
/dev/sda를 뽑았다가 다시 꽂은 경우, "mdadm --manage --remove" 명령으로 문제 있는 파티션을 제거한 뒤 다시 "mdadm --manage --add" 명령으로 추가하면 됩니다. 아래는 /dev/sda를 뽑았던 경우입니다. 여기서 PReP 파티션인 /dev/sda1은 mirror device에는 참여할 수 없는 파티션이므로, mdadm 명령이 아니라 dd 명령으로 copy 해줘야 한다는 것을 잊지 마시기 바랍니다.
test@ubuntu:~$ sudo mdadm --manage /dev/md0 --remove /dev/sda2
test@ubuntu:~$ sudo mdadm --manage /dev/md1 --remove /dev/sda3
test@ubuntu:~$ sudo mdadm --manage /dev/md0 --add /dev/sda2
test@ubuntu:~$ sudo mdadm --manage /dev/md1 --add /dev/sda3
이렇게 --add 한 뒤 두 HDD 사이에 sync가 일어나게 됩니다. /proc/mdstat을 보면 복구 작업이 몇 % 진행되었는지도 보실 수 있습니다.
댓글 없음:
댓글 쓰기