반응형

Zen Stroage 는 인증없는 스토리지 서버

기존 공유 DDC 같은 경우 해당 원격서버에 접근권한 (로그인) 을 해야 접근가능

 

또한 I/O 디스패처라는 청크 ID로 주소가 지정된 데이터를 로드하는 새로운 I/O 추상화 계층을 통해

빠른 스테이징 및 디플로이, 파일시스템 오버헤드를 줄여 쿠킹 시간 효율성 향상 (사실 별로 차이가 없음) 을 위한 새 기능

기존 DDC
ZenStorage

 

pak - 접근 빈도가 낮은 개별파일들 저장

utoc - 청크 크기 및 오프셋, 압축형식, 청크 암호화 여부 등

ucas - 실제 데이터

 

 

 

참고

언리얼 엔진의 젠 스토리지 서버를 공유 DDC로 구성하기 | 언리얼 엔진 5.7 문서 | Epic Developer Community

ue5 | ホイール欲しい ハンドル欲しい

 

뇌피셜

아마 ZenLocal / ZenShared 를 통틀어 ZenServer 라고 하는것 같습니다.

ZenDashboard 에서 확인할 수 있는 ZenLocal, 특정 원격주소로 세팅하여 공유 DDC 저장소가 되는곳을 ZenShared 이라 하는것 같습니다.

 

서버설정

  • {ZenInstall} - 실행파일과 환경설정이 있는 폴더입니다. 시스템 드라이브나 다른 위치에 지정할 수 있습니다. 일반적인 사용 환경에서는 읽기 전용으로 유지되다가 최신 Zenserver 버전으로 업그레이드할 때만 수정됩니다.
  • {ZenData} - Zenserver의 운영 데이터가 저장되는 폴더입니다. 시스템 드라이브가 아닌 곳 에 지정하는 것이 좋습니다. 일반적인 사용 환경에서 읽기/쓰기로 사용됩니다.

ZenUsers 에 권한 부여

+ 하위 파일 폴더 에도 쓰기권한 부여

icacls {ZenData 경로} /grant {ZenUsers}:(OI)(CI)(M) /T
  • (I) = 상속받았다는 결과 표시
  • (OI) = 파일에 상속
  • (CI) = 폴더에 상속
  • (OI)(CI) = 하위 전부
  • (IO) = 부모 제외

/T : 하위 디렉터리 & 파일까지 재귀 적용

 

 

 

zen_config.lua

아래 두 변수만 설정하면 됩니다.

  • data_dir - Zen 데이터
  • abslog - 로그 파일
-- Zen Store Lua config
server = {
	dedicated = true,
	datadir = "{ZenData}",
	abslog = "{ZenData}\\local.log",
	debug = false,
	sentry = {
		disable = false,
		allowpersonalinfo = false,
	}
}

network = {
	httpserverclass = "httpsys", -- httpsys|asio
	port = 8558,
}

gc = {
	intervalseconds = 28800, -- every 8 hour
	lightweightintervalseconds = 3600, -- every hour
	cache = {
		maxdurationseconds = 864000, -- 10 days
	}
}

cache = {
	enable = true,
	accesslog = false
	upstream = {
		upstreamthreadcount = 4,
		policy = "disabled", -- readwrite|readonly|writeonly|disabled
	},
	memlayer = {
		targetfootprint = 1073741824, -- 1 GB
		triminterval = 120, -- max every 2 minutes
		maxage = 172800, -- 2 days
	}
}

 

서버 호스트 컴퓨터의 {ZenInstall} 폴더로 다음 파일을 복사

  • Engine\Binaries\Win64\zenserver.exe
  • Engine\Binaries\Win64\zenserver.pdb
  • Engine\Binaries\Win64\crashpad_handler.exe
  • Engine\Binaries\Win64\zen.exe
  • Engine\Binaries\Win64\zen.pdb

이 파일들은 {ZenInstall} 폴더 수준에 전부 배치되며, 선택한 {ZenInstall} 폴더의 어떤 서브디렉터리에도 배치되면 안 됩니다.

 

 

