web-dev-qa-db-ja.com

RHEL5でLVMLVのデバイスノードの所有者を変更します

初めてserverfaultを使用するときは、エチケットの違反を許してください。

サーバーのローカルストレージに複数のLVM2論理ボリュームを作成しましたが、ファイルシステムやマウントポイントではなく、デバイスノードの1つをroot:root以外のユーザー/グループが所有するようにします。

これはほとんどデフォルトのRHEL5サーバーです。 LVMがディスクのpv/vg/lvsをスキャンした後、起動時にデバイスノードが動的に作成されることを理解しています。 udev、mapper、lvmがどのように相互作用してこれらのノードを作成するのかはよくわかりません。また、構成ファイルの仕様は、経験の浅い人にとっては少しわかりにくいものです。

従うべきlvがさらに増え、代替のアクセス許可も必要になりますが、理想的には、ボリュームグループ内の他のlvをroot:rootに保持し、特定のlvのみを変更したいと思います。

誰かが私がこれを理解するのを手伝ってくれる?私は何時間もグーグルしてきました。

よろしくお願いします、トニー


更新:

私はこれを次のように達成しました。それは物事を行うための回り道かもしれませんが、これは一時的な環境にすぎません(有名な最後の言葉です!)。ああ、/ tmp/fooに出力される行も削除したい場合があります。

[root@xxxxxxx rules.d]# **cat /etc/udev/rules.d/11-lvm.rules**
ACTION=="add|change", KERNEL=="dm-*", PROGRAM="/bin/sh -c /etc/udev/scripts/Oracle_perms.sh"

[root@xxxxxxx rules.d]# **cat /etc/udev/scripts/Oracle_perms.sh**
#!/bin/bash

echo "DEVPATH=$DEVPATH" >> /tmp/foo
MAJMIN=`cat /sys${DEVPATH}/dev`
echo "MAJMIN=$MAJMIN" >> /tmp/foo
MAJ=`echo ${MAJMIN} | awk -F: '{ print $1 }'`
MIN=`echo ${MAJMIN} | awk -F: '{ print $2 }'`
DEVNODE=`/sbin/dmsetup info -j ${MAJ} -m ${MIN} | grep Name | awk '{ print $2 }'`
echo "DEVNODE=${DEVNODE}" >> /tmp/foo
echo "${DEVNODE}" | grep ora >/dev/null 2>&1
if [ "$?" == "0" ]; then
  echo "Making change...." >> /tmp/foo
  chown Oracle:dba /dev/mapper/${DEVNODE}
  chmod 660 /dev/mapper/${DEVNODE}
  ls -l /dev/mapper/${DEVNODE} >> /tmp/foo
else
  echo "No 'ora' name detected. No change necessary." >> /tmp/foo
fi

上記のソリューションは、名前に「ora」が含まれるように作成されたすべてのLVを自動的に変更することに注意してください。ねえ、それは今のところ動作します。

5
user16002

以下が機能するはずです(必要に応じて適応):

# cat /etc/udev/rules.d/99-custom.rules
ENV{DM_NAME}=="system-test", ACTION=="add|change", MODE="0664", OWNER="michael", GROUP="disk", PROGRAM="/bin/logger /dev/$env{DM_NAME} owner changed to michael", SYMLINK+="Oracle-$env{DM_NAME}"

次に、結果が得られるはずです。

# lvcreate -L 1G /dev/system -n test
# ls -al /dev/dm-9 /dev/Oracle-system-test /dev/system/test /dev/mapper/system-test
brw-rw-r-- 1 michael disk 253, 9 2009-08-08 01:20 /dev/dm-9
brw-r----- 1 root    disk 253, 9 2009-08-08 01:20 /dev/mapper/system-test
lrwxrwxrwx 1 root    root      4 2009-08-08 01:20 /dev/Oracle-system-test -> dm-9
lrwxrwxrwx 1 root    root     23 2009-08-08 01:20 /dev/system/test -> /dev/mapper/system-test

LVMによって作成された実際のデバイスノードを変更する方法を理解できませんでしたが、デバイスマッパーノードを変更することはできました。次に、Oracleがアクセスするためのシンボリックリンクを追加しました。これは少しハックですが、機能します。

(私の以前の答えは少し急いでテストされていませんでした。しかし、私はそれを正しく行う方法に本当に興味がありました:)

2
MikeyB