File tree Expand file tree Collapse file tree 1 file changed +8
-8
lines changed Expand file tree Collapse file tree 1 file changed +8
-8
lines changed Original file line number Diff line number Diff line change 6161 \frametitle {Sun的NFS}
6262 % \framesubtitle{xxxx}
6363 最早且相当成功的分布式系统之一是由Sun Microsystems开发的,被称为Sun网络文件系统(或NFS)
64-
64+ \pause
6565 在定义NFS时,Sun开发了一种开放协议(open protocol),它只是指定了客户端和服务器用于通信的确切消息格式,而不是构建专有的封闭系统。
6666% \begin{itemize}
6767% \item 现代网络的核心原则是,通信基本是不可靠的。
8080% \framesubtitle{xxxx}
8181关键技术
8282 \begin {itemize }
83- \item 目标:简单快速的服务器崩溃恢复
83+ \item 目标:简单快速的服务器崩溃恢复\pause
8484 \item 快速崩溃恢复的关键:无状态
8585 \item 简而言之,服务器不会追踪客户正在做什么
8686 \end {itemize }
112112\begin {frame }[fragile]
113113 \frametitle {NFSv2协议}
114114 % \framesubtitle{xxxx}
115- 挑战:如何定义无状态文件协议,让它既无状态,又支持POSIX文件系统API?
115+ 挑战:如何定义无状态文件协议,让它既无状态,又支持POSIX文件系统API?\pause
116116 \begin {itemize }
117117 \item 关键是文件句柄(file handle)。文件句柄用于唯一地描述文件或目录。因此,许多协议请求包括一个文件句柄。
118118 \item 服务器启动并再次运行后,客户端会发出第二次读取,但服务器不知道fd指的是哪个文件?
205205 幂等性
206206
207207 \begin {itemize }
208- \item 如果操作执行多次的效果与执行一次的效果相同,该操作就是幂等的(idempotent)
208+ \item 如果操作执行多次的效果与执行一次的效果相同,该操作就是幂等的(idempotent) \pause
209209 \item 如果将值在内存位置存储 3 次,与存储一次一样。因此“将值存储到内存中”是一种幂等操作。
210210 \item 如果将计数器递增 3 次,它的数量就会与递增一次不同。
211211 \item LOOKUP和READ请求是简单幂等的,因为它们只从文件服务器读取信息而不更新它。
282282 潜在问题:缓存一致性问题
283283
284284 \begin {itemize }
285- \item “更新可见性(update visibility)”问题:来自一个客户端的更新,什么时候被其他客户端看见?
285+ \item “更新可见性(update visibility)”问题:来自一个客户端的更新,什么时候被其他客户端看见?\pause
286286 \item “陈旧的缓存(stale cache)“问题:C2最终将它的写入发送给文件服务器,因此服务器具有最新版本(F[v2])。但是,C1的缓存中仍然是F[v1]。如果运行在C1上的程序读了文件F,它将获得过时的版本(F [v1]),而不是最新的版本(F [v2])
287287 \end {itemize }
288288
318318 % \framesubtitle{xxxx}
319319 潜在问题:缓存一致性问题
320320
321- “陈旧的缓存(stale cache)“问题:C2最终将它的写入发送给文件服务器,因此服务器具有最新版本(F[v2])。但是,C1的缓存中仍然是F[v1]。如果运行在C1上的程序读了文件F,它将获得过时的版本(F [v1]),而不是最新的版本(F [v2])
321+ “陈旧的缓存(stale cache)“问题:C2最终将它的写入发送给文件服务器,因此服务器具有最新版本(F[v2])。但是,C1的缓存中仍然是F[v1]。如果运行在C1上的程序读了文件F,它将获得过时的版本(F [v1]),而不是最新的版本(F [v2])\pause
322322 \begin {itemize }
323323 \item NFSv2客户端会先检查文件是否已更改,然后再使用其缓存内容。具体来说,在打开文件时,客户端文件系统会发出GETATTR请求,以获取文件的属性。
324324 \item 属性包含有关服务器上次修改文件的信息。如果文件修改的时间晚于文件提取到客户端缓存的时间,则客户端会让文件无效(invalidate),因此将它从客户端缓存中删除,并确保后续的读取将转向服务器,取得该文件的最新版本。
336336\begin {frame }[fragile]
337337 \frametitle {NFSv2协议}
338338 % \framesubtitle{xxxx}
339- 潜在问题:服务器端写缓冲问题
339+ 潜在问题:服务器端写缓冲问题\pause
340340
341341 客户端发出以下写入序列
342342% \begin{itemize}
368368 \begin {figure }
369369 \includegraphics [width=0.9\linewidth ]{figs/nfsv2-srv2.png}
370370 % \caption{xxxx}
371- \end {figure }
371+ \end {figure } \pause
372372
373373 解决方法:NFS服务器在通知客户端成功之前,将每次写入提交到持久存储。这样做可让客户端在写入期间检测到服务器故障,从而重试,直到它最终成功。
374374\end {frame }
You can’t perform that action at this time.
0 commit comments