서비스 생성

아래 명령어들은 관리자 권한으로 실행해야 합니다.

sc create "Zen Store" start=auto binpath="{ZenInstall}\zenserver.exe --config={ZenInstall}\zen_config.lua" obj={ZenUser} password={ZenPassword}

sc failure "Zen Store" reset=60 actions=restart/60000

 

 

서비스 시작 / 삭제

sc start "Zen Store"
sc delete "Zen Store"

 

Server_IP_Address:8558/dashboard 로 접속하였을 때 연결이 되면 성공입니다.

 

그리고 ZenUsers에게 8558 포트에 대한 권한을 주어야 합니다.

저 같은경우 모두에게 권한을 주었습니다.

8558 포트 엔드포인트 URL 권한
netsh http show urlacl

netsh http delete urlacl url=http://*:8558/
netsh http add urlacl url=http://*:8558/ user=\Everyone

 

 


클라 설정

DefaultEngine.ini

[StorageServers]
Local=(Namespace="{DDC_Name}.ddc")
Shared=(Host="{Server_IP_Address:8558}", Namespace="{DDC_Name}.ddc", EnvHostOverride=UE-ZenSharedDataCacheHost, CommandLineHostOverride=ZenSharedDataCacheHost, DeactivateAt=60)

[Zen.AutoLaunch]
;DataPath=%GAMEDIR%DerivedDataCache/Zen/Data

 

기존 DDC방식의 Local이랑 Zen방식의 Local도 있습니다.

ZenLocal 경로는 기본적으로 사용자 폴더로 되어있습니다.

위와 같이 DataPath를 설정하게되면 프로젝트마다 DDC 공간이 생기니 기본 경로(AppData)를 사용하는게 좋습니다.

 

왼쪽) 기존 / 오른쪽) Zen

ZenLocal 과 ZenShared 연결이 성공적으로 완료되었다면 캐시 통계에서 확인할 수 있습니다.

만약 캐시 통계에서 Zen 관련이 나타나지 않는다면 DerivedDataBackendGraph 에 ZenLocal 노드와 ZenShared 노드를 추가합니다.

아래와 같이 ZenLocal / ZenShared 가 추가되면 성공적으로 연결된 것입니다.

 

언리얼 엔진의 젠 스토리지 서버를 쿠킹된 출력 저장소로 사용하기 | 언리얼 엔진 5.7 문서 | Epic Developer Community

프로젝트 세팅 - 패키징에서 Zenserver를 쿠킹된 출력 저장소로 사용(Use Zenserver as cooked output store) 를 활성화 합니다.

쿠킹 결과물이 수백만 개의 작은 파일로 쌓이면, Windows I/O작업, 보안, 메타데이터 때문에 쿠킹이 느려지고 삭제도 느립니다.
그래서 해당 옵션을 활성화하면, 파일을 수백만 개로 안 만들고 Zen이 큰 블록 파일 몇 개로 묶어서 저장해줘서 훨씬 빨라지고 안정적이게 됩니다.

 

 

언리얼 엔진의 젠 스토리지 서버를 사용하는 쿠킹된 데이터 스냅샷 | 언리얼 엔진 5.7 문서 | Epic Developer Community

기존엔 ZenLocal이 에디터 실행중일때만 활성화가 되었지만, 에디터가 꺼져있을때도 백그라운드로 실행합니다.

 

DefaultEngine.ini 수정

[Zen.AutoLaunch]
LimitProcessLifetime=false
AllowRemoteNetworkService=true

반응형

'언리얼' 카테고리의 다른 글

SetViewTarget  (0) 2026.03.12
DerivedDataBackendGraph  (0) 2025.12.24
Deproject 위젯 -> 월드  (1) 2025.11.18
World Widget Depth Test  (0) 2025.09.24
Custom Depth Stencil Pass  (0) 2025.09.19

+ Recent posts