외부 드라이브가 컴퓨터에 연결되자마자 LVM 논리 볼륨을 자동으로 마운트하고 싶습니다.
여기서 선택한 솔루션은 udev
플러그인 이벤트 감지를 사용하고 udisks2
파티션을 마운트하는 것입니다. 다른 대안은 다음을 참조하세요.논리 볼륨을 자동으로 마운트하는 보다 일반적인 방법
udev
내 접근 방식이 불운한 것인지 udisks2
, 아니면 내 성취가 실패한 것인지 궁금합니다 . 다음은 나의 모든 시도에 대한 간략한 요약입니다.
가장 간단한 udev 규칙이 작동하지 않습니다
udev
내가 보기에 이 규칙은 드라이브가 존재하고 UDISKS_AUTO
특정 파티션에 대해 설정되어 udisks2
파티션이 자동으로 마운트될 수 있다고 주장하는 데 적합한 것 같습니다 . 그래서 내 파일에 다음 규칙을 만들었습니다./etc/udev/rules.d/61-lvm-automount-lv.rules
SUBSYSTEM=="block"\
, ENV{ID_FS_UUID}=="<UUID of my LV>"\
, ENV{UDISKS_AUTO}="1"
그런 다음 규칙을 다시 로드하고 sudo udevadm control --reload
(또는 컴퓨터를 다시 시작하는 것이 좋습니다) 규칙을 읽었는지 확인하고 지정된 파티션에 대해 UDISKS_AUTO가 1로 설정되었는지 sudo udevadm test /sys/devices/virtual/block/dm-1
확인한 다음 출력 끝에서 볼 수 있는지 확인합니다.UDISKS_AUTO=1
그러나 외부 디스크를 분리/연결하면 파티션이 자동으로 마운트되지 않습니다.
journactl
find 를 통해 문제가 무엇인지에 대한 최대 정보를 찾으려고 노력했지만 udisksctl monitor
유용한 메시지는 udevadm monitor --environment --udev
다음과 같습니다.
UDEV [3897.839040] change /devices/virtual/block/dm-1 (block)
.ID_FS_TYPE_NEW=ext4
ACTION=change
DEVLINKS=/dev/mapper/wdhdd0-wd0 /dev/disk/by-uuid/b32cefaa-041e-4ef7-8c82-fe53739aefff /dev/disk/by-label/wd /dev/disk/by-id/dm-name-wdhdd0-wd0 /dev/wdhdd0/wd0 /dev/disk/by-id/dm-uuid-LVM-hwQrCjWSOCCGpJqcdPv3NHaP3OOK6kFQj2Y6j3X51A69FEYNQeHtt8wVnVnlb93N
DEVNAME=/dev/dm-1
DEVPATH=/devices/virtual/block/dm-1
DEVTYPE=disk
DM_ACTIVATION=1
DM_COOKIE=6324838
DM_LV_LAYER=
DM_LV_NAME=wd0
DM_NAME=wdhdd0-wd0
DM_SUSPENDED=0
DM_UDEV_DISABLE_LIBRARY_FALLBACK_FLAG=1
DM_UDEV_PRIMARY_SOURCE_FLAG=1
DM_UDEV_RULES=1
DM_UDEV_RULES_VSN=2
DM_UUID=LVM-hwQrCjWSOCCGpJqcdPv3NHaP3OOK6kFQj2Y6j3X51A69FEYNQeHtt8wVnVnlb93N
DM_VG_NAME=wdhdd0
ID_FS_LABEL=wd
ID_FS_LABEL_ENC=wd
ID_FS_TYPE=ext4
ID_FS_USAGE=filesystem
ID_FS_UUID=b32cefaa-041e-4ef7-8c82-fe53739aefff
ID_FS_UUID_ENC=b32cefaa-041e-4ef7-8c82-fe53739aefff
ID_FS_VERSION=1.0
MAJOR=253
MINOR=1
SEQNUM=6641
SUBSYSTEM=block
TAGS=:systemd:
UDISKS_AUTO=1
USEC_INITIALIZED=5756122
따라서 udisks2가 이 파티션을 자동으로 마운트해야 하는 것처럼 보이지만 UDISKS_AUTO=1
그렇지 않습니다. 그러나 여전히 실행할 수 udisksctl mount -b /dev/wdhdd0/wd0
있으며 이제 파티션이 수동으로 마운트됩니다.
작동하지 않는 다른 규칙
UDISKS_SYSTEM
논리 볼륨은 시스템 볼륨으로 해석될 수 있으므로 기본적으로 숨겨야 하므로 값이 변경되었습니다.
SUBSYSTEM=="block", ENV{ID_FS_UUID}=="b32cefaa-041e-4ef7-8c82-fe53739aefff", ENV{UDISKS_SYSTEM}="0", ENV{UDISKS_AUTO}="1"
. ENV{UDISKS_IGNORE}="0"
파일 시스템에 마운트하지 않고 물리 볼륨을 숨겨야 하는 이유를 완전히 이해하지만 논리 볼륨이 일부 속성을 상속할 수도 있다고 생각했습니다.
규칙이 로드되는 순서를 변경하려면 61
파일 이름 시작 부분의 숫자를 변경해야 합니다 61-lvm-automount-lv.rules
. udev 파일을 먼저 로드하는 순서대로 간단한 규칙을 미리 설정하려면, IMPORT{builtin}="blkid"
사용해 보고 싶은 분들을 위해 규칙의 시작 부분에 추가해야 합니다. 대신 간단한 규칙은 마지막으로 남겨두려고 합니다.
그러나 이러한 시도는 아무런 개선을 가져오지 못했습니다.
udev에 대한 나의 마지막 생각
마지막으로 생각한 것은 PV를 성공적으로 설치한 후 적절한 시간에 udev
LV를 수동으로 설치하는 데 사용한 셸 명령을 실행하는 것이 었습니다. /usr/bin/udisksctl mount -b /dev/wdhdd0/wd0
그래서 나는 순진하게 다음 규칙을 시도했고 991-mountthatstupidcomputer.rules
결국 이름을 평가하게 되었습니다.
ACTION=="add"\
, SUBSYSTEM=="block"\
, ENV{ID_FS_UUID}=="<UUID of my PV>"\
, RUN{program}+="/usr/bin/udisksctl mount -b /dev/wdhdd0/wd0"
udev 매뉴얼 페이지에 따르면RUN
특정 이벤트에 대한 모든 규칙이 처리된 후 실행될 프로그램 목록에 프로그램을 추가합니다.
그래서 그것은 이루어져야합니다! 하지만 자동 마운트가 다시 실패하고 로그에서 이유를 확인할 수 있습니다. 실제로 이 스크립트는 udev가 해당 PV에 대한 이벤트 추가가 완료되었다고 간주하는 즉시 실행됩니다. 그러나 그것은 dmsetup
내가 모르는 불쾌한 것들을 고려하지 않습니다 . 모든 LVM 설정이 지연된 것 같아서 udev가 내 스크립트를 실행할 때 PV가 아직 마운트되지 않은 것 같습니다. 우분투에서는 규칙에서 dmsetup 사용법을 찾을 수 있습니다.
- 55-dm. 규칙: 52
- 95-dm-알림: 12
이것이 내가 지금 붙어있는 곳입니다. dm_setup이 사용하는 것으로 보이는 DM_COOKIE 기반 솔루션이 있을 수도 있지만 dm_setup 매뉴얼을 보다가 포기했습니다. 제가 보기에는 파티션을 마운트하는 것과 같은 간단한 문제를 너무 깊게 파고든 것 같습니다. 아마도 어딘가에 더 간단한 것이 빠졌을 것입니다. 또한, 나는 표준 도구를 고수하고 조만간 충돌할 시스템에 너무 많은 스크립트를 작성하지 않기를 원합니다.
표적
궁극적으로는 표준(lvm이 아닌) 파티션이 일반적으로 마운트되는 것처럼 시스템이 주어진 논리 볼륨을 자동으로 마운트하기를 원합니다. 최선의 접근 방식에 대한 제안을 환영합니다. 이 문제를 해결하기 위해 udev와 udisks2를 사용했습니다. Ubuntu의 표준 파티션에서 완벽하게 작동하는 것 같았기 때문에 LVM에서도 동일한 효과를 얻고 싶었습니다.
편집하다
/var/log/syslog
디스크를 삽입한 직후 가장 간단한 규칙부터 시작했습니다 .
[12766.403419] usb 1-1: new high-speed USB device number 9 using xhci_hcd
[12766.553014] usb 1-1: New USB device found, idVendor=1058, idProduct=1003
[12766.553020] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[12766.553024] usb 1-1: Product: External HDD
[12766.553029] usb 1-1: Manufacturer: Western Digital
[12766.553032] usb 1-1: SerialNumber: 57442D574D41565531333130343938
[12766.553817] usb-storage 1-1:1.0: USB Mass Storage device detected
[12766.554314] scsi host5: usb-storage 1-1:1.0
mtp-probe: checking bus 1, device 9: "/sys/devices/pci0000:00/0000:00:14.0/usb1/1-1"
mtp-probe: bus: 1, device: 9 was not an MTP device
upowerd[2160]: unhandled action 'bind' on /sys/devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0
upowerd[2160]: unhandled action 'bind' on /sys/devices/pci0000:00/0000:00:14.0/usb1/1-1
kernel: [12767.564246] scsi 5:0:0:0: Direct-Access WD 15EARS External 1.75 PQ: 0 ANSI: 4
kernel: [12767.565075] sd 5:0:0:0: Attached scsi generic sg1 type 0
kernel: [12767.565196] sd 5:0:0:0: [sdc] 2930277168 512-byte logical blocks: (1.50 TB/1.36 TiB)
kernel: [12767.565482] sd 5:0:0:0: [sdc] Write Protect is off
kernel: [12767.565487] sd 5:0:0:0: [sdc] Mode Sense: 23 00 00 00
kernel: [12767.565740] sd 5:0:0:0: [sdc] No Caching mode page found
kernel: [12767.565749] sd 5:0:0:0: [sdc] Assuming drive cache: write through
kernel: [12767.620230] sdc: sdc1
kernel: [12767.621669] sd 5:0:0:0: [sdc] Attached SCSI disk
systemd[1]: Starting LVM2 PV scan on device 8:33...
lvm[31988]: 1 logical volume(s) in volume group "wdhdd0" now active
systemd[1]: Started LVM2 PV scan on device 8:33.