Skip to content

Releases: infinistor/ksan

KSAN v1.4.2

10 May 08:48
a59bf85
Compare
Choose a tag to compare

ksanApiPortal

  • (NEW) Ksan Disk, DiskPool 추가 시 Id를 입력 할 수 있도록 수정 (#288)
  • (NEW) User 추가 시 Id, Access Key, Secret Key 지정 가능하도록 변경 (#283)
  • (NEW) KSAN Server 추가 시 Id, HostName을 입력 할 수 있도록 수정 (#287)
  • (NEW) KSAN Service 추가 시 Id를 입력 할 수 있도록 수정 (#284)
  • (BUG-FIX) Server, Service의 상태가 정상임에도 Timeout 상태로 변하는 버그 수정(#286)
  • (BUG-FIX) Modified User 업데이트 안되는 버그수정 (#285)

CLI & Utility

통합 관리 도구(CLI)

  • (BUG-FIX) 직전 릴리즈(v1.4.1)에 포함된 CLI 도구 바이너리의 실험적 설정 항목을 제거함 (#289)

KSAN v1.4.1

23 Feb 03:40
3c5becc
Compare
Choose a tag to compare

ObjManager

  • (ENHANCEMENT) Match the data storage difference between MongoDB and MariaDB back-end (#272)
  • (BUG-FIX) MariaDB back-end prepared statement resource release bug fix (#273)

ksanGW

AWS S3-Compatible API 지원

  • (BUG-FIX) ListBucketInventory - inventory 내용이 없는 경우에 대한 버그 수정 (#278)
  • (BUG-FIX) ListBucketAnalytics - analytics 내용이 없는 경우에 대한 버그 수정 (#277)
  • (ENHANCEMENT) DeleteBucketInventory - Error Log 추가 (#276)
  • (BUG-FIX) writePID 버그 수정 (#275)
  • (ENHANCEMENT) Admin REST에 대한 로그를 backend 전용 queue로 전송 (#244)
  • (ENHANCEMENT) Log 데이터 중 Date 포멧 변경 (#254)
  • (ENHANCEMENT) S3Logging을 ExcutorService로 변경 (#256)
  • (ENHANCEMENT) Admin REST opcode 변경 (#257)
  • (ENHANCEMENT) Azure API 관련 수정 (#264)
  • (ENHANCEMENT) Object 저정 방식 일부 변경 (#266)
  • (ENHANCEMENT) DeleteObject에 error 로그 추가 (#267)
  • (ENHANCEMENT) TagIndex에 대한 Signing pass 코드 삭제 (#268)
  • (ENHANCEMENT) CompleteMultipart 에서 contents Length 계산 추가 (#269)
  • (ENHANCEMENT) Libs - OSDClient:getSocket 함수 주석 제거 (#270)

ksanApiPortal

  • (NEW) mariadb 설정 정보 조회 기능 추가 (#265)
  • (NEW) rabbitmq 연결 문제 체크 기능 추가 (#200)
  • (NEW) metering 조회 API 추가 (#247)
  • (NEW) accessips API 추가 (#260)
  • (NEW) Access Log 추가 (#238)
  • (BUG-FIX) 서버, 서비스 상태조회시 에러 수정 (#271)
  • (BUG-FIX) Logout 작동 버그 수정 (#167)

ksanLogManager

  • (ENHANCEMENT) 모든 로그를 mariadb에 저장하도록 변경 (#255)
  • (ENHANCEMENT) db config를 공용으로 변경 (#249)
  • (NEW) Backend Log 저장 기능 추가 (#253)
  • (NEW) Backend Log Metering 기능 추가 (#253)
  • (NEW) Log table 롤링 기능 추가 (#252)
  • (BUG-FIX) metering의 timestamp를 gmt에서 서울로 고정 (#259)
  • (BUG-FIX) metering의 버킷 정보 누락 수정 (#258)
  • (BUG-FIX) s3log 저장 버그 수정 (#251)
  • (BUG-FIX) replication event log 누락 수정 (#250)
  • (BUG-FIX) metering이 특정상황에서 저장되지 않는 버그 수정 (#280)

ksanReplicationManager

  • (ENHANCEMENT) replication event를 rabbitmq에서 mariadb로 저장 방식 변경 (#263)
  • (NEW) replication log에 소요 시간 추가 (#248)

KSAN v1.4.0

04 Dec 07:06
ca253a3
Compare
Choose a tag to compare

ObjManager

  • (ENHANCEMENT) Uniqe indexing of an object table change from objid, versionid, deletemark and lastversion to objid, versionid and deletemarke to avoid duplicate result (#241)
  • (NEW) Bucket analytics , notification and inventory configurations are added to bucket storage(#239)
  • (NEW) Sort list bucket result alphabetically (#240)
  • (BUG-FIX) Fix a bug caused due to usage of mongodb special character inside object key (#213)
  • (BUG-FIX) Diskpool disk status update bug fix (#214)

ksanGW

AWS S3-Compatible API 지원

  • (BUG-FIX) KsanGetObject VersionId 설정 버그 수정 (#235)
  • (BUG-FIX) KsanUtils makeDirectoryName 버그 수정 (#234)
  • (BUG-FIX) KsanPutObject ContentLength 설정 버그 수정 (#233)
  • (ENHANCEMENT) KsanPutObject 동일한 VersionId인 경우 이전 object를 삭제 (#232)
  • (NEW) Object Index Depth 설정 추가 (#231)
  • (NEW) Multipart Upload Method 설정 추가 (#230)
  • (BUG-FIX) DeleteObjejcts marker 삭제되지 않는 버그 수정 (#226)
  • (BUG-FIX) S3Logging에서 VersionId가 출력되지 않는 버그 수정 (#225)
  • (BUG-FIX) makeAcl, admin용 추가 (#223)
  • (BUG-FIX) S3Logging에서 bucket name 출력되지 않는 버그 수정 (#222)
  • (NEW) BucketNotification 추가 (#221)
  • (NEW) BucketInventory 추가 (#220)
  • (NEW) RequestPayment 추가 (#218)
  • (NEW) BucketAnalytics 추가 (#217)
  • (NEW) BucketAccelerate 추가 (#216)

ksanOSD

  • (BUG-FIX) CacheToDisk - Cache 파일 삭제 버그 수정 (#236)

ksanApiPortal

  • (ENHANCEMENT) rabbitmq 연결 문제시 callback 함수 추가 (#200)
  • (ENHANCEMENT) 환경 변수로 region 정보 입력 기능 추가 (#237)
  • (ENHANCEMENT) access log 추가 (#238)
  • (ENHANCEMENT) dotnet core 7.0으로 변경

ksanLifecycleManager

  • (ENHANCEMENT) java 17로 변경
  • (ENHANCEMENT) ServiceId 참조 경로 변경 (#197)
  • (ENHANCEMENT) Filtering 방식 변경 (#199)

ksanLogManager

  • (ENHANCEMENT) java 17로 변경
  • (ENHANCEMENT) ServiceId 참조 경로 변경 (#197)

ksanReplicationManager

  • (ENHANCEMENT) java 17로 변경
  • (ENHANCEMENT) ServiceId 참조 경로 변경 (#197)
  • (ENHANCEMENT) Region별 Alive 체크 기능 제거 (#198)

CLI & Utility

통합 관리 도구(CLI)

  • (ENHANCEMENT) ksan service/disk start/stop & diskpool add/remove 시에 여러 객체를 일괄로 수행 되도록 수정 (#228)

ETC

KSAN Installer

  • All-in-One 설치 모드에서 KSAN 시스템의 Region 정보 입력 추가
  • Offline 설치 옵션 추가

한계 및 향후 계획

한계 및 알려진 문제점

  • ksanReplicationManager
    • DeleteMarker 동기화 기능 동작시 DeleteObjects로 삭제한 오브젝트의 동기화가 올바르게 동작하지 않음
    • CopyObject로 업로드한 오브젝트가 복제되지 않음
    • DeleteMarker 버전 아이디가 동일하게 복제되지 않음

향후 계획

  • ksanReplicationManager
    • 알려진 문제점 해결 (DeleteMarker, CopyObject 대응 등)
  • ksanGW
    • Azure Blob Service 안정화
    • Erasure Coding 기능 안정화
  • ksanFSCK
    • 개선된 Erasure Coding 오브젝트 정합성 검사 및 복구 지원

KSAN v1.3.1

06 Oct 09:21
f145956
Compare
Choose a tag to compare

ObjManager

  • (ENHANCEMENT) Add a new get Expired object list API’s (#196)
  • (ENHANCEMENT) List object query with delimiter performance improvement (#204)
  • (ENHANCEMENT) Multipart indexing improvement (#205)
  • (BUG-FIX) Disk pool default replica count information change update bug fix (#206)

ksanGW

AWS S3-Compatible API 지원

  • (BUG-FIX) ListObjects 시 user-meta-data 인식 버그 수정 (#187)
  • (ENHANCEMENT) ServiceID 파일 위치 변경 (#189)
  • (ENHANCEMENT) PutObject 시 디스크 장애 처리 추가 (#190)
  • (ENHANCEMENT) SpotBugs 코드 수정 (#191)
  • (ENHANCEMENT) objmanager의 multipart 관련 개선에 따른 코드 변경 (#201)

GCP Storage API 지원

  • (NEW) GCS HMAC Key 인증 (#185)
  • (NEW) GCSCreateBucket (#186)
  • (NEW) GCSDeleteBucket (#186)
  • (NEW) GCSListBucket (#186)
  • (NEW) GCSPutObject (#186)
  • (NEW) GCSHeadObject (#186)
  • (NEW) GCSGetObject (#186)
  • (NEW) GCSListObjects (#186)

ksanOSD

  • (ENHANCEMENT) ServiceID 파일 위치 변경 (#189)
  • (ENHANCEMENT) SpotBugs 코드 수정 (#191)
  • (ENHANCEMENT) OSD 종료 시, IO 작업 완료 처리 (#194)
  • (ENHANCEMENT) CacheToDisk 최적화 (#203)

ksanAgent

  • (ENHANCEMENT) osd config key 및 default value 변경 (#195)
  • (ENHANCEMENT) service stop 시 서비스가 수행 중인 작업 완료 후 종료 할 수 있도록 signal 처리 할 수 있는 sigterm 으로 정지 (#193)
  • (BUG-FIX) service가 비정상 상태일 때 정상으로 체크 되는 문제 (#192)

ksanApiPortal

  • (NEW) rabbitmq 연결 문제 체크 callback 함수 추가 (#200)

ksanLifecycleManager

  • (ENHANCEMENT) serviceId 파일 경로 변경 (#197)
  • (ENHANCEMENT) Lifecycle filtering 성능 개선 (prefix, expired 값을 코드내에서 처리하지 않고 쿼리로 변경) (#199)
  • (BUG-FIX) Lifecycle filtering 오타 수정 (#199)

ksanLogManager

  • (NEW) serviceId 파일 경로 변경 (#197)

ksanReplicationManager

  • (NEW) serviceId 파일 경로 변경 (#197)
  • (ENHANCEMENT) 불필요한 체크 기능 제외하여 성능개선 (#198)

ETC

서비스 ID 저장 위치 변경

  • (기존) /usr/local/ksan/sbin → (변경) /usr/local/ksan/etc

한계 및 향후 계획

한계 및 알려진 문제점

  • ksanReplicationManager
    • DeleteMarker 동기화 기능 동작시 DeleteObjects로 삭제한 오브젝트의 동기화가 올바르게 동작하지 않음
    • CopyObject로 업로드한 오브젝트가 복제되지 않음
    • DeleteMarker 버전 아이디가 동일하게 복제되지 않음

향후 계획

  • ksanReplicationManager
    • 알려진 문제점 해결 (DeleteMarker, CopyObject 대응 등)
  • ksanGW
    • Azure Blob Service 안정화
    • Erasure Coding 기능 안정화
    • GCP Cloud Storage Service 추가 및 안정화
  • ksanFSCK
    • 개선된 Erasure Coding 오브젝트 정합성 검사 및 복구 지원

KSAN v1.3.0

26 May 07:34
4c9e0b5
Compare
Choose a tag to compare

ksanGW

AWS S3-Compatible API 지원

  • (NEW) EC(Erasure Code) 추가 (#125)
  • (ENHANCEMENT) POLICY에 IP 설정 추가 (#130)
  • (NEW) GW Config log 옵션에 따라 Log를 생성 (#131)
  • (NEW) KsanRestore, KsanStorageMove 추가 (#132)
  • (ENHANCEMENT) 각 Request에서 필요한 Data를 얻기 위해 따로 구현했던 Data Class들을 S3RequestData로 통합 (#137)
  • (ENHANCEMENT) S3Metadata에서 fastxml을 사용하지 않도록 수정, 속도 향상 (#138)
  • (ENHANCEMENT) ACL에 display name이 없는 경우에도 정상 동작하도록 수정 (#141)
  • (ENHANCEMENT) 다양한 Object 저장 시스템에 적용하기 위해서 IObjectManager로 인터페이스화 하고 기존 S3ObjectOperation 클래스를 VFSObjectManager로 변경 새로 작성, Multipart 방식을 새로운 방식으로 변경. CompleteMultipartUpload에서 생성된 파일은 Part 파일에 대한 정보로 구성되도록 함. (#169)
  • (BUG-FIX) PutObject 시에 Replica에 저장되지 않는 버그 수정 (#170)
  • (BUG-FIX) VFSObjectManager에서 OSD/getObject를 하는 경우 sourceRange와 encryption key 순서를 반대로 지정하는 버그 수정 (#171)
  • (BUG-FIX) https로 접근이 되지 않는 버그 수정 (#172)
  • (BUG-FIX) VFSObjectManager/PutObject에서 기존 Metadata의 versionId로 Object를 생성하는 버그를 새로운 versionId로 생성하도록 수정 (#173)
  • (BUG-FIX) PostObject Request 시에, object meta에 content length를 설정하지 않는 버그 수정 (#174)
  • (ENHANCEMENT) Encryption 관련 클래스를 통합하고 KMS 추가 (#175)
  • (BUG-FIX) UploadPartCopy 시에 source object가 multipart object인 경우 인식하지 못하는 버그 수정 (#176)
  • (BUG-FIX) HeadObject에서 x-amz-version-id를 두 번 response로 보내는 버그 수정 (#180)

\

ObjManager

  • (ENHANCEMENT) 독립적인 ObjManager 설정 및 적용
  • (BUG-FIX) Listobject performance improvements

\

ksanOSD

  • 변경 사항 없음

ksanAgent

  • (ENHANCEMENT) rabbitmq 서버 연결 실패 시 retry 기능 추가
  • (BUG-FIX) 서비스 추가 시 .ServiceId 파일의 ServiceId 중복되는 버그 수정

ksanApiPortal

  • (NEW) DiskpoolType에 PERFORMANCE 타입 추가
  • (NEW) User Name, Diskpool Name으로 User Storage class 변경 API 추가
  • (NEW) objManager Config 설정 기능 추가(#160)
  • (NEW) User Storage Class 관리 API 추가(#150)
  • (ENHANCEMENT) Disk Week 상태 로직 변경(#165)
  • (ENHANCEMENT) 최초 설치시 설정한 사용자 명과 비밀번호를 Portal의 메인 계정으로 설정(#163)
  • (ENHANCEMENT) 불필요한 Service Type 제거(#161)
  • (ENHANCEMENT) objManager config를 Portal에서 받아가도록 변경(#168)
  • (ENHANCEMENT) mariadb와 mongodb간의 스키마가 다른 부분 수정
  • (ENHANCEMENT) backend 관련 서비스 등록 기능 추가(#156)
  • (ENHANCEMENT) EC의 K, M 값 입력 가능하도록 변경
  • (ENHANCEMENT) 기본 디스크풀 변경 기능 추가(#154)
  • (ENHANCEMENT) 기본 디스크풀 변경 API를 Post에서 Put으로 변경
  • (ENHANCEMENT) 할당된 디스크들에 대한 예외처리를 추가(#152)
  • (BUG-FIX) ksanUser의 Storage Class 등록이 안되는 버그 수정(#159)
  • (BUG-FIX) Disk 상태가 반영되지 않는 버그 수정(#152)
  • (BUG-FIX) Config 설정시 알람이 가지 않는 버그 수정(#151)

ksanPortal (WEB UI)

  • (NEW) Portal UI 추가
  • (ENHANCEMENT) 새로고침 기능 개선(#166)
  • (ENHANCEMENT) 각모듈의 이름에 필터링 기능 추가(#162)
  • (ENHANCEMENT) portal에서 DiskPool의 EC값 입력기능 지원(#158)
  • (ENHANCEMENT) 서비스를 선택하지 않을 경우 삭제,시작,정지,재시작버튼 비활성화
  • (ENHANCEMENT) 추가폼을 열때마다 초기화 하도록 변경
  • (ENHANCEMENT) storage class 예시 추가
  • (ENHANCEMENT) 기본 디스크풀 변경 기능 추가(#154)
  • (BUG-FIX) 로그아웃 안되는 버그 수정 (#167)
  • (BUG-FIX) 불필요한 경고문 제거(#157)
  • (BUG-FIX) Diskpool 추가 실패 버그 수정(#164, #155)

ksanLifecycleManager

  • (ENHANCEMENT) objManager 기반으로 Object Metadata를 접근하도록 변경
  • (ENHANCEMENT) s3backend의 공통 라이브러리를 사용하도록 변경

ksanLogManager

  • (NEW) mongoDB 지원
  • (ENHANCEMENT) s3backend의 공통 라이브러리를 사용하도록 변경

ksanReplicationManager

  • (ENHANCEMENT) objManager 기반으로 Object Metadata를 접근하도록 변경
  • (ENHANCEMENT) s3backend의 공통 라이브러리를 사용하도록 변경

CLI & Utility

통합 관리 도구(CLI)

  • (BUG-FIX) CLI의 Usage 오기 수정
  • (BUG-FIX) cbalance 유틸리티 컨트롤 버그 수정
  • (BUG-FIX) fsck 유틸리티 컨트롤 버그 수정
  • (ENHANCEMENT) MA(Maintenance) 타입의 Disk 관리 기능 추가
  • (ENHANCEMENT) Diskpool의 Tolerance 변경을 허용 (EC 제외)
  • (ENHANCEMENT) Diskpool 조회시 Default Diskpool이 표기되도록 변경
  • (ENHANCEMENT) 특정 User가 정의한 “STANDARD” 타입의 S3 호환 Storage Class의 수정을 허용
  • (ENHANCEMENT) KsanGetattr support display disk and osd server name
  • (BUG-FIX) KsanFsck and KsanCbalance move object from the rest of disk to specific disk in the pool bug fix

ETC

설치 스크립트

  • (ETC) docker 기반의 rabbitmq의 정상적인 구동을 위한 docker-compose.yml 수정

한계 및 향후 계획

한계 및 알려진 문제점

  • ksanReplicationManager
    • DeleteMarker 동기화 기능 동작시 DeleteObjects로 삭제한 오브젝트의 동기화가 올바르게 동작하지 않음
    • CopyObject로 업로드한 오브젝트가 복제되지 않음
    • DeleteMarker 버전 아이디가 동일하게 복제되지 않음

향후 계획

  • WEB 기반 KSAN 관리 인터페이스 개발 및 공개 (프로토타입)
  • ksanReplicationManager
    • 알려진 문제점 해결 (DeleteMarker, CopyObject 대응 등)
    • config 변경시 자동으로 반영되도록 기능 지원
  • ksanLifecycleManager
    • config 변경시 자동으로 반영되도록 기능 지원
    • 알려진 문제점 해결
  • ksanLogManager
    • config 변경시 자동으로 반영되도록 기능 지원
  • ksanGW
    • S3 서비스 성능 최적화
    • Azure Blob Service 안정화
    • Erasure Coding 기능 안정화
    • GCS 서비스 기능 추가
    • Multipart 관련 성능 최적화
  • ksanFSCK
    • 개선된 Erasure Coding 오브젝트 정합성 검사 및 복구 지원

KSAN v1.2.0

09 Dec 08:59
6094d22
Compare
Choose a tag to compare

ksanGW

AWS S3-Compatible API 지원

  • (NEW) DeleteBucketLogging
  • (NEW) DeleteBucketTagIndex
  • (NEW) GetBucketLogging
  • (NEW) GetBucketTagIndex
  • (UPDATE) GetObejctLockConfiguration → GetObjectLegalHold
  • (NEW) PostObject
  • (NEW) PutBucketLogging
  • (NEW) PutBucketTagIndex
  • (UPDATE) PutObjectLockConfiguration → PutObjectLegalHold
  • (NEW) PutObjectRetention
  • (NEW) RestoreObject
  • (BUG-FIX) KsanReplication
    • 연동 관련 API 버그 수정
  • (ENHANCEMENT) PutObject
    • MD5 : OpenSSL4로 변경
  • (ENHANCEMENT) 모든 API
    • Polish, Grant 확인 코드 추가
  • (BUG-FIX) CompleteMultipartUpload, UploadPart, UploadCopyPart
    • 로컬 디스크가 없는 경우 OSD 연동 처리 버그 수정
  • (ENHANCEMENT) GetObject, DeleteObject
    • object가 EC된 경우 처리 추가

Azure Blob Storage Compatible API 지원

  • (NEW) CreateContainer
  • (NEW) DeleteBlob
  • (NEW) DeleteContainer
  • (NEW) GetProperties
  • (NEW) HeadBlob
  • (NEW) HeadContainer
  • (NEW) ListBlobs
  • (NEW) ListContainers
  • (NEW) PutBlob
  • (NEW) PutBlock
  • (NEW) PutBlockList
  • (NEW) SharedKeyAuth

ObjManager

  • (NEW) search objects with tags future
  • (NEW) Store and retrieve restoreObject request
  • (BUG-FIX) In maraidb backend, utfmb4 typed column not support indexing when the string have more than 191 character bug fix.

ksanOSD

  • (ENHANCEMENT) Header 처리 방식 수정
    • CompleteMultipartUpload를 처리하기 위해서 PartList 정보를 받기 위해 Header 길이 설정하는 부분 수정
  • (ENHANCEMENT) trash 파일 지우는 Thread, Cache 에서 Disk로 옮기는 Thread
    • Config 설정에 의해 동작하도록 변경
  • (NEW) getECpart, putECPart, deleteECPart
    • EC 처리

ksanApiPortal

  • (NEW) EC 설정기능 추가
  • (NEW) 서비스 조회시 서버 정보를 포함하여 전달 하도록 변경
  • (NEW) 서버 세부 조회 API 추가(/ap1/v1/Servers/Details)
  • (NEW) 최초 설치시 서비스와 설정정보를 자동으로 등록하는 기능 추가
    • ksanReplicationManager
    • ksanLifecycleManager
    • ksanLogManager
    • ksanGW
    • ksanOSD
  • (ENHANCEMENT) 디스크풀의 타입과 Replication 설정이 변경 가능하도록 개선
  • (ENHANCEMENT) Disk, DiskPool, Server, Service, KsanUSer 의 이름 중복 검사 기능 개선
  • (ENHANCEMENT) 명칭 변경으로 config, serviceType의 값도 동일하게 변경
    • ksanReplication → ksanReplicationManager
    • ksanLifecycle→ksanLifecycleManager
    • ksanLogmanager→KsanLogManager
  • (ENHANCEMENT) 디스크를 서비스에 추가할 수 없도록 변경
  • (ENHANCEMENT) 서버에 연결된 서비스가 존재할 경우 삭제할 수 없도록 변경
  • (ENHANCEMENT) 서버 정보 조회시 Free 메모리 용량을 자동 계산하도록 변경
  • (ENHANCEMENT) 디스크의 서버 정보를 변경할 수 있도록 개선
  • (ENHANCEMENT) RabbitMQ의 연결이 끊어졌을 경우 자동으로 재시도 하도록 변경
  • (ENHANCEMENT) 환경변수로 최초 생성 유저의 정보를 고정 할 수 있도록 개선
  • (BUG-FIX) Service 등록실패시 메시지의 오타 수정
  • (BUG-FIX) KsanAgent → ksanAgent 대소문자 오타 수정
  • (BUG-FIX) 스토리지 클래스 명이 소문자로 전달되는 버그 수정
  • (BUG-FIX) 서버, 서비스의 상태가 반영되지 않는 버그 수정
  • (BUG-FIX) 환경변수가 제대로 반영되지 않는 버그 수정

ksanAgent

  • (ENHANCEMENT) rabbitmq 서버 연결 실패 시 retry 기능 추가
  • (BUG-FIX) 서비스 추가 시 .ServiceId 파일의 ServiceId 중복되는 버그 수정

ksanLifecycleManager

  • (ENHANCEMENT) ksanLifecycle이 ksanLifecycleManager로 명칭이 변경
    • log 설정 파일 명칭 변경
    • 서비스 명 변경
    • Docker 파일명 변경
    • Docker 이미지명 변경

ksanLogManager

  • (NEW) ksanGW의 로그를 RabbitMQ로 받아서 DB에 저장
  • (NEW) ksanReplicationManger의 로그를 RabbitMQ로 받아서 DB에 저장
  • (NEW) ksanLifecycleManager의 로그를 RabbitMQ로 받아서 DB에 저장

ksanReplicationManager

  • (NEW) ksanGW의 로그를 RabbitMQ로 받아서 버킷의 Replication 설정에 따라 복제
  • (BUG-FIX) ReplicationData : Boolean → boolean 으로 변수타입 수정 (Null값 불허용)

CLI & Utility

통합 관리 도구(CLI)

  • (BUG-FIX) ksan 유틸리티 참조 모듈 path 위치 못 찾는 버그 수정
  • (NEW) ksanFsck, ksanCbalance, ksanGetattr 기능을 ksan 유틸리티에 연동
  • (NEW) ServerId 기준 서버 ip/netmask/gateway 변경 기능 ksan 유틸리티에 추가
  • (NEW) DiskId 기준 ServerId 정보 변경 기능 ksan 유틸리티에 추가
  • (ENHANCEMENT) ksan 정보 출력 결과 (sysinfo, server, disk, diskpool, service, user) format 변경 및 정렬
  • (ENHANCEMENT) Diskpool replication 타입 변경(--RepType → --Tolerance)
  • (ENHANCEMENT) Diskpool replication 타입 추가(EC)

ETC

설치 스크립트

  • (NEW) ksanLifecycleManager, ksanLogManager, ksanReplicationManager 모듈 설치 기능 추가
  • (NEW) offline/timeout/unknown 서비스 모니터링 및 재시작 기능 추가
  • (ENHANCEMENT) 설치 summary 정보 변경
  • (BUG-FIX) docker-support 모듈 패치 버그 수정

한계 및 향후 계획

한계 및 알려진 문제점

  • ksanReplicationManager
    • DeleteMarker 동기화 기능 동작시 DeleteObjects로 삭제한 오브젝트의 동기화가 올바르게 동작하지 않음
    • CopyObject로 업로드한 오브젝트가 복제되지 않음

향후 계획

  • WEB 기반 KSAN 관리 인터페이스 개발 및 공개 (프로토타입)
  • ksanReplicationManager
    • 설정 지원 도구(CLI) 개발 및 공개
    • 알려진 문제점 해결 (DeleteMarker, CopyObject 대응 등)
  • ksanLifecycleManager
    • s3backend의 공통 라이브러리를 사용하도록 변경
  • ksanGW
    • S3 서비스 성능 최적화
    • Azure Blob Service 안정화
    • Erasure Coding 기능 안정화
  • ksanFSCK
    • Erasure Coding 오브젝트 정합성 검사 및 복구 지원

KSAN v1.1.1

07 Oct 06:17
49efc5f
Compare
Choose a tag to compare

ksanApiPortal

  • (BUG-FIX) KSAN Server, Service의 상태 정보 업데이트 버그 처리 - #113
  • (BUG-FIX) KSAN Portal의 초기화 과정에서 rabbitmq의 message queue를 생성이 실패하는 경우에 대한 예외처리를 추가 - #112
    • KSAN All-in-One 타입 설치를 포함한 Docker compose 방식의 KSAN 설치 과정에서 ksanApiPortal이 오동작하는 것을 해결함

한계 및 향후 계획

한계 및 알려진 문제점

  • 메타데이터의 고가용성 보장 방식은 구성하는 DB 모듈에 따라 상이합니다. 연구소 레벨에서 고가용성 테스트가 되었지만 상용 레벨에서 사용하실 경우에는 각 DB 모듈 별로 재확인이 필요합니다.
    • MariaDB : Semisynchronous Replication 방식으로 구성, 최소 2개 노드 필요
    • MongoDB : Sharded Cluster 방식으로 구성, 최소 3개 노드 필요
  • 장애 상황에 따른 오브젝트 데이터 고가용성 보장은 아직 추가적인 테스트가 필요합니다.
    • KSAN v1.1.1의 ksanGW는 Put Object를 처리할 때 Sync 방식만 지원합니다.(Primary과 Replica Write를 동시에 처리하고 모두 완료하면 성공 메세지를 반환)
    • 따라서 오브젝트 데이터 고가용성 보장의 핵심 모듈 중의 하나인 ksanRecovery가 Async Write 상황에서 테스트되지 못하였습니다.

향후 계획

  • ksanReplication 개발 및 공개 → v1.2.0에서 공개 예정
    • 원격지 KSAN 시스템 간의 DR(재해복구)를 제공하기 위한 Bucket 레벨의 동기화 모듈
    • 통합 테스트 단계
  • S3 logging 기능 개선 → v1.2.0에서 공개 예정
    • Message Queue 기반의 logging 데이터 처리 방식을 지원
    • 통합 테스트 단계
  • ksanGW / ksanOSD / ksanRecovery 개선 및 보완
    • Async 방식의 Put Object 처리 추가
    • ksanGW-ksanOSD-ksanRecovery의 장애 테스트를 기반으로 각 모듈 개선 및 보완
  • WEB 기반 KSAN 관리 인터페이스 개발 및 공개 (프로토타입)
  • ksanAzure(가칭) 개발 및 공개 (프로토타입)
    • Microsoft Azure 호환 서비스 게이트웨이 개발 및 공개
  • Erasure Coding 기반으로 데이터 가용성을 제공하는 Diskpool 지원

KSAN v1.1.0

22 Sep 06:43
Compare
Choose a tag to compare

ksanGW

ObjManager 연동

  • (NEW) disk, diskpool 변경에 대한 정보를 objManager에게 실시간으로 전달함
    • ObjManager.updateDiskpools(String routingKey, String body)로 전달
    • diskpool
      • add / update(add2disk, remove2disk) / remove
    • disk
      • add / remove / start / stop / mode change (Read/Write, Readonly)

장애대응 및 예외처리

  • (ENHANCEMENT) ksanGW의 로컬 디스크가 없는 경우 ObjManager에 의해 배정된 OSD가 UploadPart를 진행하도록 해당 OSD에 요청함

성능 부분

  • (NEW) 캐시 디스크 지원
    • 최초 공개 버전의 경우 ksanGW별 설정을 지원하지 않음 (캐시 디스크를 활성화하면 KSAN 클러스터 내의 모든 ksanGW에 적용됨)

AWS S3-Compatible API

  • (NEW) PostObject
  • (ENHANCEMENT) GetObject, PutObject
    • 암호화 관련 수정 및 성능 개선
  • (ENHANCEMENT) CompleteMultipartUpload, UploadPart
    • 요청받은 ksanGW의 로컬 디스크가 없는 경우 ObjManager에 의해 배정된 OSD가 UploadPart 백엔드 처리할 수 있도록 변경함
  • (BUG-FIX) DeleteObject
    • 존재하지 않는 Object에 대해 삭제 요청이 있는 경우에 대해 S3와 동일하게 동작하도록 수정함
  • (ENHANCEMENT) ListObjects, ListObjectsV2, ListObjectVersions
    • 성능 개선

ksanReplication 연동

  • (NEW) 향후 추가될 ksanReplication 모듈을 위해 필요한 백엔드 KSAN S3 API 프로토타입을 추가함
    • ksanReplication은 v1.1.0에서 공개되지 않음

배포 및 설정

  • (NEW) 패키지 설치 방식과 Docker Container로 배포 가능
  • (ENHANCEMENT) Configuration Key와 Value 정의를 보완
  • (NEW) 자신의 서비스 이벤트 및 상태 정보를 ksanApiPortal에게 직접 보고

ObjManager

  • (NEW) MongoDB를 기반으로 Object / Bucket 메타데이터 저장 및 관리를 지원
    • 기존 MariaDB 기반의 동일한 ObjManager 기능을 제공
  • (ENHANCEMENT) createLocal() 강화
    • Diskpool의 구성 및 Disk의 상태 변화에 따라 로컬 디스크에 Object를 할당할 수 없는 경우 create()로 전환되도록 변경
  • (ENHANCEMENT) 실시간으로 Diskpool의 구성 및 Disk의 상태 변화에 대응할 수 있도록 처리 구조 변경
  • (NEW) S3 호환 Storage Class 지원
  • (ENHANCEMENT) 신규 Object의 Replica Count 설정 기능 강화
    • 더이상 Bucket 생성시 정의된 Replica Count 설정을 사용하지 않고 User에 정의된 Storage Class 정보 및 KSAN Diskpool의 데이터 보호 정책을 참고하여 Replica Count를 판단
  • (NEW) ksanLifecycle이 Object DB를 직접 참조하지 않고 ObjManager를 통해서 작업을 수행할 수 있도록 관련 API를 추가

ksanOSD

OSD 간의 연동

  • (ENHANCEMENT) 신규로 추가된 OSD 서비스와 기존 OSD 서비스를 연동하기 위해 Connection 처리 방식을 개선

OSD Interface

  • (NEW) CompleteMultipartUpload, UploadPart를 OSD 레벨에서 처리하기 위한 관련 API를 추가함

성능 부분

  • (NEW) Object 삭제 요청이 오면 해당 백엔드 데이터를 즉시 삭제하지 않고 Trash에 보관하고 설정된 시간 이후에 삭제 처리함

배포 및 설정

  • (NEW) 패키지 설치 방식과 Docker Container로 배포 가능
  • (ENHANCEMENT) Configuration Key와 Value 정의를 보완
  • (NEW) 자신의 서비스 이벤트 및 상태 정보를 ksanApiPortal에게 직접 보고

ksanApiPortal

  • (ENHANCEMENT) 프로토타입에 사용했던 상용 DB 라이브러리를 더이상 사용하지 않음
  • (NEW) 신규 ksanAgent 대응한 KSAN Server / Service 관리를 지원
  • (ENHANCEMENT) Docker Container 환경 변수 추가
    • 설치 및 배치 자동화 관련 환경 변수 추가
    • KSAN 개발 및 테스트 목적으로 활용할 수 있는 Default User 생성 옵션 제공
  • (ENHANCEMENT) Docker Container 환경 변수를 활용한 KSAN Service Configuration 정보 자동 생성 지원
  • (ENHANCEMENT) RabbitMQ의 Quorum Queue 기반으로 시스템 상태 및 설정 변경 정보를 공유
  • (ENHANCEMENT) RabbitMQ의 Quorum Queue 기반으로 서비스 모니터링 정보 수집
  • (NEW) 모니터링 보고 주기에 따른 서버 및 서비스 TIMEOUT 상태 판단
  • (NEW) 디스크의 사용 용량 정보를 기준으로 FULL(WEAK) 상태 판단 및 처리

ksanAgent

  • (ENHANCEMENT) 서버 데몬 방식으로 ksanAgent를 재설계하고 구현
    • 기존 ksanEdge, ksanMon, ksanRegister를 통합
  • (NEW) 신규 서비스 추가에 대응하여 해당 서비스의 ServiceId 정보를 지정된 위치에 파일로 저장
  • (ENHANCEMENT) 서비스의 이벤트 및 기본 상태 정보를 더이상 ksanAgent가 보고하지 않음

ksanLifecycle

  • (ENHANCEMENT) ObjManager를 통해서만 Bucket의 Lifecycle 설정 정보에 접근하도록 변경
  • (ENHANCEMENT) ObjManager를 통해서만 Object의 메타 정보에 접근하도록 변경
  • (NEW) Docker Container로 배포
  • (NEW) 자신의 서비스 이벤트 및 상태 정보를 ksanApiPortal에게 직접 보고
  • (ENHANCEMENT) Lifecycle 검사 스케쥴 설정을 추가

CLI & Utility

통합 관리 도구(CLI)

  • (NEW) KSAN의 관리를 위한 통합 CLI를 제공 (→ ksanApiPortal 및 ksanUtility와 통합 연동됨)
    • /usr/local/ksan/bin/ksan
      • Server 관리 : KSAN 서버(노드) 추가, 제거 도구
      • Service 관리 : KSAN 서비스 추가, 제거, 제어 도구
      • Config 관리 : KSAN 서비스 설정 관리 도구
      • Diskpool 관리 : 디스크풀 추가, 제거, 디스크 배치 도구
      • Disk 관리 : 디스크 추가, 제거, 제어, 모드 변경 도구
      • User 관리 : KSAN 서비스 대상 사용자 관리 도구
      • Fsck 수행 : 오브젝트 정합성 관리 및 복구
      • Cbalance 수행 : 디스크 데이터 리밸런싱 도구
      • Getattr 수행 : KSAN 백엔드 레벨의 오브젝트 정보 조회 도구

ksanFsck

  • (NEW) RabbitMQ를 기반으로 ksanOSD에 질의하는 방식으로 백엔드 오브젝트 데이터의 상태를 정확히 파악
  • (ENHANCEMENT) ksanFsck 수행 결과를 세분화하고 이해하기 쉽게 변경
  • (BUG-FIX) UploadPart로 생성된 Object의 Checksum 비교는 Skip 함
    • UploadPart로 생성된 Object의 메타데이터 레벨의 Checksum 정보는 S3과의 호환성을 유지하는 방식으로 저장 → 실제 백엔드 데이터의 MD5 값과는 일치할 수 없음
    • 따라서 UploadPart로 생성된 Object는 Size 만으로 메타데이터와 비교함

ksanCbalance

  • (ENHANCEMENT) 데이터 리밸런싱을 할 경우에 Diskpool 정보를 참고하여 동일한 Diskpool 내의 Disk 간에만 리밸런싱이 수행될 수 있도록 변경

ETC

설치 스크립트

  • (NEW) All-In-One 설치 자동화 기능 제공
    • 일괄 설치 지원 (Docker Compose 기반)
      • KSAN
        • ksan command Line Interface(CLI) : /usr/local/ksan/bin
        • ksanAgent : /usr/local/ksan/sbin
        • ksanApiPortal (Docker Container) : ksan-api-portal
        • ksanGW (Docker Container) : ksan-gw
        • ksanOSD (Docker Container) : ksan-osd
        • ksanLifecycle (Docker Container) : ksan-lifecycle
      • 외부 모듈
        • MariaDB 10.9.2 (Docker Container)
        • MongoDB 4.4 (Docker Container)
        • RabbitMQ 3.10.7 (Docker Container)
      • 기타
        • ksanApiPortal용 인증서 : /usr/local/ksan/etc/ssl/pspace.pfx
        • ksanGW용 인증서 : /usr/local/ksan/etc/ssl/pspace.jks
        • 상기 인증서는 사용자가 부여한 Password에 의해 자동 생성됨
    • 자동 설정 및 서비스 구동
      • KSAN Server, Service, Diskpool, Disk 자동 추가, 설정 및 구동
      • 필요에 따라 KSAN User 자동 생성 지원

로그

  • log, dump 파일 위치 재조정 → /var/log/ksan
  • 로그의 시간 표시가 호스트 서버의 시간대와 동일하도록 변경

한계 및 향후 계획

한계 및 알려진 문제점

  • 메타데이터의 고가용성 보장 방식은 구성하는 DB 모듈에 따라 상이합니다. 연구소 레벨에서 고가용성 테스트가 되었지만 상용 레벨에서 사용하실 경우에는 각 DB 모듈 별로 재확인이 필요합니다.
    • MariaDB : Semisynchronous Replication 방식으로 구성, 최소 2개 노드 필요
    • MongoDB : Sharded Cluster 방식으로 구성, 최소 3개 노드 필요
  • 장애 상황에 따른 오브젝트 데이터 고가용성 보장은 아직 추가적인 테스트가 필요합니다.
    • KSAN v1.1.0의 ksanGW는 Put Object를 처리할 때 Sync 방식만 지원합니다.(Primary과 Replica Write를 동시에 처리하고 모두 완료하면 성공 메세지를 반환)
    • 따라서 오브젝트 데이터 고가용성 보장의 핵심 모듈 중의 하나인 ksanRecovery가 Async Write 상황에서 테스트되지 못하였습니다.

향후 계획

  • ksanReplication 개발 및 공개
    • 원격지 KSAN 시스템 간의 DR(재해복구)를 제공하기 위한 Bucket 레벨의 동기화 모듈
    • 마무리 작업 중이며 2022년 이내에 공개 예정
  • ksanGW / ksanOSD / ksanRecovery 개선 및 보완
    • Async 방식의 Put Object 처리 추가
    • ksanGW-ksanOSD-ksanRecovery의 장애 테스트를 기반으로 각 모듈 개선 및 보완
  • WEB 기반 KSAN 관리 인터페이스 개발 및 공개 (프로토타입)
  • ksanAzure(가칭) 개발 및 공개 (프로토타입)
    • Microsoft Azure 호환 서비스 게이트웨이 개발 및 공개
  • Erasure Coding 기반으로 데이터 가용성을 제공하는 Diskpool 지원
  • S3 logging 기능 개선
    • Message Queue 기반의 logging 데이터 처리 방식을 지원

KSAN v1.0.0

30 Dec 03:21
Compare
Choose a tag to compare

GW

ObjManager / OSD 연동 부분

  • 오브젝트 PUT 요청시 ObjManager를 통해 GW와 동일한 서버의 OSD DISK에 Primary 오브젝트 데이터를 우선 배정 (WRITE)
  • 오브젝트 GET 요청시 ObjManager를 통해 GW와 동일한 서버의 OSD DISK에 오브젝트 데이터를 우선 사용 (READ)
  • OSD와 연동하여 오브젝트 데이터의 1+1 Replication에 대응

AWS S3-Compatible API 지원

  • AbortMultipartUpload
  • CompleteMultipartUpload
  • CopyObject
  • CreateBucket
  • CreateMultipartUpload
  • DeleteBucket
  • DeleteBucketCors
  • DeleteBucketEncryption
  • DeleteBucketLifecycle
  • DeleteBucketObjectLock
  • DeleteBucketPolicy
  • DeleteBucketReplication
  • DeleteBucketTagging
  • DeleteBucketWebsite
  • DeleteObject
  • DeleteObjects
  • DeleteObjectTagging
  • DeletePublicAccessBlock
  • GetBucketAcl
  • GetBucketCors
  • GetBucketEncryption
  • GetBucketLifecycleConfiguration
  • GetBucketLocation
  • GetBucketPolicy
  • GetBucketPolicyStatus
  • GetBucketReplication
  • GetBucketTagging
  • GetBucketVersioning
  • GetBucketWebsite
  • GetObject
  • GetObjectAcl
  • GetObjectLockConfiguration
  • GetObjectRetention
  • GetObjectTagging
  • GetPublicAccessBlock
  • HeadBucket
  • HeadObject
  • ListBuckets
  • ListMultipartUploads
  • ListObjects
  • ListObjectsV2
  • ListObjectVersions
  • ListParts
  • OptionsObject
  • PutBucketAcl
  • PutBucketCors
  • PutBucketEncryption
  • PutBucketLifecycleConfiguration
  • PutBucketPolicy
  • PutBucketReplication
  • PutBucketTagging
  • PutBucketVersioning
  • PutBucketWebsite
  • PutObject
  • PutObjectAcl
  • PutObjectLockConfiguration
  • PutObjectTagging
  • PutPublicAccessBlock

ObjManager

  • 오브젝트 스토리지 서비스 요청의 메타데이터 처리 및 관리 지원
  • 오브젝트 데이터를 유효한 OSD DISK에 배치하기 위한 정보 생성 및 제공 (GW 동일한 위치 우선 또는 랜덤)
  • 백엔드 메타데이터 저장소 지원 및 최적화: MariaDB, MongoDB(최적화 후 공개 예정)

OSD

  • 오브젝트 데이터 Write / Read / Delete 지원
  • ILM 기반의 Erasure Coding 지원 (프로토타입)

MGS

  • 오브젝트 정합성 체크 및 복구 지원
  • 오브젝트 데이터 Replication 실패시 재시도하여 복제본을 복원하는 기능 지원

Utility

  • Server 및 Server Pool 관리 지원
  • OSD Disk 및 Disk Pool 관리 지원
  • 시스템 User(Portal User) 관리 지원
  • S3 User 관리 지원
  • Service 및 Service Group 관리 지원
  • ksanGW 관리 지원
  • ksanOSD 관리 지원
  • 시스템 전체 상태 정보 모니터링 지원

Portal

  • KSAN
    • KSAN 사용자 관리
    • Disk 관리
    • Diskpool 관리
  • Network
    • Network Interface 관리
    • Network Interface Vlan 관리
  • KSAN 서비스 관리
  • KSAN 서버 관리
  • Portal 사용자 관리
  • Swagger를 통한 Api 테스트 기능 제공

Backend Service

Metering, Logging 지원

  • Bucket에 포함된 objects size 저장
  • REST 처리 및 결과에 대한 log 저장

Lifecycle

  • 버킷의 오브젝트를 수명주기 설정에 따라 삭제
  • 버킷의 오브젝트 버전을 수명주기 설정에 따라 삭제
  • 버킷의 삭제마커를 수명주기 설정에 따라 삭제