요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
Bug 자료와 시험 계획
todo.rst:104-133Samba 및 kernel Bugzilla, xfstest 결과와 path limit, performance, interoperability, buildbot, Coverity 시험 계획을 연결합니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
====
TODO
====
As of 6.7 kernel. See https://wiki.samba.org/index.php/LinuxCIFSKernel
for list of features added by release
A Partial List of Missing Features
==================================
Contributions are welcome. There are plenty of opportunities
for visible, important contributions to this module. Here
is a partial list of the known problems and missing features:
a) SMB3 (and SMB3.1.1) missing optional features:
multichannel performance optimizations, algorithmic channel selection,
directory leases optimizations,
support for faster packet signing (GMAC),
support for compression over the network,
T10 copy offload ie "ODX" (copy chunk, and "Duplicate Extents" ioctl
are currently the only two server side copy mechanisms supported)
b) Better optimized compounding and error handling for sparse file support,
perhaps addition of new optional SMB3.1.1 fsctls to make collapse range
and insert range more atomic
c) Support for SMB3.1.1 over QUIC (and perhaps other socket based protocols
like SCTP)
d) quota support (needs minor kernel change since quota calls otherwise
won't make it to network filesystems or deviceless filesystems).
e) Additional use cases can be optimized to use "compounding" (e.g.
open/query/close and open/setinfo/close) to reduce the number of
roundtrips to the server and improve performance. Various cases
(stat, statfs, create, unlink, mkdir, xattrs) already have been improved by
using compounding but more can be done. In addition we could
significantly reduce redundant opens by using deferred close (with
handle caching leases) and better using reference counters on file
handles.
f) Finish inotify support so kde and gnome file list windows
will autorefresh (partially complete by Asser). Needs minor kernel
vfs change to support removing D_NOTIFY on a file.
g) Add GUI tool to configure /proc/fs/cifs settings and for display of
the CIFS statistics (started)
h) implement support for security and trusted categories of xattrs
(requires minor protocol extension) to enable better support for SELINUX
i) Add support for tree connect contexts (see MS-SMB2) a new SMB3.1.1 protocol
feature (may be especially useful for virtualization).
j) Create UID mapping facility so server UIDs can be mapped on a per
mount or a per server basis to client UIDs or nobody if no mapping
exists. Also better integration with winbind for resolving SID owners
k) Add tools to take advantage of more smb3 specific ioctls and features
(passthrough ioctl/fsctl is now implemented in cifs.ko to allow
sending various SMB3 fsctls and query info and set info calls
directly from user space) Add tools to make setting various non-POSIX
metadata attributes easier from tools (e.g. extending what was done
in smb-info tool).
l) encrypted file support (currently the attribute showing the file is
encrypted on the server is reported, but changing the attribute is not
supported).
m) improved stats gathering tools (perhaps integration with nfsometer?)
to extend and make easier to use what is currently in /proc/fs/cifs/Stats
n) Add support for claims based ACLs ("DAC")
o) mount helper GUI (to simplify the various configuration options on mount)
p) Expand support for witness protocol to allow for notification of share
move, and server network adapter changes. Currently only notifications by
the witness protocol for server move is supported by the Linux client.
q) Allow mount.cifs to be more verbose in reporting errors with dialect
or unsupported feature errors. This would now be easier due to the
implementation of the new mount API.
r) updating cifs documentation, and user guide.
s) Addressing bugs found by running a broader set of xfstests in standard
file system xfstest suite.
t) split cifs and smb3 support into separate modules so legacy (and less
secure) CIFS dialect can be disabled in environments that don't need it
and simplify the code.
v) Additional testing of POSIX Extensions for SMB3.1.1
w) Support for the Mac SMB3.1.1 extensions to improve interop with Apple servers
x) Support for additional authentication options (e.g. IAKERB, peer-to-peer
Kerberos, SCRAM and others supported by existing servers)
y) Improved tracing, more eBPF trace points, better scripts for performance
analysis
Known Bugs
==========
See https://bugzilla.samba.org - search on product "CifsVFS" for
current bug list. Also check http://bugzilla.kernel.org (Product = File System, Component = CIFS)
and xfstest results e.g. https://wiki.samba.org/index.php/Xfstest-results-smb3
Misc testing to do
==================
1) check out max path names and max path name components against various server
types. Try nested symlinks (8 deep). Return max path name in stat -f information
2) Improve xfstest's cifs/smb3 enablement and adapt xfstests where needed to test
cifs/smb3 better
3) Additional performance testing and optimization using iozone and similar -
there are some easy changes that can be done to parallelize sequential writes,
and when signing is disabled to request larger read sizes (larger than
negotiated size) and send larger write sizes to modern servers.
4) More exhaustively test against less common servers
5) Continue to extend the smb3 "buildbot" which does automated xfstesting
against Windows, Samba and Azure currently - to add additional tests and
to allow the buildbot to execute the tests faster. The URL for the
buildbot is: http://smb3-test-rhel-75.southcentralus.cloudapp.azure.com
6) Address various coverity warnings (most are not bugs per-se, but
the more warnings are addressed, the easier it is to spot real
problems that static analyzers will point out in the future).
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
누락된 선택 기능과 VFS 개선
1-44이 목록은 kernel 6.7 기준입니다. Release별 추가 기능은 `https://wiki.samba.org/index.php/LinuxCIFSKernel`에서 확인할 수 있습니다. 기여는 환영하며 이 module에는 눈에 띄고 중요한 기여 기회가 많이 남아 있습니다. 다음은 알려진 문제와 누락 기능의 일부입니다.
- a) SMB3 및 SMB3.1.1의 선택 기능 보완: multichannel 성능 최적화와 algorithm 기반 channel 선택, directory lease 최적화, 더 빠른 GMAC packet signing, network compression, T10 copy offload인 ODX가 필요합니다. 현재 지원하는 server-side copy 방식은 copy chunk와 `Duplicate Extents` ioctl뿐입니다.
- b) Sparse file 지원을 위한 compounding과 error handling을 더 최적화하고, collapse range와 insert range를 더 atomic하게 만들 수 있는 새로운 선택적 SMB3.1.1 fsctl 추가를 검토합니다.
- c) QUIC 위의 SMB3.1.1을 지원하고, SCTP 같은 다른 socket 기반 protocol도 검토합니다.
- d) Quota를 지원합니다. 현재 quota call이 network filesystem 또는 deviceless filesystem까지 전달되지 않으므로 작은 kernel 변경이 필요합니다.
- e) Open/query/close와 open/setinfo/close 같은 더 많은 use case에서 compounding을 사용해 server roundtrip을 줄이고 성능을 높입니다. stat, statfs, create, unlink, mkdir, xattrs는 이미 개선됐지만 더 확장할 수 있습니다. Handle caching lease를 이용한 deferred close와 file handle reference counter 활용을 개선해 중복 open도 크게 줄일 수 있습니다.
- f) KDE와 GNOME의 file list window가 자동 갱신되도록 inotify 지원을 완성합니다. Asser가 일부를 구현했으며, file의 D_NOTIFY 제거를 지원하는 작은 kernel VFS 변경이 필요합니다.
첫 번째 TODO 묶음의 protocol 및 VFS 작업입니다.
관리 도구, metadata와 failover
45-83- g) `/proc/fs/cifs` 설정을 구성하고 CIFS 통계를 표시하는 GUI 도구를 추가합니다. 이 작업은 시작된 상태입니다.
- h) SELINUX 지원을 개선할 수 있도록 security 및 trusted category의 xattr을 구현합니다. 작은 protocol 확장이 필요합니다.
- i) 가상화 환경에서 특히 유용할 수 있는 새로운 SMB3.1.1 기능인 tree connect context를 지원합니다. 자세한 내용은 MS-SMB2를 참조합니다.
- j) Server UID를 mount별 또는 server별로 client UID에 mapping하고, mapping이 없으면 `nobody`로 연결하는 기능을 만듭니다. SID owner를 resolve하기 위한 winbind 연동도 개선합니다.
- k) SMB3 전용 ioctl과 기능을 활용할 도구를 추가합니다. `cifs.ko`에는 passthrough ioctl/fsctl이 구현되어 user space가 여러 SMB3 fsctl, query info, set info call을 직접 보낼 수 있습니다. `smb-info`에서 수행한 작업을 확장하는 등 non-POSIX metadata attribute를 쉽게 설정하는 도구도 추가합니다.
- l) Encrypted file을 지원합니다. 현재 server에서 file이 encrypted됐다는 attribute는 보고하지만 해당 attribute 변경은 지원하지 않습니다.
- m) `/proc/fs/cifs/Stats`의 기능을 확장하고 사용하기 쉽게 만드는 통계 수집 도구를 개선합니다. nfsometer와의 통합도 검토할 수 있습니다.
- n) Claims 기반 ACL인 DAC를 지원합니다.
- o) Mount option 구성을 단순화하는 mount helper GUI를 제공합니다.
- p) Share 이동과 server network adapter 변경을 알릴 수 있도록 witness protocol 지원을 확장합니다. 현재 Linux client는 witness protocol에서 server 이동 알림만 지원합니다.
- q) `mount.cifs`가 dialect 오류 또는 지원하지 않는 기능 오류를 더 자세히 보고하게 합니다. 새로운 mount API가 구현되어 이 작업은 이전보다 쉬워졌습니다.
사용자 도구에서 protocol 확장까지 이어지는 작업입니다.
문서, 시험, module 분리와 알려진 bug
84-109- r) CIFS 문서와 user guide를 갱신합니다.
- s) 표준 filesystem xfstest suite에서 더 넓은 범위의 xfstest를 실행해 발견한 bug를 해결합니다.
- t) Legacy CIFS dialect가 필요 없는 환경에서 보안성이 낮은 해당 dialect를 끌 수 있고 code도 단순화할 수 있도록 CIFS와 SMB3 지원을 별도 module로 분리합니다.
- v) SMB3.1.1 POSIX Extensions를 추가로 시험합니다.
- w) Apple server와의 상호 운용성을 개선하도록 Mac SMB3.1.1 extensions를 지원합니다.
- x) 기존 server가 지원하는 IAKERB, peer-to-peer Kerberos, SCRAM 등의 추가 authentication option을 지원합니다.
- y) Tracing을 개선하고 eBPF trace point를 늘리며 performance analysis script를 개선합니다.
현재 bug 목록은 `https://bugzilla.samba.org`에서 product `CifsVFS`로 검색하십시오. `http://bugzilla.kernel.org`에서는 Product를 `File System`, Component를 `CIFS`로 선택해 확인할 수 있습니다. Xfstest 결과 예시는 `https://wiki.samba.org/index.php/Xfstest-results-smb3`에 있습니다.
Protocol 구현 문제와 regression을 확인할 대표 자료입니다.
추가 시험 과제
110-133- 1) 여러 server type에서 최대 path name과 최대 path name component를 확인합니다. 8단계 깊이의 중첩 symlink를 시험하고 `stat -f` 정보에 최대 path name을 반환합니다.
- 2) Xfstest의 CIFS/SMB3 enablement를 개선하고 필요에 따라 xfstest를 조정해 CIFS/SMB3를 더 잘 시험합니다.
- 3) `iozone`과 유사한 도구로 성능 시험과 최적화를 추가합니다. Sequential write를 병렬화하고, signing이 꺼졌을 때 negotiated size보다 큰 read를 요청하며 modern server에 더 큰 write를 보내는 비교적 간단한 개선이 있습니다.
- 4) 덜 일반적인 server를 대상으로 더 철저하게 시험합니다.
- 5) 현재 Windows, Samba, Azure를 대상으로 자동 xfstesting을 수행하는 SMB3 `buildbot`을 확장해 추가 시험을 넣고 더 빠르게 실행합니다. URL은 `http://smb3-test-rhel-75.southcentralus.cloudapp.azure.com`입니다.
- 6) 여러 Coverity warning을 해결합니다. 대부분은 bug 자체가 아니지만 warning을 더 많이 정리할수록 static analyzer가 가리키는 실제 문제를 발견하기 쉬워집니다.
남은 시험을 대상과 검증 목표로 나눴습니다.
남은 구현 과제
todo.rst:1-103SMB3.1.1의 optional feature부터 QUIC, quota, compounding, inotify, xattr, UID mapping, witness, module 분리와 authentication까지 구현 과제를 항목별로 설명합니다.