TrueNAS dataset preset 네 종류의 차이
dataset을 만들 때 preset을 고르게 되어 있는데, 이게 뒤에서 무엇을 바꾸는지 모르고 고르면 나중에 권한이 꼬인다. preset은 네 가지 값을 한꺼번에 정하는 것이다.
| Preset | ACL Type | ACL Mode | Case Sensitivity | atime |
|---|---|---|---|---|
| Generic | POSIX | n/a | Sensitive | Inherit |
| SMB | NFSv4 | Restricted | Insensitive | Inherit |
| Apps | NFSv4 | Passthrough | Sensitive | Off |
| Multiprotocol | NFSv4 | Passthrough | Sensitive | Off |
무엇을 골라야 하나
- Generic — SMB가 아닌 공유. iSCSI, NFS 전용 dataset, 그리고 container나 VM을 올릴 dataset.
- SMB — SMB 공유에 최적화. Windows에서 붙는 것들.
- Apps — 애플리케이션 저장소용.
- Multiprotocol — SMB와 NFS를 같이 쓰거나, NFS 공유용.
가장 크게 갈리는 건 Case Sensitivity다. SMB만 Insensitive다. Windows가 대소문자를 구분하지 않기 때문인데, 이 값은 dataset을 만든 뒤에 바꿀 수 없다. 리눅스에서 쓰던 폴더를 SMB preset으로 만들면 Photo 와 photo 가 같은 이름이 되어 버린다.
ACL 상속
Generic은 Unix 권한 755에 해당하는 ACL을 건다. 소유자는 전부, 그룹과 나머지는 읽기와 실행이다.
SMB, Apps, Multiprotocol은 부모 dataset의 ACL을 상속받는다. 상속받을 게 없으면 TrueNAS가 계산해서 넣는데, owner@ 와 group@, builtin_administrators 에 full control을, builtin_users 에 modify를 준다.
Apps만 여기에 하나가 더 붙는다. group 568(Apps)에 modify 권한이 추가된다. 컨테이너가 그 GID로 돌기 때문이다.
실제 dataset 구성
| dataset | preset | ACL Type | record size | 소유 |
|---|---|---|---|---|
vault |
POSIX | 128K | root:root | |
vault/apps |
SMB | POSIX | 128K | root:root |
vault/home |
SMB | NFSv4 | 128K | root:root |
vault/home/<사용자> |
SMB | NFSv4 | 128K | 각 사용자 |
vault/entertainment |
SMB | NFSv4 | 1M | root:media |
압축은 전부 lz4 다.
entertainment 만 record size가 1M이다. 영상 파일은 크고 순차적으로 읽으므로 큰 블록이 유리하다. 나머지는 기본값 128K로 뒀다. record size는 나중에 바꿔도 이미 쓴 데이터에는 적용되지 않으니 만들 때 정해야 한다.
entertainment 의 그룹을 media 로 준 것도 여기서 드러난다. 미디어 서비스들이 이 그룹으로 붙는다.
사용자 홈만 소유자를 각 사용자로 두고 나머지는 root 로 뒀다. 권한은 소유자가 아니라 ACL로 준다.