에 일부 장치가 마운트되어 있다고 가정해 보겠습니다 /backups
. 시스템에서 선택한 파일을 백업으로 복사하고 있으며 장치에서 발생하는 소음을 줄이고 싶습니다. hdparm -M
기기의 '자동 사운드 관리(AAM)' 설정을 조정하는 데 사용할 수 있다는 것을 알고 있습니다 . 그러나 특정 디렉터리 /dev/sdc
(예: 최신 백업 위치를 계산하는 스크립트가 있는 경우 /backups/2017/12/31
) 에서 장치(예:)를 어떻게 가져와야 하는지 모르겠습니다 .
내가 할 수 있는 건
echo /dev/$(lsblk -no pkname $(findmnt -nvoSOURCE -T "$DIRECTORY"))
그러나 이를 위해서는 하드코딩된 /dev/
접두사가 필요하며 백업 디스크가 하나만 있다고 가정합니다. 어떻게 하면 이것을 더 안정적으로 만들 수 있나요?
이 질문은 특히 파티션이 아닌 올바른 디스크를 찾는 것에 관한 것입니다. 올바른 파티션을 찾으면 충분합니다 df
.findmnt
또한 디렉터리가 장치에 마운트된 경우 상위 장치는 호환되지 않는 장치 md
와 같습니다 . 이 경우 기본 디스크가 여러 개 있으므로 실제로 이 질문은 단일 파일이나 디렉터리를 하나 또는 여러 디스크에 매핑하는 것에 관한 것입니다. .md0
hdparm
답변1
이 스크립트는 가장 안정적인 것으로 보입니다(단일 SATA 디스크 및 소프트웨어 RAID에서 작동).
lsblk --list -no type,name --inverse $(findmnt -nvoSOURCE -T "$DIRECTORY") \
| grep ^disk | awk '{ print $2 }' | sort -u \
| while read name; do echo "Data on /dev/$name"; done
물론 echo
명령을 각 디스크에서 수행하려는 실제 작업으로 바꾸십시오.
4 디스크 MD 소프트웨어 raid의 디렉토리 출력 예:
Data on /dev/sda
Data on /dev/sdb
Data on /dev/sdc
Data on /dev/sdd
디스크 1개로 구성된 일반 파티션의 디렉터리 출력 예:
Data on /dev/sdf
답변2
쉽게 알 수 있는 방법은 df
폴더의 (절대) 경로를 사용하여 호출하는 것입니다.
$ df $DIRECTORY
file system 1K-blocks used available used% mounted at
/dev/sda1 303538544 74465700 213630924 26% /root/of/variable/DIRECTORY