UnRAID상에 드라이브에 쓰기 캐쉬 켜기

!
경고: 이 글이 작성된 지 365일이 넘었습니다. 글의 정보가 오래되어 부정확할 수 있습니다.

만약 “일반적인 문제 해결” (Fix Common Problems) 플러그인이 다음과 같은 경고를 주었었다면:

Write Cache is disabled on parity/disk1/diskX

You may experience slow read/writes to parity/disk1/diskX. Write Cache should be enabled for better results. Read this post ( https://forums.unraid.net/topic/46802-faq-for-unraid-v6/page/2/?tab=comments#comment-755621 for more information. (…)

링크를 방문하시면, hdparm -W 1 /dev/sdX을 실행하고 성공적일 경우, 명령들을 “사용자 스크립트” (User Scripts) 플러그인에 넣고 스케줄러를 설정하여 디스크 배열이 처음으로 마운트될 때 실행되게 하라는 권고사항을 보셨을 겁니다.

그럼 다음과 같은 스크립트를 작성하게 되겠죠:

#!/bin/bash

hdparm -W 1 /dev/sdb
hdparm -W 1 /dev/sdc
hdparm -W 1 /dev/sdd
# ... 생략 ...

이 스크립트는 두 가지 방법으로 개선할 수 있습니다.

  1. 똑같은 명령을 다른 값으로 돌리고 있으니, 배열에 모두 집어넣고 다음과 같이 순차적으로 실행시킬 수 있습니다:
#!/bin/bash

declare -a drives=("sdb" "sdc" "sdd") # 여기에 더 추가

for drive in "${drives[@]}"
do
    hdparm -W 1 /dev/"$drive"
done
  1. /dev/sdX를 사용해서 디스크에 접근하지 마세요!

왜 그렇냐고요? 왜냐하면 이는 영구적이지 않고, 리눅스가 원하는 대로 재부팅할 때마다 변경될 수 있으니까요!

더 나은 방법은 드라이브의 ID를 활용하는 것입니다. UnRAID 서버에서 다음을 실행하세요:

ls -al /dev/disk/by-id | grep "ata" | grep -v "\-part"

그럼 시스템 상의 드라이브가 모두 표시되는데, ID와 무슨 /dev/sdX로 매핑되었는지 함께 표시됩니다:

# 예시 ID 값들
lrwxrwxrwx 1 root root   9 Jun 25 21:33 ata-WDC_WD1234ABCD-567890_WJAN01234567 -> ../../sdb
lrwxrwxrwx 1 root root   9 Jun 25 21:33 ata-WDC_WD1234ABCD-567890_WJAN01234568 -> ../../sdc
lrwxrwxrwx 1 root root   9 Jun 25 21:33 ata-WDC_WD1234ABCD-567890_WJAN01234569 -> ../../sdd
# ... 생략 ...

스크립트를 다시 작성하면 다음과 같이 나오게 될 것입니다:

#!/bin/bash

declare -a drives=("WDC_WD1234ABCD-567890_WJAN01234567" "WDC_WD1234ABCD-567890_WJAN01234568" "WDC_WD1234ABCD-567890_WJAN01234569") # 여기에 더 추가

for drive in "${drives[@]}"
do
    hdparm -W 1 /dev/disk/by-id/ata-"$drive"
done

“사용자 스크립트"에 추가하고 스케줄을 설정하면 됩니다!

Related Posts

댓글