LVM 물리 볼륨 생성 오류: Device Mapper 충돌 해결

LVM(Logical Volume Management)을 사용하여 새로운 물리 볼륨(PV)을 생성하려 할 때, 다음과 같은 오류 메시지를 만날 수 있습니다:

root@ubuntu:~# pvcreate /dev/sdc1
Can't open /dev/sdc1 exclusively.  Mounted filesystem?

이 메시지는 일반적으로 해당 파티션이 이미 마운트되어 있거나 다른 프로세스에서 독점적으로 사용 중일 때 발생합니다. 하지만 때로는 파티션이 마운트되어 있지 않음에도 불구하고 동일한 오류가 나타날 수 있습니다. 이 경우 Device Mapper와 관련된 문제가 원인일 수 있습니다.

파티션 상태 확인

먼저, 해당 파티션의 상태를 확인합니다. 파티션이 실제로 마운트되어 있지 않은지, 그리고 LVM 파티션으로 올바르게 인식되고 있는지 확인하는 과정이 필요합니다.

시스템에 인식된 모든 파티션 정보를 확인합니다:

root@ubuntu:~# cat /proc/partitions
major minor  #blocks  name

   8        0  488386584 sda
   8        1   16777216 sda1
   8        2  471608344 sda2
   8       32  488386584 sdc
   8       33  488386584 sdc1
   8       16  488386584 sdb
   8       17  488385560 sdb1
   8       48  488386584 sdd
   8       49  488384001 sdd1
 254        0  838860800 dm-0
 254        1    4194304 dm-1
 254        2  488386584 dm-2
 254        3  488386584 dm-3
 254        5  488384001 dm-5
 254        4  488384001 dm-4

다음으로, fdisk 명령을 사용하여 문제가 되는 디스크(예: /dev/sdc)의 파티션 정보를 자세히 살펴봅니다:

root@ubuntu:~# fdisk /dev/sdc -l

Disk /dev/sdc: 500.1 GB, 500107862016 bytes
81 heads, 63 sectors/track, 191411 cylinders, total 976773168 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 identifier: 0xbbbab9b8

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1            2048   976773167   488385560   8e  Linux LVM

이 출력에서 /dev/sdc1 파티션의 시스템 ID가 8e Linux LVM으로 설정되어 있음을 확인할 수 있습니다. 이는 파티션이 LVM 사용을 위해 준비되었음을 나타내지만, 여전히 pvcreate 오류가 발생합니다.

Device Mapper 및 멀티패스 확인

파티션이 직접 마운트되지 않았음에도 독점적으로 열 수 없다는 오류가 발생한다면, Device Mapper 서브시스템에서 해당 디스크를 사용하고 있을 가능성이 높습니다. Device Mapper는 커널의 I/O 리다이렉션 프레임워크로, LVM, 소프트웨어 RAID, 멀티패스 등 고급 스토리지 기능을 구현하는 데 사용됩니다.

dmsetup 명령을 사용하여 Device Mapper 장치들의 상태를 확인합니다:

root@ubuntu:~# dmsetup status
35000c50026716847: 0 976773168 multipath 2 0 0 0 1 1 A 0 1 0 8:48 A 0
vg_data-lv_home: 0 976764928 linear
vg_data-lv_home: 976764928 700956672 linear
35000c5002670f03e: 0 976773168 multipath 2 0 0 0 1 1 A 0 1 0 8:32 A 0
35000c5002670f03e-part1: 0 976768002 linear
35000c50026716847-part1: 0 976768002 linear
vg_data-lv_swap: 0 8388608 linear

활성화된 Device Mapper 장치들의 목록을 확인합니다:

root@ubuntu:~# dmsetup ls
35000c50026716847       (254, 2)
vg_data-lv_home (254, 0)
35000c5002670f03e       (254, 3)
35000c5002670f03e-part1 (254, 5)
35000c50026716847-part1 (254, 4)
vg_data-lv_swap (254, 1)

