8장. Red Hat Enterprise Linux의 Directory Server
Red Hat Enterprise Linux용 Directory Server 정보
이 섹션에서는 Red Hat Directory Server의 기본 서버 구성 요소인 389-ds-base 패키지(LDAP 서버 자체 및 명령줄 유틸리티 및 관리를 위한 스크립트 포함)의 변경 사항에 대해 설명합니다. 이 패키지는 Red Hat Enterprise Linux 기본 서브스크립션 채널의 일부이므로 이를 사용하는 Red Hat Identity Management 구성 요소로 인해 모든 Red Hat Enterprise Linux Server 시스템에서 사용할 수 있습니다.
Directory Server Console 과 같은 추가 Red Hat Directory Server 구성 요소는 rhel-x86_64-server-6-rhdirserv-9 추가 서브스크립션 채널에서 사용할 수 있습니다. Red Hat Directory Server에 대한 지원을 받으려면 이 채널에 대한 서브스크립션도 필요합니다. 이 채널의 추가 구성 요소에 대한 변경 사항은 이 문서에 설명되어 있지 않습니다.
Red Hat Directory Server 버전 9는 Red Hat Enterprise Linux 6에서 사용할 수 있습니다. 전체 문서는 https://access.redhat.com/products/red-hat-directory-server/get-started-v9 에서 Directory Server 9 시작하기 및 https://access.redhat.com/documentation/en/red-hat-directory-server/?version=9 를 참조하십시오. (BZ#1333801)
소수 복제에서 많은 양의 건너뛰기된 업데이트로 인해 더 이상 성능이 손실되지 않음
소수 복제 중에 건너뛰는 많은 업데이트가 있는 경우 공급자는 이전에 장기 복제본을 취득하고 세션 종료 시 복제본 업데이트 벡터(RUV)를 업데이트하지 못할 수 있습니다. 이로 인해 다음 세션에서 동일한 건너뛰기 업데이트를 평가하여 성능이 저하되었습니다. 이 버그는 복제할 적용 가능한 변경 사항이 없는 경우에도 종종 업데이트되는 시스템 하위 항목을 추가하여 수정되었으며 문제가 더 이상 발생하지 않습니다. (BZ#1259383)
Retro changelog를 트리밍하는 동안 충돌 수정
retro changelog (
retroCL)를 트리밍하는 경우 먼저 변경 로그 자체에서 항목이 삭제되고 캐시에서도 항목이 삭제됩니다. 그러나 389-ds-base 서버는 항목이 캐시에 실제로 존재하는지 확인하는 검사가 누락되어 서버가 존재하지 않는 항목을 삭제하려고 시도한 후 작은 크기로 인해 모든 변경 로그 항목이 캐시에 맞지 않는 시스템에서 충돌할 수 있었습니다. 캐시에 실제로 존재하는 항목만 삭제되고 Retro changelog를 트리밍할 때 서버가 더 이상 충돌하지 않도록 검사가 추가되었습니다. (BZ#1244970)
백엔드 add 함수에서 충돌 수정
백엔드의
BE_TXN 의 콜백이 캐시된 항목에서 실패한 후 캐시에서 항목을 제거한 다음 해제하는 대신 항목을 두 번 해제하려고 했습니다. 이번 업데이트에서는 백엔드 add 함수에 제거 및 사용 가능한 코드가 추가되어 더 이상 캐시된 항목을 두 번 해제하려고 시도하지 않습니다. (BZ#1265851)
389-DS-base 서버가 존재하지 않는 속성을 교체하려고 할 때 더 이상 충돌하지 않음
새 값을 제공하지 않고 존재하지 않는 속성의 교체 작업을 수행하면 항목이 잘못된 메타데이터로 저장되었습니다. 즉 속성 삭제 상태 번호(CSN)가 없는 빈 삭제된 값입니다. 이 항목은 메모리가 손상되고 서버가 예기치 않게 종료될 수 있었습니다. 이 버그를 해결하기 위해 메타데이터를 저장할 추가 공간이 할당되어 이 시나리오에서 서버가 더 이상 충돌하지 않습니다. (BZ#1298496)
389-DS-base 가 수정된 입력이 잠긴 상태로 인해 더 이상 중단되지 않음
수정 작업 중에 수정된 항목이 항목 캐시에 삽입되고 수정된 항목이 반환될 때까지 잠깁니다. 항목이 커밋된 후 항목 캐시에서 제거된 경우 반환 작업 전에 수정된 항목이 이전에 잠겼고 동일한 항목에 대한 후속 쓰기 작업으로 인해 서버가 중단되었습니다. 이 버그는 항목이 항목 캐시에 있는지 여부에 관계없이 잠금 해제할 수 있도록 플래그를 추가하여 수정되었으며 서버는 이 상황에서 더 이상 중단되지 않습니다. (BZ#1273552)
Directory Server에서 백엔드 삭제 중 교착 상태 수정
이전에는 백엔드 삭제 중에 데이터베이스 도우미 기능 중 하나로 트랜잭션 정보가 전달되지 않았습니다. 이로 인해 플러그인이 트랜잭션에 의해 잠긴 영역의 데이터에 액세스하려고 하면 교착 상태가 발생할 수 있습니다. 이번 업데이트를 통해 트랜잭션 정보는 필요한 모든 데이터베이스 도우미 함수에 전달되고, 설명된 상황에서 교착 상태가 더 이상 발생하지 않습니다. (BZ#1278585)
요청이 안전한 경우 NS-slapd 가 여러 비동기 검색에서 더 이상 충돌하지 않음
여러 개의 간단한 페이지된 결과 검색이 지속적인 연결에서 비동기적으로 요청되고 요청 중 하나가 중단되면 비동기 요청 간 경합이 발생하여
ns-slapd 서비스가 충돌할 수 있었습니다. 이 버그는 수정되었으며 잘못된 요청으로 인해 ns-slapd 가 더 이상 충돌하지 않습니다. (BZ#1247792)
검색 실패 후 간단한 페이지된 결과 슬롯이 이제 올바르게 릴리스됨
이전 버전에서는 간단한 페이지된 결과 검색이 Directory Server 백엔드에서 실패한 경우 슬롯이 해제되지 않아 연결 개체가 시간이 지남에 따라 해제되지 않은 슬롯을 누적했습니다. 이 문제는 해결되었으며 검색 실패 시 슬롯이 올바르게 릴리스됩니다. (BZ#1290243)
search results 오브젝트를 확보할 때 NS -slapd 가 더 이상 충돌하지 않음
이전 버전에서는 Directory Server에서 검색 결과 개체를 확보할 때 사용 가능한 정보가
pagedresults handle로 설정되기까지의 짧은 기간이 있었습니다. 이 기간 동안 시간 초과로 인해 paged-results 처리가 릴리스되면 이중 무료 이벤트가 발생하여 ns-slapd 가 충돌합니다. 이 문제는 제거되었으며 검색 결과 개체를 확보할 때 이중 무료가 발생하지 않습니다. (BZ#1267296)
비동기적으로 간단한 페이지가 지정된 결과 요청에서 교착 상태를 수정
비동기 단순 페이지된 결과 요청에서 교착 상태에 대한 이전 수정으로 인해 회귀 문제로 인해 또 다른 자체 교착 상태가 발생했습니다. 이 문제를 해결하기 위해 연결 오브젝트의 간단한
PR_Lock 이 재분명 PR_Monitor 로 교체되었습니다. 결과적으로 교착 상태가 더 이상 발생하지 않습니다. (BZ#1296694)
마스터 서버에서 값이 없는 속성 삭제가 올바르게 복제됨
이전에는 마스터 서버의 값이 없는 속성이 삭제되면 삭제가 다른 서버에 복제되지 않았습니다. 이 버그로 인한 회귀 문제가 수정되었으며 이제 변경 사항이 예상대로 복제됩니다. (BZ#1251288)
Directory Server에서 더 이상 false attrlist_replace 오류를 기록하지 않음
이전에는 Directory Server가 일부 상황에서
attrlist_replace 오류 메시지를 오류가 반복적으로 로깅할 수 있었습니다. 이 문제는 메모리 복사 기능이 잘못 사용되었기 때문에 메모리 손상으로 인해 발생했습니다. 메모리 복사 기능이 memmove 로 교체되어 이 경우 메모리 손상을 방지하고 서버가 더 이상 이러한 오류 메시지를 기록하지 않습니다. (BZ#1267405)
cleanAllRUV 이제 변경 로그를 완전히 지웁니다.
이전 버전에서는
cleanAllRUV 작업이 완료된 후에도 변경 로그에 정리된 제거 의 항목이 포함되어 있었습니다. 결과적으로 RUV에는 바람직하지 않은 데이터가 포함될 수 있으며 RUV 요소는 복제본 URL을 누락할 수 있었습니다. 이제 cleanAllRUV 는 변경 로그를 예상대로 완전히 정리합니다. (BZ#1270002)
복제 실패로 인해 추가 업데이트 후 변경 사항이 누락되지 않음
이전 버전에서는 소비자 측에서 복제된 업데이트가 실패한 경우 복제 비동기 결과 스레드의 버그로 인해 다른 업데이트가 성공적으로 복제되기 전에 오류를 놓쳤기 때문에 재시도되지 않았습니다. 두 번째 업데이트는 또한 소비자 Replica Update Vector (RUV)를 업데이트하고 첫 번째 (실패) 업데이트가 손실되었습니다. 이번 릴리스에서는 복제 실패로 인해 연결이 닫히고 복제 세션을 중지하고 후속 업데이트가 소비자 RUV를 업데이트하지 못하도록 하여 공급자는 다음 복제 세션에서 작업을 다시 시도할 수 있습니다. 따라서 업데이트가 손실되지 않습니다. (BZ#1294770)
불필요한 계속 활성 항목으로 인해 더 이상 누락된 복제가 발생하지 않음
이전 버전에서는 복제 중에
계속 활성 항목이 너무 많은 경우 생성되어 복제 변경 로그에 항목을 추가할 때 경쟁 조건이 발생하여 복제에서 작업이 삭제될 수 있었습니다. 이번 업데이트를 통해 불필요한 계속 활성 항목 생성이 제거되었으며 더 이상 누락된 복제가 발생하지 않습니다. (BZ#1307152)
nsMatchingRule 이 속성 정보에 올바르게 적용됨
이전에는 인덱스 항목에서
nsMatchingRule 이 동적으로 업데이트되면 값이 특성 정보에 적용되지 않았습니다. 이로 인해 dbverify 유틸리티에서 오류의 데이터베이스 손상을 보고했습니다. 이번 릴리스에서는 nsMatchingRule 변경 사항이 속성 정보에 올바르게 적용되고 dbverify 는 더 이상 데이터베이스 손상을 잘못 보고하지 않습니다. (BZ#1236656)
tombstone 항목이 더 이상 불필요한 인덱스 항목을 생성하지 않음
항목이 삭제되면 인덱스 속성 값도 각 인덱스 파일에서 제거됩니다. 그러나 항목이 tombstone 항목으로 전환되면 이전에 제거된 특성 값을 다시 인덱싱하여 인덱스에 다시 추가했습니다. 이 버그는 수정되었으며 인덱스 파일에는 tombstone 항목에서 생성된 불필요한 키-값 쌍이 더 이상 포함되지 않습니다. (BZ#1255290)
동일한 속성의 여러 값이 삭제되면 인덱스가 올바르게 업데이트됨
이전 버전에서는 ldapmodify 명령을 사용하여 동일한 속성의 여러 값을 삭제하고 동일한 작업 중에 하나 이상의 값이 다시 추가되면 같음 인덱스가 업데이트되지 않았습니다. 결과적으로 re-added 특성 값을 정확하게 검색해도 해당 항목이 반환되지 않았습니다. 항목의 값 중 하나 이상이 변경되고 다시 추가 된 특성 값을 정확하게 검색하면 인덱스를 업데이트하도록 인덱스 코드의 논리가 수정되어 올바른 항목이 반환됩니다. (BZ#1282457)
COS 캐시가 모든 정의 추가
COS(Class of Service) 오브젝트 캐시와 관련된 이전 버그 수정으로 인해 모든 정의를 추가하는 대신 첫 번째 정의 뒤에 정의를 추가하는 것을 중지했습니다. 이 문제가 해결되어 이제 COS 캐시가 모든 정의를 설계한 대로 올바르게 추가합니다. (BZ#1259546)
ACL 성능 개선
이전에는 Directory Server의 ACL(액세스 제어 목록) 구현에 불필요하게 복잡한 정규식이 사용되었습니다. 이러한 정규식이 제거되고 ACL 구현이 다시 수행되어 성능이 향상됩니다. (BZ#1236156)
ntUserlastLogon 및 ntUserlastLogoff 속성이 Directory 서버와 Active Directory 간에 동기화됨
이전 버전에서는
WinSync 계정 동기화에서 Active Directory와 동기화할 때 Directory Server의 ntUserlastLogon 및 ntUserlastLogoff 속성을 업데이트할 수 없었습니다. 이 버그는 수정되었으며 이제 Active Directory의 lastLogonTimestamp 및 lastLogoffTimestamp 속성을 기반으로 이러한 속성이 올바르게 업데이트되고 있습니다. (BZ#1245237)