Alterando permanentemente a propriedade (ou grupo) do volume LVM

9

Como posso alterar permanentemente a propriedade (ou pelo menos o grupo) de um volume LVM?

Imaginei que precisava usar o udev, mas não sei como deve ser a regra?

Digamos que eu queira alterar a propriedade do LVM / disco para caixa virtual de usuário / grupo, como eu faria isso?

Šimon Tóth
fonte
De qual sistema operacional você está falando? Qual LVM (OS ou Veritas?)
Nils

Respostas:

14

No Debian (e espero que sua distribuição também) todos os metadados do LVM já estejam carregados no udev (por algumas das regras em /lib/udev/rules.d). Então você pode usar um arquivo de regras como este:

$ 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"

Você pode usar o udevadm para descobrir em quais tipos de coisas você pode basear suas regras do udev. Todas as E:linhas podem ser encontradas em ENV no udev, por exemplo, a E: DM_LV_NAME=ora_datalinha correspondente a uma das regras acima:

# 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

Além disso, você pode corresponder nos atributos sysfs, no ATTR (somente dispositivo) ou ATTRS (também nos pais). Você pode ver todos os atributos como este:

# 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"

Embora essa correspondência seja mais útil para dispositivos não virtuais (por exemplo, você obterá muita saída se tentar em / dev / sda1).

derobert
fonte
0

De uma rápida olhada na documentação do udev e nas regras existentes no meu sistema, a regra abaixo (não testada) deve identificar um volume lógico específico, usando o dmsetupprograma para recuperar as informações do volume. Substitua ggggggggpelo UUID do grupo de volumes ( vgdisplay VG_NAME) e lllllllpelo UUID do volume lógico ( lvdisplay VG_NAME/LV_NAME) ou execute o dmsetupcomando manualmente para encontrar o UUID.

SUBSYSTEM=="block", KERNEL=="dm-[0-9]*", \
PROGRAM=="dmsetup info -c --noheadings -o uuid", \
RESULT=="LVM-ggggggggllllllll", \
OWNER=="letmebe", GROUP="vmusers", MODE="0660"
Gilles 'SO- parar de ser mau'
fonte