我在 OpenSUSE 12.2 系统上有一个外部 eSATA 硬盘。外部硬盘在 dm-crypt 分区上有一个 LVM。
我通过给它通电然后安装它
rescan-scsi-bus.sh
cryptsetup -v luksOpen
vgchange -ay
mount
现在,当我想关闭硬盘电源时,我会这样做
umount
vgchange -an extern-1
cryptsetup -v remove /dev/mapper/extern-1-crypt
echo 1 >/sys/block/sdf/device/delete
这里的设备 ( sdf
) 当前已硬编码在脚本中。我可以在脚本中从 VG 或加密设备中推断出它吗?
答案1
是的,您可以在 中找到信息/sys/block/$DEVICE/slaves
。如果您只有规范名称,则可以使用它readlink
来获取详细信息,例如:
devdm="$(readlink -f /dev/mapper/extern-1-crypt)"
dm="${devdm#/dev/}"
ls /sys/block/$dm/slaves/
如果您想删除所有内容,可以直接使用sys
文件系统:
echo 1 > /sys/block/$dm/slaves/*/../device/delete
答案2
有很多可能性:
:> # 1
:> pvscan
:> # 2
:> vgscan -v extern-1
:> # 3
:> dmsetup table /dev/mapper/extern-1-crypt
:> # 4
:> cd /sys/devices/virtual/block/
:> for dmdev in dm-*; do
:> if [ xyz = $(< "${dmdev}/dm/name") ]; then
:> ls -l "${dmsev}/slaves/"
:> fi
:> done
或者从 中获取“dm-”号码dmsetup ls
。
编辑1:
好吧,似乎除了简单的可能性之外,所有的可能性都已经存在了。看完乌尔里希的回答后,我自己也笑了……/dev/mapper
尽管一直很高兴地使用它,但显然并没有真正关注太久。