재부팅 시 내 blockdev 구성 변경 사항이 rc.local에서 실행되지 않는 이유는 무엇입니까?

재부팅 시 내 blockdev 구성 변경 사항이 rc.local에서 실행되지 않는 이유는 무엇입니까?

나는 (아마도 분명히) 상대적으로 새로운 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

활성화하십시오.

관련 정보