LVM 볼륨의 소유권(또는 최소한 그룹)을 영구적으로 변경하는 방법은 무엇입니까?
udev를 사용해야 할 것 같은데 규칙이 어떻게 생겼는지 모르겠습니다.
LVM/디스크의 소유권을 사용자/그룹 virtualbox로 변경하고 싶다고 가정해 보겠습니다. 어떻게 해야 합니까?
답변1
Debian(그리고 배포판도 마찬가지)에서는 모든 LVM 메타데이터가 이미 udev에 로드되어 있습니다(/lib/udev/rules.d의 일부 규칙에 따라). 따라서 다음과 같은 규칙 파일을 사용할 수 있습니다.
$ cat /etc/udev/rules.d/92-local-oracle-permissions.rules
ENV{DM_VG_NAME}=="vgRandom" ENV{DM_LV_NAME}=="ora_users_*" OWNER="oracle"
ENV{DM_VG_NAME}=="vgRandom" ENV{DM_LV_NAME}=="ora_undo_*" OWNER="oracle"
ENV{DM_VG_NAME}=="vgSeq" ENV{DM_LV_NAME}=="ora_redo_*" OWNER="oracle"
udevadm을 사용하여 udev 규칙의 기반이 될 수 있는 유형을 알아볼 수 있습니다. 모든 E:
행은 udev의 ENV에서 찾을 수 있습니다. 예를 들어 E: DM_LV_NAME=ora_data
위 규칙 중 하나와 일치하는 행은 다음과 같습니다.
# udevadm info --query=all --name /dev/dm-2
P: /devices/virtual/block/dm-2
N: dm-2
L: -100
S: block/253:2
S: mapper/vgRandom-ora_data
S: disk/by-id/dm-name-vgRandom-ora_data
S: disk/by-id/dm-uuid-LVM-d6wXWIzc7xWJkx3Tx3o4Q9huEG1ajakYr0SLSl5as3C6RoydA66sgNHxBZdpem89
S: disk/by-uuid/787651c2-e4c7-40e2-b0fc-1a3978098dce
S: vgRandom/ora_data
E: UDEV_LOG=3
E: DEVPATH=/devices/virtual/block/dm-2
E: MAJOR=253
E: MINOR=2
E: DEVNAME=/dev/dm-2
E: DEVTYPE=disk
E: SUBSYSTEM=block
E: DM_UDEV_PRIMARY_SOURCE_FLAG=1
E: DM_NAME=vgRandom-ora_data
E: DM_UUID=LVM-d6wXWIzc7xWJkx3Tx3o4Q9huEG1ajakYr0SLSl5as3C6RoydA66sgNHxBZdpem89
E: DM_SUSPENDED=0
E: DM_UDEV_RULES=1
E: DM_VG_NAME=vgRandom
E: DM_LV_NAME=ora_data
E: DEVLINKS=/dev/block/253:2 /dev/mapper/vgRandom-ora_data /dev/disk/by-id/dm-name-vgRandom-ora_data /dev/disk/by-id/dm-uuid-LVM-d6wXWIzc7xWJkx3Tx3o4Q9huEG1ajakYr0SLSl5as3C6RoydA66sgNHxBZdpem89 /dev/disk/by-uuid/787651c2-e4c7-40e2-b0fc-1a3978098dce /dev/vgRandom/ora_data
E: ID_FS_UUID=787651c2-e4c7-40e2-b0fc-1a3978098dce
E: ID_FS_UUID_ENC=787651c2-e4c7-40e2-b0fc-1a3978098dce
E: ID_FS_VERSION=1.0
E: ID_FS_TYPE=ext4
E: ID_FS_USAGE=filesystem
E: FSTAB_NAME=/dev/mapper/vgRandom-ora_data
E: FSTAB_DIR=/opt/oracle/oracle/oradata
E: FSTAB_TYPE=ext4
E: FSTAB_OPTS=noatime
E: FSTAB_FREQ=0
E: FSTAB_PASSNO=3
또한 ATTR(장치만) 또는 ATTRS(상위 장치도)에서 sysfs 속성을 일치시킬 수 있습니다. 다음과 같이 모든 속성을 볼 수 있습니다.
# udevadm info --attribute-walk --name /dev/dm-2
Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.
looking at device '/devices/virtual/block/dm-2':
KERNEL=="dm-2"
SUBSYSTEM=="block"
DRIVER==""
ATTR{range}=="1"
ATTR{ext_range}=="1"
ATTR{removable}=="0"
ATTR{ro}=="0"
ATTR{size}=="41943040"
ATTR{alignment_offset}=="0"
ATTR{discard_alignment}=="0"
ATTR{capability}=="10"
ATTR{stat}=="36383695 0 4435621936 124776016 29447978 0 3984603551 342671312 0 191751864 467456484"
ATTR{inflight}==" 0 0"
이 일치는 가상이 아닌 장치에 더 유용하지만(예: /dev/sda1에서 시도하면 많은 출력을 얻을 수 있습니다).
답변2
내 시스템의 udev 문서와 기존 규칙을 간략하게 살펴보면 다음 규칙(테스트되지 않음)이 다음을 사용하여 특정 논리 볼륨을 식별해야 함을 알 수 있습니다.dmsetup
프로그램은 볼륨 정보를 검색합니다. gggggggg
볼륨 그룹의 UUID( vgdisplay VG_NAME
) 및 lllllll
논리 볼륨의 UUID( lvdisplay VG_NAME/LV_NAME
) 로 바꾸 거나 dmsetup
명령을 수동으로 실행하여 UUID를 찾습니다.
SUBSYSTEM=="block", KERNEL=="dm-[0-9]*", \
PROGRAM=="dmsetup info -c --noheadings -o uuid", \
RESULT=="LVM-ggggggggllllllll", \
OWNER=="letmebe", GROUP="vmusers", MODE="0660"