SC 스토리지 고객 알림: Linux 대용량 입출력 크기는 볼륨 가용성 iSCSI에 영향을 미칠 수 있습니다.
Summary: 블록 디바이스에서 입출력 제한이 계산 되는 방식에 대 한 동작을 변경 하는 Oracle 엔터프라이즈 Linux 배포에 최근 커널 변경 사항이 도입 되었습니다.
Symptoms
알림:
이러한 변경 내용은 아래에 설명 되어 있습니다.
Oracle Linux 6/7:
ELSA-2015-3098-안정적인 Enterprise kernel security 및 버그 수정 업데이트
http://linux.oracle.com/errata/ELSA-2015-3098.html
릴리스 날짜 2015-11-13
[3.8.13-100.el6uek/3.8.13-100.el7uek]
block: remove artifical max_hw_sectors cap (Christoph Hellwig) [Orabug: 21511611]
Oracle Linux 5:
ELBA-2015-3076-안정적인 Enterprise 커널 버그 수정 업데이트
http://linux.oracle.com/errata/ELBA-2015-3076.html
릴리스 날짜 2015-08-27
[2.6.39-400.260.1.el5uek]
block: remove artifical max_hw_sectors cap (Joe Jin) [Orabug: 21455630]
개요:
Linux 시스템에 있는 각 블록 디바이스에는 큐 디렉토리가 할당 됩니다 (/sys/block/xxx/queue/에 있음 ). 이 디렉토리에는 여러 개의 구성 파일이 포함 되어 있습니다. 이러한 파일에 대 한 세부 정보는 다음 위치에서 찾을 수 있습니다.
https://www.kernel.org/doc/Documentation/block/queue-sysfs.txt
이 CSTA와 관련 된 두 가지 매개 변수:
max_hw_sectors_kb
단일 데이터 전송에서 지원 되는 최대 킬로바이트 수입니다.
이 매개 변수는 읽기 전용 이며 SCSI 조회 응답을 통해 타겟 스토리지 디바이스에서 제공 됩니다. 현재 Storage Center 운영 체제 (SCOS) 내의 SCSI 타겟 서브 시스템은 0으로 응답 합니다. 이는 제한 값을 표시 하지 않으므로 서버에서 해당 linux 커널 버전 (32MB) 내에 허용 되는 최대값으로 값을 설정 합니다.
max_sectors_kb
블록 계층이 파일 시스템 요청을 허용 하는 최대 크기 (킬로바이트)입니다.
이 값은 읽기-쓰기입니다. 이 값은 max_hw_sectors_kb 값 보다 작거나 같아야 합니다 .
커널 2.6.39-400.260.1. el5uek, 3.8.13-100el6uek 및 3.8.13-100. el7uek에 도입 된 Oracle Linux 커널을 변경 하면 max_sectors_kb 계산 되는 방식이 변경 됩니다. 이전 커널 릴리즈에서는 값이 항상 512KB로 설정 되었습니다. 이렇게 변경 하면 max_sectors_kb 값 이 max_hw_sectors_kb 값으로 설정 됩니다 . 따라서 단일 IO 전송의 최대 크기는 512KB에서 32MB로 지정 된 블록 디바이스로 늘어났습니다.
이 변경 사항으로 인해 입출력 크기 (~ 8MB)를 초과 하는 Storage Center 10Gb iSCSI 드라이버에 문제가 발생 했습니다. 대용량 입출력을 생성 하는 서버 프로세스가 중단 될 수 있습니다. 그렇지 않으면 입출력 크기가 클 경우 볼륨을 사용할 수 없게 될 수 있습니다. 또한 10Gb iSCSI 드라이버 문제로 인해 컨트롤러가 다른 Storage Center 하위 시스템에 필요한 메모리를 사용 하 게 될 수 있습니다 .이를 통해 영향을 더 크게 초래할 수 있습니다.
해결 방법:
이 문제를 방지 하기 위해 각 블록 디바이스에 대 한 max_sectors_kb Linux 서버에서 동적으로 변경 해야 합니다. Linux 시스템에 연결 된 다중 경로 블록 디바이스에 대 한 샘플 명령은 다음과 같습니다.
#mpath1:
echo 512 >/sys/block/dm-6/queue/max_sectors_kb
echo 512 >/sys/block/sdc/queue/max_sectors_kb
echo 512 >/sys/block/sde/queue/max_sectors_kb
echo 512 >/sys/block/sdk/queue/max_sectors_kb
echo 512 >/sys/block/sdm/queue/max_sectors_kb
이러한 변경 사항은 재부팅을 통해 지속 되지 않습니다. 특정 서버가 부팅 될 때이 매개 변수를 실행 하도록 init 스크립트를 구축 하 여 모든 iSCSI 블록 디바이스에 대해이 매개 변수를 수정할 수 있습니다. Linux 관리자에 게 문의 하거나, 각 고객 환경에 맞게이 유지 관리를 구현 하는 방법에 대 한 Oracle 지원을 요청 하십시오.
다음 스크립트 (udev 규칙)는 iSCSI 연결 된 모든 COMPELLENT 볼륨의 max_sectors_kb를 512kb로 설정 합니다. 보장 또는 보증이 포함 되지 않으므로이 스크립트를 직접 사용 하십시오. 스크립트를 테스트 하는 것이 좋습니다. 하지만 문제 없이 작동 해야 합니다.
99-cml-Iscsi 파일을 생성 합니다. 디렉토리 /etc/udev/rules.d/ 에는 다음과 같은 내용이 포함 되어 있습니다.
[root@localhost/] # cat/etc/udev/rules.d/99-cml-iscsi.rules
# Dell Storage Center iSCSI 매핑된 볼륨에 대 한 수정 max_sectors_kb
ACTION = = "add", \
ENV = = "*-iscsi-* compellent *", \
+ = "/Bin/sh-c ' echo 512 >/sys $ DEVPATH/queue/max_sectors_kb '을 실행 합니다.
영향을 받는 버전:
SCOS 모든 버전은 10Gb iSCSI 인터페이스를 활용 하는 영향을 받습니다. 파이버 채널, 1gb iSCSI 및 FCoE에는 영향을 미치지 않습니다.
해결 방법:
SCOS 버전 7.01.12, 7.02.01 및 7.03.01 이상에서 max_sectors_kb 문제를 해결 했습니다.
변경 내용은 SCOS 6.07.03 이상에서 10Gb iSCSI 드라이버의 메모리 소비량 문제를 해결 하기 위해 사용할 수 있습니다.