위 출력에서 35000c5002670f03e35000c50026716847과 같은 장치들이 보이며, 이들이 멀티패스(multipath) 구성의 일부임을 dmsetup status에서 확인할 수 있습니다. 멀티패스는 여러 경로를 통해 단일 스토리지 장치에 접근하는 기술입니다. 이는 종종 /dev/sdc와 같은 물리 디스크를 Device Mapper 장치에 매핑할 때 발생합니다.

멀티패스 구성 정보를 더 자세히 확인합니다:

root@ubuntu:~# multipath -ll
35000c50026716847 dm-2 ATA,GB0500EAFJH
size=466G features='0' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
  `- 3:0:0:0 sdd 8:48 active ready running
35000c5002670f03e dm-3 ATA,GB0500EAFJH
size=466G features='0' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
  `- 2:0:0:0 sdc 8:32 active ready running

/dev/mapper/ 디렉토리를 보면 심볼릭 링크를 통해 Device Mapper 장치와 실제 물리 디스크가 어떻게 연결되어 있는지 확인할 수 있습니다. 35000c5002670f03e/dev/dm-3으로, 그리고 /dev/dm-3/dev/sdc와 연결되어 있음을 알 수 있습니다.

root@ubuntu:~# ll /dev/mapper/
total 0
drwxr-xr-x  2 root root     180 Jun 28 01:39 ./
drwxr-xr-x 14 root root   13060 Jun 28 17:17 ../
lrwxrwxrwx  1 root root       7 Jun 28 01:39 35000c5002670f03e -> ../dm-3
lrwxrwxrwx  1 root root       7 Jun 28 01:39 35000c5002670f03e-part1 -> ../dm-5
lrwxrwxrwx  1 root root       7 Jun 28 01:39 35000c50026716847 -> ../dm-2
lrwxrwxrwx  1 root root       7 Jun 28 01:39 35000c50026716847-part1 -> ../dm-4
crw------T  1 root root 10, 236 Jun 28 01:39 control
lrwxrwxrwx  1 root root       7 Jun 28 01:39 vg_data-lv_home -> ../dm-0
lrwxrwxrwx  1 root root       7 Jun 28 01:39 vg_data-lv_swap -> ../dm-1

이러한 정보들을 종합해 보면, /dev/sdc1은 멀티패스 장치인 35000c5002670f03e에 의해 Device Mapper 계층에서 관리되고 있으며, 이로 인해 LVM 물리 볼륨 생성 명령이 해당 파티션을 독점적으로 사용할 수 없어 오류가 발생하고 있음을 알 수 있습니다.

해결책: Device Mapper 매핑 제거

문제를 해결하기 위해서는 dmsetup remove 명령을 사용하여 충돌하는 Device Mapper 매핑을 제거해야 합니다. 문제가 되는 파티션(/dev/sdc1)과 관련된 Device Mapper 장치(예: 35000c5002670f03e35000c5002670f03e-part1)를 제거합니다.

root@ubuntu:~# dmsetup remove 35000c5002670f03e-part1
root@ubuntu:~# dmsetup remove 35000c5002670f03e

이 명령은 해당 Device Mapper 장치에 대한 커널의 매핑을 제거하여, 물리 디스크 /dev/sdc(또는 그 파티션 /dev/sdc1)가 LVM에 의해 독점적으로 사용될 수 있도록 합니다.

이제 pvcreate 명령을 다시 실행하면 물리 볼륨이 성공적으로 생성되는 것을 확인할 수 있습니다:

root@ubuntu:~# pvcreate /dev/sdc1
  Physical volume "/dev/sdc1" successfully created

만약 여러 Device Mapper 매핑이 충돌하고, 다른 디스크들이 사용 중이 아니라면 dmsetup remove_all 명령을 사용하여 모든 Device Mapper 매핑을 한 번에 제거할 수도 있습니다. 하지만 이는 주의해서 사용해야 하며, 다른 활성 논리 볼륨이나 멀티패스 장치에 영향을 줄 수 있습니다.

태그: LVM pvcreate Device Mapper Multipath Linux Storage

7월 29일 21:13에 게시됨