Make the serial port and disk glob per host

The shelf moved from iz-pve1 to iz-pve0, which has two SAS HBAs and an
internal backplane that is itself behind an expander. The default
"*-sas-exp*" glob matched all 17 drives there, so the shelf's fans would
have been set from the server's own drive temperatures.

PORT and DISK_GLOB are now overridable from the unit. Documents that the
host holding the shelf also needs the mirror-image DISK_EXCLUDE_PATTERN
in fan_speed.service - it was counting 17 disks until that was set.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Zeb Hering
2026-08-30 16:36:15 -07:00
parent 24d53e832e
commit 0fe728e28a
2 changed files with 20 additions and 5 deletions

View File

@@ -131,9 +131,20 @@ between keepalives, lower it.
- Only one process may talk to the serial port. The script takes an exclusive `flock` on
`/run/das_fanctl.lock` and exits rather than interleaving garbage with another writer.
Detach `attachDAS.sh`'s `screen` session before starting the service.
- The disk glob is `/dev/disk/by-path/*-sas-exp*-lun-0` — anything behind a SAS expander,
i.e. the shelf. The host's own drives hang off `pci-…-scsi-*` and are not matched. A
second enclosure would be lumped in with the first.
- **`DISK_GLOB` must name the shelf's HBA on any host with more than one.** The default
`*-sas-exp*-lun-0` means "behind a SAS expander", which is not the same as "in the
shelf": a server's own backplane is frequently behind an expander too. On `iz-pve0` the
internal drives sit on `pci-0000:02:00.0` and the shelf on `pci-0000:04:00.0`, so the
default glob matched all 17 drives and would have set the shelf's fans from the
server's internal drive temperatures. Set
`Environment=DISK_GLOB=/dev/disk/by-path/*04:00.0*-lun-0` in the unit.
- **The server's own fan controller needs the mirror-image setting.** Whichever host the
shelf is plugged into must set `DISK_EXCLUDE_PATTERN` to that same HBA in
`fan_speed.service`, or the shelf's drives drive the *server* fans as well. Moving the
shelf between hosts means moving both settings.
- `PORT` is per host too. Check which UART actually answers rather than assuming:
`grep -v uart:unknown /proc/tty/driver/serial` lists the real ones, then send
`_temp_rd` to each and watch for the `BlueDress` prompt.
## Files