지연 후 Luks 볼륨을 자동으로 일시중지합니다.

지연 후 Luks 볼륨을 자동으로 일시중지합니다.

luksSuspendLuks 볼륨을 한동안 사용하지 않은 후 자동으로 이 작업을 수행하는 방법을 아는 사람이 있습니다 . 명령 crontab이나 다른 것을 예약하려고 생각하고 있지만 실제로 볼륨을 사용하는 경우 일시 중지되는 것을 원하지 않습니다.

답변1

장치를 사용하는 동안 사용하도록 되어 luksSetup있지만 외부 소스에서 비밀번호를 입력할 때까지 해당 장치에 대한 모든 액세스를 일시적으로 잠그고 싶습니다. 따라서 luksSetup장치를 사용하지 않을 때 그냥 호출하는 것은 별 의미가 없습니다. 사용하지 않는 경우 장치를 닫는 데 사용하세요 luksClose.

장치를 자동으로 사용하지 않고 호출하도록 할 수 있는 방법은 없습니다 luksSuspend. 장치를 사용하지 않을 때만 장치를 일시 중단하고 싶은 경우 다음을 수행할 수 있습니다. 호출한 luksSuspend다음 마운트 된 항목을 확인하십시오 fuser. lsof암호화된 장치의 파일 시스템에 있는 파일; 파일 시스템이 사용 중인 경우 luksResume즉시 호출하십시오. 실제로 비밀번호를 입력하라는 메시지가 표시될 가능성은 거의 없습니다.

파일 시스템이 사용 가능한지 확인하려면 autofs와 같은 기존 자동 마운트를 피기백하는 것이 좋습니다.

답변2

나는 합리적으로 잘 작동하는 일련의 스크립트를 작성했지만 누군가가 있다면 여전히 다른 제안을 찾고 있습니다.

내가 한 일은 luks 볼륨을 일시 중지하는 스크립트를 작성하는 것이었습니다. 한 스크립트는 wall(터미널에서) 모든 사용자에게 일시 중지될 것임을 알리는 메시지를 보내고, 다른 스크립트는 볼륨을 열어 두라고 지시합니다(보존 볼륨에 기록). 파일이 있는 경로) /var/run. cron을 사용하여 30분마다 자동 일시 중단 스크립트를 실행하고 그 2분 전에 "경고" 스크립트를 실행합니다(볼륨이 실제로 열려 있을 때만 경고합니다). 누구든지 이 스크립트에 관심이 있다면 게시하거나 최소한 이에 대한 자세한 내용을 게시할 수 있습니다.

답변3

lsofIO를 사용하여 실행 중인 프로세스가 있는지 확인하고 PID를 pidstatIO 분석에 전달하는 것이 좋습니다 . 여기서는 프로세스가 LUKS 볼륨의 기본 파일 시스템에 액세스하고 있는지 여부에 따라 일시 중단이 안전하고 바람직한지 여부를 알아봅니다.

이를 통해 예상치 못한 방식으로 프로세스가 중단되거나 손상될 염려 없이 자신있게 스크립트 일정을 계획할 수 있습니다.

#!/bin/bash

if [ ! $1 ] ; then
  echo "Usage: $0 device-path"
  exit 1
fi

DEVICE=$1

# Collect PIDs that are running on LUKS filesystem
pids=$(lsof $DEVICE | tail -n+2 | awk '{ print $2 }')

SUSPEND=1
if [ "$pids" ] ; then
  # Get the IO statistics of each process running from LUKS device
  pidactivity=$(echo -E "$pids" | tr "\n" "," | xargs pidstat -d -p)

  # Pull out only the IO fields of the pidstat response
  pidio=$(echo -E "$pidactivity" | tail -n+4 | awk '{ print $5 " " $6 }')

  # If there is IO going on for any of these PIDs, we should suspend
  for io in "$pidio" ; do
    for stat in $io ; do
      if [ `echo "$stat > 0" | bc` -gt 0 ] ; then
        SUSPEND=0
        break 2
      fi
    done
  done
fi

if [ $SUSPEND -eq 1 ] ; then
  cryptsetup luksSuspend $DEVICE
fi

관련 정보