나는 (아마도 분명히) 상대적으로 새로운 Linux 사용자이기 때문에 "왜 이걸 하지 않느냐..."라는 코멘트를 준비했습니다. 그들의 목소리를 듣고 싶지만…진짜근본적으로 이해하고 싶다왜이것은 현재로서는 작동하지 않습니다.
세부 사항:
- CentOS 7+를 실행 중입니다.
- blockdev 구성(데이터베이스 서버용)에서 미리 읽기 값을 수정하려고 합니다.
- 명령줄에서 변경 사항을 구현할 수 있지만 재부팅 후에는 유지할 수 없습니다.
- 응, 난가지다재시작. 많은.
- 변경 사항을 유지하기 위해 rc.local 파일을 수정했습니다.
rc.local 파일의 구현은 다음과 같습니다.
#!/bin/bash touch /var/lock/subsys/local /sbin/blockdev --setra 128 /dev/sda /sbin/blockdev --setra 128 /dev/dm-1 /sbin/blockdev --setra 128 /dev/dm-0
답변1
잊어 버려 rc.local
...
CentOS 7을 사용하고 있습니다. 당신은 체계화했습니다. /etc/rc.local
이전 메커니즘에 대한 하위 호환성 메커니즘이기 때문에 systemd의 이중 하위 호환성 메커니즘입니다.그 자체시스템 5의 호환성 메커니즘 rc
. 아래 하이퍼링크로 연결된 AskUbuntu 질문의 혼란에서 알 수 있듯이 /etc/rc.local
사용 시 상황이 심각하게 잘못될 수 있습니다. 따라서 적절한 시스템 서비스 단위를 생성하십시오.
먼저템플릿 서비스 단위. 예를 들어 다음과 같이 부르겠습니다./etc/systemd/system/[email protected]
[단위] 문서=https://unix.stackexchange.com/questions/247436/ Description=저장 장치 %I에 사용자 정의 미리 읽기 설정 BindsTo=dev-%i.device [제공하다] 종류=일회용 ExecStart=/sbin/blockdev --setra 128 /dev/%I
적절한 장치가 도착하면 플러그 앤 플레이 장치 관리자(udev)를 예약하여 서비스 장치를 시작하십시오. 특정 요구 사항에 맞게 규칙을 조정해야 하며 다음과 같습니다.
SUBSYSTEM== "차단", ACTION== "추가|변경", KERNEL== "sd[az]", ENV{SYSTEMD_WANTS}="custom-readahead@%k"
이 SYSTEMD_WANTS
설정으로 인해 udev는 지정된 서비스를 시작합니다.인스턴스화장치별 템플릿 %k
. 그런 다음 서비스가 실행됩니다 blockdev
.
분명히 이를 수행하는 또 다른 방법이 있는데, 이는 이러한 설정을 직접 설정하는 udev의 기능에 의존합니다. 이를 위해 시스템화된 템플릿 단위나 인스턴스화된 서비스가 필요하지 않습니다. 대신 규칙에서 udev에 직접 지시하십시오.
하위 시스템 == "블록", 작업 == "추가|변경", 커널 == "sd[az]", ATTR{bdi/read_ahead_kb}="128"
==
.=
어느 쪽이든, 어디에서도 다루어지지 않습니다 rc.local
.
추가 읽기
답변2
CentOS 7에서는 rc.local이 기본적으로 실행 가능하지 않습니다.
실행: chmod +x /etc/rc.d/rc.local
활성화하십시오.