pdf文档 TGT服务器的优化

637.11 KB 15 页 0 评论
语言 格式 评分
中文(简体)
.pdf
3
摘要
本文档阐述了TGT服务器的优化策略,重点在于多线程管理和块设备协议的支持。通过为每个target增加锁机制,TEL线程和管理面线程实现互斥,解决了数据一致性问题。在支持块设备协议方面,iSCSI广泛支持多系统,而NBD则限于Linux。同时,文档探讨了性能优化的问题,包括多CPU利用、IO处理的效率以及相关协议的可靠性。TGT服务器采用纯用户态代码,便于扩展和维护,适用于复杂的存储系统。
AI总结
《TGT服务器的优化》总结如下: ### 管理平面优化 1. **问题背景**:管理面是主线程,负责登录及增删改target、lun、session等操作,同时target epoll线程也需要访问这些数据,导致多线程冲突和数据一致性问题。 2. **优化措施**: - 为每个target增加一把锁。 - Target Event Loop (TEL)线程与管理面线程通过锁互斥访问数据。 - TEL线程运行时锁住目标,管理面等待;TEL进入epoll等待状态后释放锁。 - 无需target list lock,因TEL线程只处理自己负责的target,管理面单线程遍历target list不需互斥。 ### 块设备协议优化 1. **协议选择**: - **NBD**:Linux专有协议,适用于Linux。 - **iSCSI**:广泛支持,适合Windows和类UNIX系统,支持块设备和磁带协议。 - **优势**:通过iSCSI替代SAN,利用raft副本一致性和copyset概念,支持自动修复副本和扩容,具有高可靠性和稳定性,适合廉价硬件搭建。 ### 性能优化 1. **问题分析**: - 多个target时,设备多且客户端请求量大,单线程event loop多路复用成为瓶颈。 - 开源界尝试修改(如sheepdog的patch)效果不理想。 2. **优化策略**: - 使用多个epoll线程,充分利用多CPU能力。 - 每个target一个epoll线程,负责Initiator的I/O处理,CPU使用由OS分配,粒度更细。 - 支持多个卷的lun共享一个target,但可能导致单CPU限制。 ### Curve驱动支持 1. **实现方式**: - 编写curve驱动,利用异步I/O和pipeline。 - 使用NEBD PART 1接口,与nebdserver在同一台机器运行。 2. **功能支持**: - 共享打开curve卷,支持multipath。 - 支持卷resize,添加命令更新盘大小。 - Windows和Linux Initiator均支持。 ### 其他技术对比 1. **TCMU**: - 多了一层转接,配置复杂。 - 用户态代码受框架约束,灵活性不足。 2. **TGT (STGT)**: - 纯用户态,代码独立,容易扩展。 - 支持复杂存储系统(如ceph rbd、sheepdog),适合多种需求。
P1
P2
P3
P4
P5
P6
P7
P8
P9
P10
P11
P12
下载文档到本地,方便使用
- 可预览页数已用完,剩余 3 页请下载阅读 -
文档评分
请文明评论,理性发言.