24.03.2015 Views

老蒋谈存储案例教学 - LinuxTone.Org

老蒋谈存储案例教学 - LinuxTone.Org

老蒋谈存储案例教学 - LinuxTone.Org

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

老 蒋 谈 存 储<br />

案 例 教 学<br />

光 头 老 蒋 出 品<br />

博 客 :www.click2earth.com<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


内 容 简 介<br />

该 书 通 过 对 存 储 设 备 , 操 作 系 统 , 文 件 系 统 , 存 储 备 份 容 灾 软 件 等 技 术 的 详 细 介 绍 及<br />

实 际 案 例 教 学 , 来 让 读 者 完 成 一 个 从 入 门 到 精 通 存 储 的 过 程 。 另 外 书 中 将 会 首 次 披 露 现 在<br />

各 大 厂 商 的 技 术 细 节 及 产 品 之 间 的 相 互 关 系 , 让 读 者 在 以 后 选 购 设 备 的 时 候 能 够 有 的 放 矢 。<br />

作 者 简 介 :<br />

蒋 长 坡 者 , 楚 中 高 隐 , 湘 北 野 儒 也 ! 浪 迹 江 南 , 栖 滞 燕 州 。 虽 有 气 吞 山 河 之 志 。 而 奈 时<br />

遇 不 济 , 命 运 多 舛 , 冯 唐 亦 老 , 李 广 难 封 , 屈 贾 谊 于 长 沙 , 窜 梁 鸿 于 海 曲 ; 自 幼 受 岳 麓 书 院<br />

熏 陶 。 只 知 唯 楚 有 才 , 至 京 才 知 何 为 人 多 , 人 才 更 多 。 编 过 程 序 , 写 过 算 法 , 搞 过 网 站 , 惶<br />

惶 然 存 储 圈 蹉 跎 多 年 。 望 以 文 交 天 下 朋 友 。<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


目<br />

录<br />

前 言 : 学 习 知 识 点 .......................................................................................................................... 4<br />

案 例 : .............................................................................................................................. 5<br />

第 一 章 什 么 是 存 储 .................................................................................................................. 7<br />

案 例 : .............................................................................................................................. 8<br />

第 一 节 SCSI ........................................................................................................................ 8<br />

单 端 SCSI 与 差 分 SCSI 的 区 别 ................................................................................. 11<br />

第 二 节 FC 协 议 ...................................................................................................................... 13<br />

第 三 节 革 命 的 ISCSI .............................................................................................................. 17<br />

第 四 节 NAS 会 一 统 江 湖 吗 ?................................................................................................ 23<br />

第 五 节 连 接 方 式 与 协 议 的 关 系 ........................................................................................... 25<br />

第 二 章 操 作 系 统 与 存 储 ......................................................................................................... 27<br />

第 一 节 Unix 操 作 系 统 产 生 发 展 .......................................................................................... 27<br />

第 二 节 BSD 横 空 出 世 ............................................................................................................ 29<br />

第 三 节 LUNIX 颠 覆 传 统 。..................................................................................................... 31<br />

UNIX 的 历 史 搞 笑 版 ..................................................................................................... 34<br />

第 三 章 磁 盘 存 储 介 质 和 文 件 系 统 ......................................................................................... 37<br />

第 一 节 磁 盘 存 储 介 质 ............................................................................................................ 37<br />

第 二 节 什 么 是 逻 辑 卷 .......................................................................................................... 40<br />

第 三 节 UNIX 文 件 系 统 基 础 UFS ......................................................................................... 43<br />

第 四 节 日 志 文 件 系 统 ............................................................................................................ 49<br />

第 五 节 云 存 储 与 并 行 文 件 系 统 ............................................................................................. 56<br />

云 存 储 - 与 云 计 算 的 关 系 .............................................................................................. 57<br />

云 存 储 - 技 术 前 提 .......................................................................................................... 58<br />

第 六 节 分 布 式 并 行 文 件 系 统 ................................................................................................. 59<br />

第 四 章 数 据 库 与 存 储 .................................................................................................................... 67<br />

第 一 节 Oracle 体 系 结 构 ....................................................................................................... 67<br />

第 二 节 Oracle 优 化 与 存 储 配 置 的 关 系 ................................................................................ 78<br />

第 三 节 Oracle 的 数 据 保 护 .................................................................................................... 83<br />

第 四 节 恢 复 oracle 数 据 库 ..................................................................................................... 88<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


前 言 : 学 习 知 识 点<br />

从 IT 软 件 设 计 到 网 站 , 再 到 存 储 备 份 容 灾 这 个 行 业 , 已 经 有 10 几 年 的 时 间 。 一 直 想 写 点<br />

东 西 , 但 是 每 天 数 不 完 的 项 目 , 加 上 自 己 的 惰 性 , 就 这 么 一 直 拖 着 。 今 天 开 始 每 天 花 一 个 小<br />

时 的 时 间 来 把 存 储 整 体 的 概 念 理 一 遍 , 一 个 是 对 自 己 这 几 年 工 作 积 累 的 一 个 记 录 , 还 有 如 果<br />

还 能 给 别 人 帮 助 那 就 更 好 了 。<br />

初 次 接 触 存 储 是 2001 年 , 哪 个 时 候 自 己 对 存 储 的 了 解 就 是 一 个 大 设 备 , 很 贵 , 死 沉 ( 因<br />

为 做 售 后 , 经 常 自 己 做 上 架 的 工 作 )。 在 实 验 室 研 究 存 储 几 个 月 , 发 现 要 玩 精 存 储 太 难 了 ,<br />

第 一 做 存 储 的 人 首 先 要 熟 悉 各 类 操 作 系 统 ,AIX/HPUNIX/SOLARIS/LINUX. 缺 一 不 可 。 而 且 在<br />

熟 悉 程 度 上 不 能 比 主 机 厂 家 的 工 程 师 少 , 要 不 然 出 了 问 题 , 这 些 原 厂 的 工 程 师 推 责 任 也 是 国<br />

际 水 平 的 。 第 二 , 熟 悉 各 类 操 作 系 统 同 时 要 熟 悉 各 类 文 件 系 统 , 知 道 各 类 文 件 的 特 性 , 可 以<br />

在 项 目 中 更 顺 畅 。 第 三 , 要 达 到 主 流 数 据 库 管 理 员 的 水 平 , 特 别 在 做 数 据 库 恢 复 的 时 候 。 第<br />

四 , 要 熟 悉 各 类 备 份 及 容 灾 ( 包 括 CDP 等 ) 的 软 件 产 品 , 现 在 市 场 上 的 厂 家 及 产 品 已 经 有<br />

十 几 家 了 , 但 是 本 文 会 概 况 所 以 技 术 点 中 有 关 存 储 的 部 分 , 给 大 家 一 个 便 于 理 解 并 且 能 融 会<br />

贯 通 的 学 习 方 法 。<br />

了 解 存 储 就 必 须 了 解 存 储 相 关 的 所 有 知 识 , 特 别 是 : 存 储 硬 件 , 操 作 系 统 , 和 容 灾 备 份<br />

等 存 储 应 用 软 件 。<br />

学 习 存 储 需 要 了 解 的 知 识 点 : 如 图<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


案 例 :<br />

做 存 储 行 业 不 光 要 熟 悉 存 储 的 设 备 , 还 必 须 要 熟 悉 各 个 主 流 的 操 作 系 统 , 文 件 系 统 ,<br />

各 类 数 据 备 份 及 容 灾 软 件 , 还 有 一 些 数 据 库 和 应 用 软 件 , 才 能 帮 助 客 户 解 决 问 题 。<br />

李 东 和 刘 斌 是 今 年 刚 研 究 生 毕 业 的 学 生 , 很 幸 运 在 金 融 危 机 的 时 候 , 找 到 一 家 中 型<br />

的 IT 公 司 做 工 程 师 , 虽 然 专 业 不 是 很 对 口 。 但 是 比 起 还 在 苦 苦 找 工 作 的 同 学 , 他 们 已 经<br />

是 够 幸 运 的 了 。<br />

李 东 和 刘 斌 两 个 人 , 进 了 一 家 叫 做 XX 存 储 技 术 公 司 。 一 开 始 他 们 哥 俩 以 为 是 做 物 流<br />

的 。 进 公 司 面 试 才 知 道 原 来 是 做 数 据 存 储 啊 。 在 公 司 的 实 验 室 里 实 习 了 2 个 月 , 李 东 就 闲<br />

不 住 了 , 和 领 导 抱 怨 , 都 做 两 个 月 测 试 了 , 让 我 们 出 去 帮 客 户 解 决 问 题 吧 。 领 导 笑 笑 看 着<br />

李 东 说 , 上 次 一 个 网 站 买 了 我 们 一 个 小 存 储 做 数 据 库 , 但 总 是 嫌 速 度 慢 , 你 去 看 看 是 什 么 原<br />

因 , 记 住 “ 只 能 检 查 , 不 能 做 操 作 ”。 李 东 到 了 客 户 现 场 , 做 磁 盘 阵 列 健 康 检 查 , 做 通 道 检<br />

查 , 读 写 检 查 等 , 把 在 实 验 室 里 面 学 的 东 西 都 用 了 一 遍 , 但 是 还 是 找 不 到 原 因 。 于 是 , 打<br />

电 话 给 公 司 寻 求 支 持 。 公 司 的 大 拿 龙 飞 过 来 , 过 来 后 按 步 骤 检 查 一 遍 , 然 后 两 分 钟 解 决 问<br />

题 。<br />

回 来 的 路 上 李 东 很 是 不 解 , 明 明 自 己 用 的 方 法 一 样 , 但 是 为 什 么 就 是 找 不 到 原 因 呢 ? 于<br />

是 问 问 龙 飞 原 因 , 龙 飞 笑 笑 告 诉 李 东 :“ 数 据 存 储 到 磁 盘 阵 列 上 , 是 要 经 过<br />

应 用 程 序 操 作 系 统 文 件 系 统 传 输 网 络 存 储 设 备<br />

而 其 中 任 何 一 个 环 节 出 问 题 , 或 者 是 两 个 环 节 的 衔 接 有 问 题 , 都 会 给 整 个 存 储 系 统 带 来<br />

影 响 , 比 如 今 天 的 案 例 : 整 个 数 据 库 存 储 系 统 速 度 慢 , 而 你 只 检 查 了 数 据 传 输 网 络 和 存 储<br />

设 备 这 一 块 , 而 真 正 出 问 题 的 是 solaris 操 作 系 统 的 允 许 连 接 的 最 大 数 没 有 修 改 , 还 是 300<br />

个 , 所 以 做 存 储 行 业 不 光 要 熟 悉 存 储 的 设 备 , 还 必 须 要 熟 悉 各 个 主 流 的 操 作 系 统 , 文 件 系 统 ,<br />

各 类 数 据 备 份 及 容 灾 软 件 , 还 有 一 些 数 据 库 和 应 用 软 件 , 才 能 帮 助 客 户 解 决 问 题 。 ”<br />

“ 还 有 刚 才 你 在 客 户 现 场 解 决 不 了 问 题 的 时 候 表 现 出 来 的 慌 乱 , 是 很 不 应 该 的 。 其 实<br />

哪 怕 做 10 年 的 存 储 , 也 有 自 己 解 决 不 了 的 问 题 。 但 重 要 的 是 坚 信 按 照 售 后 的 流 程 办 事 就 不<br />

会 出 错 , 所 以 不 管 多 难 处 理 的 问 题 , 多 记 得 问 题 都 必 须 装 出 很 镇 定 的 样 子 , 要 给 客 户 一 切<br />

尽 在 掌 握 的 感 觉 , 记 住 千 万 要 淡 定 淡 定 。”<br />

李 东 和 龙 大 工 程 师 谈 话 后 , 受 益 匪 浅 , 看 样 子 做 存 储 也 不 是 容 易 的 事 情 , 虽 然 是 硕<br />

士 毕 业 看 样 子 , 想 成 为 高 手 还 是 要 从 头 学 起 啊 。 于 是 一 头 扎 进 实 验 室 模 拟 各 种 环 境 开 始 试<br />

验 。<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


第 一 章 什 么 是 存 储<br />

这 张 图 是 SNIA( 全 球 网 络 存 储 工 业 协 会 ) 给 出 的 一 个 关 于 存 储 的 示 意 图 , 从 图 中 我 们 可 以 看 到<br />

存 储 就 是 从 最 上 端 的 应 用 (APPLICATION) 到 最 终 的 存 储 设 备 (STORAGE DEVICES) 的 数 据 存 放<br />

的 一 个 过 程 。 其 中 数 据 流 通 过 数 据 库 , 文 件 系 统 , 网 络 , 适 配 器 等 设 备 最 终 存 放 到 数 据 块 一<br />

级 的 存 储 设 备 上 面 。<br />

白 话 一 点 讲 就 是 存 储 就 像 物 流 公 司 对 货 物 进 行 分 类 处 理 , 集 中 存 放 的 一 个 过 程 : 数 据 库 和 文<br />

件 系 统 就 像 库 官 员 对 所 有 的 数 据 进 行 分 类 编 号 处 理 , 而 存 储 网 络 是 内 部 的 物 流 通 道 。 磁 盘 阵<br />

列 则 是 最 终 的 库 房 。<br />

数 据 库 和 文 件 系 统 的 内 容 很 多 , 了 解 存 储 , 我 们 先 从 存 储 网 络 , 也 就 是 从 主 机 连 接 到 磁 盘 阵<br />

列 的 网 络 及 协 议 说 起 : 存 储 网 络 的 发 展 是 从 SCSI,FC, ISCSI 这 个 过 程 , 我 们 今 天 就 已 这 个 过 程<br />

来 讲 存 储 网 络 协 议 。<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


案 例 :<br />

李 东 和 刘 斌 两 个 人 特 别 喜 欢 抬 杠 , 在 大 学 里 就 如 此 , 这 次 因 为 两 个 人 负 责 测 试 不 同 的<br />

设 备 , 又 开 始 抬 杠 了 。 李 东 是 负 责 FC 光 纤 产 品 的 , 而 刘 斌 是 负 责 ISCSI 产 品 的 。 李 东 就 坚<br />

持 说 :“ 买 存 储 , 当 然 最 好 的 是 FC 光 纤 存 储 啦 , 什 么 IP SAN, NAS 都 不 行 , 速 度 慢 不 说 , 还<br />

不 稳 定 。” 刘 斌 也 不 示 弱 :“ 谁 说 的 , ISCSI 现 在 已 经 很 成 熟 了 , 速 度 不 会 比 FC 光 纤 设 备<br />

慢 多 少 , 但 是 客 户 使 用 起 来 很 方 便 啊 , 而 且 又 不 需 要 HBA 卡 , 存 储 交 换 机 之 类 昂 贵 的 东 西 。”<br />

龙 飞 伸 伸 懒 腰 从 座 位 上 站 起 来 , 你 俩 小 子 我 刚 想 休 息 一 下 你 们 就 抬 杠 , 好 吧 , 让 我 来 告 诉 你<br />

们 什 么 是 真 正 的 FC 和 ISCSI, FC 存 储 可 以 看 成 是 屠 龙 刀 , 舞 起 来 虎 虎 生 风 , 好 看 又 有 用 。 而<br />

ISCSI 可 以 看 成 是 小 李 飞 刀 , 其 貌 不 扬 , 但 是 暗 藏 杀 机 。 怎 样 用 好 这 两 个 武 器 , 主 要 还 是<br />

要 看 在 什 么 场 合 和 用 武 器 的 人 。 大 系 统 , 高 IO 的 数 据 库 系 统 一 般 会 使 用 FC 存 储 , 而 要 存<br />

储 大 量 视 频 文 件 , 需 要 性 价 比 高 的 产 品 的 时 候 ,ISCSI 就 是 最 好 的 选 择 。 比 方 说 , 现 在 的 平<br />

安 城 市 监 控 系 统 , 包 括 全 球 眼 和 宽 视 界 , 基 本 上 都 是 使 用 ISCSI 的 存 储 作 为 主 存 储 系 统 。<br />

李 东 感 觉 悟 出 点 什 么 ,“ 两 个 都 是 好 东 西 , 只 是 在 不 同 的 场 合 , 不 同 的 作 用 罢 了 。 ”<br />

其 实 没 有 最 好 的 武 器 , 只 有 用 对 武 器 的 人 。<br />

第 一 节 SCSI<br />

小 型 计 算 机 系 统 接 口 (SCSI,Small Computer System Interface) 是 一 种 用 于 计 算 机 及 其 周 边<br />

设 备 之 间 ( 硬 盘 、 软 驱 、 光 驱 、 打 印 机 、 扫 描 仪 等 ) 系 统 级 接 口 的 独 立 处 理 器 标 准 。SCSI<br />

标 准 定 义 了 命 令 、 通 讯 协 定 以 及 实 体 的 电 气 特 性 ( 换 成 OSI 的 说 法 , 就 是 占 据 了 实 体 层 、 连<br />

结 层 、 通 讯 层 、 应 用 层 ), 最 大 部 份 的 应 用 是 在 储 存 设 备 上 ( 例 如 硬 盘 、 磁 带 机 ); 但 , 其 实<br />

SCSI 可 以 连 接 的 设 备 包 括 有 扫 描 器 、 光 学 装 置 ( 像 CD、DVD)、 打 印 机 …… 等 等 ,SCSI 命 令 中<br />

有 条 列 出 支 援 的 装 置 SCSI 周 边 装 置 。<br />

50 针 的 SCSI 接 头<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


SCSI 接 口 从 诞 生 到 现 在 已 经 历 了 二 十 多 年 的 发 展 , 先 后 衍 生 出 了 SCSI-1、Fast SCSI、<br />

FAST-WIDE-SCSI-2、Ultra SCSI、Ultra2 SCSI、Ultra160 SCSI、Ultra320 SCSI 等 , 现 在 市 场 中 占 据<br />

主 流 的 是 Ultra160 SCSI、Ultra320 SCSI 接 口 产 品 。<br />

在 系 统 中 应 用 SCSI 必 须 要 有 专 门 的 SCSI 控 制 器 , 也 就 是 一 块 SCSI 控 制 卡 , 才 能 支 持 SCSI<br />

设 备 , 这 与 IDE 硬 盘 不 同 。 在 SCSI 控 制 器 上 有 一 个 相 当 于 CPU 的 芯 片 , 它 对 SCSI 设 备 进 行<br />

控 制 , 能 处 理 大 部 分 的 工 作 , 减 少 了 中 央 处 理 器 的 负 担 (CPU 占 用 率 )。 在 同 时 期 的 硬 盘 中 ,<br />

SCSI 硬 盘 的 转 速 、 缓 存 容 量 、 数 据 传 输 速 率 都 要 高 于 IDE 硬 盘 , 因 此 更 多 是 应 用 于 商 业 领 域 。<br />

SCSI 最 早 是 1979 年 由 美 国 的 Shugart 公 司 ( 希 捷 公 司 前 身 ) 制 订 的 , 在 1986 年 获 得 了<br />

ANSI( 美 国 标 准 协 会 ) 的 承 认 , 称 为 SASI(Shugart Associates System Interface 施 加 特 联 合 系<br />

统 接 口 ), 也 就 是 SCSI-1。SCSI-1 是 第 一 个 SCSI 标 准 , 支 持 同 步 和 异 步 SCSI 外 围 设 备 ; 使 用<br />

8 位 的 通 道 宽 度 ; 最 多 允 许 连 接 7 个 设 备 ; 异 步 传 输 时 的 频 率 为 3MB/S, 同 步 传 输 时 的 频 率<br />

为 5MB/s; 支 持 WORM 外 围 设 备 。 它 采 用 25 针 接 口 , 因 此 在 连 接 到 SCSI 卡 (SCSI 卡 上 接 口<br />

为 50 针 ) 上 时 , 必 须 要 有 一 个 内 部 的 25 针 对 50 针 的 接 口 电 缆 。 该 种 接 口 已 基 本 被 淘 汰 ,<br />

在 相 当 古 老 的 设 备 上 或 个 别 扫 描 仪 设 备 上 还 能 看 到 。<br />

SCSI-2 有 被 称 为 Fast SCSI, 它 在 SCSI-1 的 基 础 上 做 出 了 很 大 的 改 进 , 还 增 加 了 可 靠 性 ,<br />

数 据 传 输 率 被 提 高 到 了 10MB/s, 仍 旧 使 用 8 位 的 并 行 数 据 传 输 , 还 是 最 多 7 个 设 备 。 后 来<br />

又 进 行 了 改 进 , 推 出 了 支 持 16 位 并 行 数 据 传 输 的 WIDE-SCSI-2( 宽 带 ) 和 FAST-WIDE-SCSI-2<br />

( 快 速 宽 带 ), 其 中 WIDE-SCSI-2 的 数 据 传 输 率 并 没 有 提 高 , 只 是 改 用 16 位 传 输 ; 而<br />

FAST-WIDE-SCSI-2 则 是 把 数 据 传 输 率 提 高 到 了 20MB/s。<br />

SCSI-3 标 准 版 本 是 在 1995 年 推 出 的 , 也 习 惯 称 为 Ultra SCSI, 其 同 步 数 据 传 输 速 率 为<br />

20MB/s。 若 使 用 16 位 传 输 的 Wide 模 式 时 , 数 据 传 输 率 更 可 以 提 高 至 40MB/s。 允 许 接 口 电<br />

缆 的 最 大 长 度 为 1.5 米 。<br />

1997 年 推 出 了 Ultra2 SCSI(Fast-40) 标 准 版 本 , 其 数 据 通 道 宽 度 仍 为 8 位 , 但 其 采 用<br />

了 LVD(Low Voltage Differential, 低 电 平 微 分 ) 传 输 模 式 , 传 输 速 率 为 40MB/s, 允 许 接 口 电<br />

缆 的 最 长 为 12 米 , 大 大 增 加 了 设 备 的 灵 活 性 , 支 持 同 时 挂 接 15 个 装 置 。 随 后 其 推 出 了 WIDE<br />

ULTRA 2 SCSI 接 口 标 准 , 它 采 用 16 位 数 据 通 道 带 宽 , 最 高 传 输 速 率 可 达 80MB/S, 允 许 接 口<br />

电 缆 的 最 长 为 12 米 , 同 样 支 持 同 时 挂 接 15 个 装 置 , 大 大 增 加 了 设 备 的 灵 活 性 。<br />

LVD 可 以 使 用 更 低 的 电 压 , 因 此 可 以 将 差 动 驱 动 程 序 和 接 收 程 序 集 成 到 硬 盘 的 板 载 SCSI<br />

控 制 器 中 。 老 式 SCSI 需 要 使 用 独 立 的 、 耗 电 的 高 压 器 件 。 由 于 LVD 使 用 的 是 低 电 压 和 低 电<br />

流 器 件 , 因 此 可 以 将 差 动 收 发 器 集 成 在 硬 盘 的 板 载 SCSI 控 制 器 中 , 不 再 需 要 单 独 的 高 成 本<br />

外 部 高 电 压 差 动 组 件 。<br />

LVD 硬 盘 可 进 行 多 模 式 转 换 , 当 所 有 条 件 都 满 足 时 , 硬 盘 就 工 作 在 LVD 模 式 下 ; 反 之<br />

如 果 并 非 所 有 条 件 都 满 足 , 硬 盘 将 降 为 单 端 工 作 模 式 。LVD 硬 盘 带 宽 的 增 加 对 于 服 务 器 环 境<br />

来 说 意 味 着 更 理 想 的 性 能 。 服 务 器 环 境 都 要 求 有 快 速 响 应 、 必 须 能 够 进 行 随 机 访 问 和 大 工 作<br />

量 的 队 列 操 作 。 当 使 用 诸 如 CAD、CAM、 数 字 视 频 和 各 种 RAID 等 软 件 的 时 候 , 带 宽 增 加 的<br />

效 果 能 够 立 杆 见 影 , 信 息 可 以 迅 速 而 轻 松 地 进 行 传 输 。<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


Ultra160 SCSI, 也 称 为 Ultra3 SCSI LVD, 是 一 种 比 较 成 熟 的 SCSI 接 口 标 准 , 是 在 Ultra2 SCSI<br />

的 基 础 上 发 展 起 来 的 , 采 用 了 双 转 换 时 钟 控 制 、 循 环 冗 余 码 校 验 和 域 名 确 认 等 新 技 术 。 双 转<br />

换 时 钟 控 制 在 不 提 高 接 口 时 钟 频 率 的 情 况 下 使 数 据 传 输 率 提 高 了 一 倍 , 这 是 Ultral60 SCSI 接<br />

口 速 率 大 幅 提 高 的 关 键 。 采 用 Ultra160 SCSI, 实 现 起 来 简 单 容 易 , 风 险 小 。 在 增 强 了 可 靠 性<br />

和 易 管 理 性 的 同 时 ,Ultra160 SCSI 的 传 输 速 率 为 Ultra2 SCSI 的 2 倍 , 达 到 160MB/s。<br />

Ultra160 SCSI 接 口 具 备 如 下 特 点 :<br />

Ultra2 和 Ultra160 的 设 备 可 以 同 时 安 装 在 一 条 总 线 上 ,Ultra160 设 备 性 能 不 会 下 降 ;<br />

通 过 提 高 检 纠 错 能 力 增 强 了 产 品 的 可 靠 性 ;<br />

具 有 监 控 接 口 性 能 和 较 高 可 靠 传 输 速 率 的 能 力 ;<br />

用 于 单 个 设 备 的 电 缆 长 度 可 达 25 米 , 用 于 2 个 或 多 个 设 备 的 电 缆 长 度 可 达 12 米 ;<br />

在 1 个 通 道 上 支 持 多 达 15 个 SCSI 设 备 ;<br />

Ultra320 SCSI, 也 称 为 Ultra4 SCSI LVD, 是 比 较 新 型 的 SCSI 接 口 标 准 。Ultra320 SCSI 是 在<br />

Ultra160 SCSI 的 基 础 上 发 展 起 来 的 ,Ultra160 SCSI 的 优 势 得 以 继 续 发 扬 ,Ultra160 SCSI 的 3<br />

项 关 键 技 术 , 即 双 转 换 时 钟 控 制 、 循 环 冗 余 码 校 验 和 域 名 确 认 , 都 得 到 保 留 。 以 前 以 往 的<br />

SCSI 接 口 标 准 中 ,SCSI 接 口 支 持 两 种 传 输 模 式 : 异 步 和 同 步 。Ultra320 SCSI 引 入 了 调 步 传 输<br />

模 式 , 在 这 种 传 输 模 式 中 , 简 化 了 数 据 时 钟 逻 辑 , 使 Ultra320 SCSI 的 高 传 输 速 度 成 为 可 能 。<br />

Ultra320 SCSI 传 输 速 率 可 以 达 到 320MB/s。<br />

Ultra320 SCSI 主 要 具 有 以 下 特 点 :<br />

双 倍 速 率 数 据 传 输 , 数 据 传 输 速 率 比 Ultra160 SCSI 提 高 了 一 倍 ;<br />

分 组 化 的 SCSI, 支 持 分 组 协 议 ;<br />

快 速 仲 裁 和 选 择 , 大 大 提 高 了 总 线 的 利 用 率 ;<br />

读 写 数 据 流 , 把 数 据 传 输 的 开 销 降 到 最 低 ;<br />

流 控 制 , 提 高 总 线 利 用 率 。<br />

SCSI 是 属 于 高 速 的 并 行 传 输 方 式 , 为 了 避 免 信 号 的 反 射 , 在 整 串 SCSI 数 据 线 的 头 和 尾 都 要<br />

接 上 一 个 终 端 器 才 行 。 一 般 SCSI 卡 上 预 设 的 都 是 自 动 调 整 SCSI 终 端 , 意 即 当 SCSI 卡 是 末 端<br />

设 备 时 ,SCSI 卡 会 为 自 己 加 上 终 端 器 , 反 之 则 不 会 。<br />

SCSI 小 知 识 一 :<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


SCSI 的 外 接 接 头 型 式 比 较 多 样 化 ,SCSI 的 外 接 接 头 型 式 比 较 多 样 化 , 共 有 25pin、50pin 大 头 、50pin<br />

小 头 及 68pin 共 4 种 。 早 期 的 MAC 电 脑 , 或 是 扫 描 仪 所 附 赠 的 简 易 SCSI 卡 , 通 常 是 25pin 这 一<br />

种 。 比 较 旧 的 SCSI 卡 ( 如 早 期 的 ISA 接 口 SCSI 卡 ), 通 常 都 是 50pin 大 头 的 型 式 。 现 今 一 般 的 SCSI<br />

卡 则 是 50pin 小 头 的 型 式 , 而 具 Wide SCSI 功 能 者 则 是 68pin 这 一 型 式 。<br />

SCSI 小 知 识 二 :<br />

单 端 SCSI 与 差 分 SCSI 的 区 别<br />

单 端 SCSI 与 差 分 SCSI 的 区 别 单 端 SCSI 与 差 分 SCSI 的 区 别 区 别 是 SCSI 的 信 号 不 一 样 , 电 压 不 一 样 ,<br />

所 以 传 输 距 离 不 一 样 ,Single-Ended 单 端 中 每 个 信 号 都 是 通 过 总 线 中 的 一 根 电 缆 传 送 的 。<br />

DIFF 差 分 通 过 总 线 传 送 时 是 靠 两 根 电 缆 上 的 电 压 差 传 送 的 。<br />

S.E 与 DIFF 的 信 号 最 大 传 输 距 离 也 不 同 。DIFF 较 S.E 的 有 效 电 平 高 , 信 号 衰 减 也 较 慢 , 所 以 传 输 距 离 也<br />

较 远 。<br />

现 在 差 分 是 一 种 提 高 信 号 完 整 性 和 减 少 Skew 的 一 种 物 理 方 法 。 它 大 大 减 少 了 误 码 率 , 这 种 差 分 技 术 被 大<br />

量 应 用 在 高 速 传 输 中 如 Fibre channel, SATA, SAS, infiniband and so on, 而 单 端 SCSI 就 没 有 这 种 特<br />

性 .<br />

差 分 信 号 传 输 , 是 通 过 两 根 平 行 的 线 来 传 递 一 个 信 号 ; 信 号 电 平 通 过 两 根 线 的 电 压 差 来 表 现 。<br />

因 为 两 根 线 平 行 , 且 靠 得 比 较 近 , 受 到 干 扰 时 , 电 压 上 升 和 下 降 几 乎 相 同 , 两 根 线 的 电 压 差 得 以 保 持 不 变 ,<br />

可 以 消 除 很 多 干 扰 信 号 。<br />

比 较 早 的 差 分 应 用 是 RS485, 现 在 的 SATA 和 SAS 也 都 用 差 分 信 号 .<br />

单 端 SCSI<br />

HVD 差 分 SCSI<br />

LVD 低 压 差 分 SCSI<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


HVD 高 压 差 分 卡 /LDV 低 压 差 分 卡<br />

高 电 平 信 号 差 分 卡 , 简 称 高 压 差 分 卡 , 外 观 和 普 通 的 SCSI 卡 是 没 有 什 么 区 别 的 , 区 别 的 是 一 个<br />

是 HVD 信 号 , 一 个 是 LVD 信 号 , 这 两 种 信 号 是 不 能 兼 容 的 , 也 就 是 说 高 压 差 分 卡 连 接 普 通 的<br />

SCSI 硬 盘 是 不 能 识 别 的 。<br />

大 多 是 中 型 以 上 主 机 所 采 用 之 SCSI 介 面 。 它 提 供 了 很 好 的 讯 号 传 输 品 质 , 也 就 可 支 援 较 长 的<br />

讯 号 线 总 长 了 。 它 并 不 和 常 见 的 Single-Ended 相 容 , 换 言 之 , 两 钟 介 质 介 面 设 备 原 則 上 是<br />

不 能 同 在 一 条 SCSI Bus 上 的 , 除 非 有 另 选 购 使 用 一 钟 "SE- 转 Diff. 转 换 器 ", 可 以 允 许 作 弹<br />

性 的 Single-Ended 和 HVD, 即 Differential 设 备 之 连 接 。 不 过 一 般 而 言 , 说 的 若 是<br />

"differential" 多 指 的 是 High Voltage Differential (HVD)。 现 在 有 了 新 的 协 定 LVD (Low<br />

Voltage Differential), 是 在 Ultra SCSI 之 后 开 始 推 行 的 , 可 使 得 传 输 信 号 长 达 12 米 , 这<br />

在 实 际 应 用 上 已 经 绰 绰 有 余 了 。 在 Ultra 2 SCSI 介 面 , 已 將 之 列 为 标 准 规 范 内 。 而 在 LVD 的<br />

介 面 下 , 多 支 援 以 往 的 SE 介 面 设 备 , 這 可 从 LVD/SE 多 模 終 端 器 上 获 得 证 明 , 只 是 若 在 一<br />

条 LVD Bus 中 , 有 一 個 SE 设 备 时 , 则 整 条 Bus 均 将 改 为 Single Ended 以 及 受 到 原 SE<br />

之 限 制 了 。 建 议 是 不 要 把 SE 和 LVD 设 备 , 放 在 同 一 条 SCSI Bus 上 , 能 夠 避 免 问 题 。<br />

总 结 , 单 端 的 SCSI 设 备 可 以 连 接 到 LVD 低 压 差 分 , 但 是 HVD 高 压 差 分 则 和 其 他 两 个 都 不 兼<br />

容 。<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


第 二 节 FC 协 议<br />

SAN(Storage Area Network, 存 储 局 域 网 络 ) 的 诞 生 , 使 存 储 空 间 得 到 更 加 充 分 的 利<br />

用 以 及 安 装 和 管 理 更 加 有 效 。SAN 是 一 种 将 存 储 设 备 、 连 接 设 备 和 接 口 集 成 在 一 个 高 速 网 络<br />

中 的 技 术 。SAN 本 身 就 是 一 个 存 储 网 络 , 承 担 了 数 据 存 储 任 务 ,SAN 网 络 与 LAN 业 务 网 络 相<br />

隔 离 , 存 储 数 据 流 不 会 占 用 业 务 网 络 带 宽 。<br />

在 SAN 网 络 中 , 所 有 的 数 据 传 输 在 高 速 、 高 带 宽 的 网 络 中 进 行 ,SAN 存 储 实 现 的<br />

是 直 接 对 物 理 硬 件 的 块 级 存 储 访 问 , 提 高 了 存 储 的 性 能 和 升 级 能 力 。<br />

早 期 的 SAN 采 用 的 是 光 纤 通 道 (FC,Fiber Channel) 技 术 , 所 以 , 以 前 的 SAN 多<br />

指 采 用 光 纤 通 道 的 存 储 局 域 网 络 , 到 了 iSCSI 协 议 出 现 以 后 , 为 了 区 分 , 业 界 就 把 SAN 分 为<br />

FC-SAN 和 IP-SAN。<br />

FC 开 发 于 1988 年 , 最 早 是 用 来 提 高 硬 盘 协 议 的 传 输 带 宽 , 侧 重 于 数 据 的 快 速 、<br />

高 效 、 可 靠 传 输 。 到 上 世 纪 90 年 代 末 ,FC SAN 开 始 得 到 大 规 模 的 广 泛 应 用 。<br />

FC 光 纤 通 道 拥 有 自 己 的 协 议 层 , 它 们 是 :<br />

FC-0: 连 接 物 理 介 质 的 界 面 、 电 缆 等 ; 定 义 编 码 和 解 码 的 标 准 。λ<br />

FC-1: 传 输 协 议 层 或 数 据 链 接 层 , 编 码 或 解 码 信 号 。λ<br />

FC-2: 网 络 层 , 光 纤 通 道 的 核 心 , 定 义 了 帧 、 流 控 制 、 和 服 务 质 量 等 。λ<br />

FC-3: 定 义 了 常 用 服 务 , 如 数 据 加 密 和 压 缩 。λ<br />

FC-4: 协 议 映 射 层 , 定 义 了 光 纤 通 道 和 上 层 应 用 之 间 的 接 口 , 上 层 应 用 比 如 : 串 行 SCSI<br />

协 议 ,HBA 卡 的 驱 动 提 供 了 FC-4 的 接 口 函 数 。FC-4 支 持 多 协 议 , 如 :FCP-SCSI,FC-IP,FC-VI。<br />

光 纤 通 道 的 主 要 部 分 实 际 上 是 FC-2。 其 中 从 FC-0 到 FC-2 被 称 为 FC-PH, 也 就 是 “ 物<br />

理 层 ”。 光 纤 通 道 主 要 通 过 FC-2 来 进 行 传 输 , 因 此 , 光 纤 通 道 也 常 被 成 为 “ 二 层 协 议 ” 或 者 “ 类<br />

以 太 网 协 议 ”。<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


理 解 光 纤 通 道 ( FC) 的 核 心 , 包 括 其 命 名 格 式 和 位 址 机 制 , 可 以 帮 助 人 更 好 的 理 解 SAN。<br />

要 全 面 了 解 所 有 有 关 协 议 的 知 识 才 能 够 快 速 浏 览 问 题 并 找 出 问 题 所 在 。 虽 然 通 过 图 形 界 面 ,<br />

鼠 标 点 击 和 有 限 的 知 识 也 可 能 解 决 问 题 , 但 是 这 显 然 并 不 是 好 方 法 。 因 此 我 们 在 这 里 学 习 一<br />

下 光 纤 通 道 协 议 。<br />

在 此 重 复 : 光 纤 通 道 并 不 是 SCSI 的 替 代 ; 一 般 而 言 SCSI 是 光 纤 通 道 的 上 层 。 有 些 跑 题 , 现<br />

在 进 入 正 题 。 光 纤 通 道 一 般 是 指 FC-PHY 层 :FC0-FC2, 在 我 们 的 上 一 篇 文 章 已 经 有 过 简 短 提<br />

及 。 术 语 FCP, 即 光 纤 通 道 协 议 , 是 指 对 SCSI 的 界 面 协 议 或 FC-4 层 映 射 。 我 们 这 里 讨 论 的<br />

是 光 纤 通 道 的 内 在 工 作 原 理 , 而 不 是 指 光 纤 通 道 协 议 。<br />

光 纤 通 道 的 数 据 单 元 叫 做 帧 。 即 使 光 纤 通 道 本 身 就 有 几 个 层 , 大 部 分 光 纤 通 道 是 指 第 2 层 协<br />

议 。 一 个 光 纤 通 道 帧 最 大 是 2148 字 节 , 而 且 光 纤 通 道 帧 的 头 部 比 起 广 域 网 的 IP 和 TCP 来 说<br />

有 些 奇 怪 。 光 线 通 道 只 使 用 一 个 帧 格 式 来 在 多 个 层 上 完 成 各 种 任 务 。 帧 的 功 能 决 定 其 格 式 。<br />

相 比 我 们 在 IP 世 界 中 的 概 念 , 光 纤 通 道 帧 格 式 是 奇 特 而 且 奇 妙 的 。<br />

光 纤 通 道 帧 起 始 于 帧 开 始 (SOF) 标 志 , 随 后 是 帧 头 部 , 这 个 一 会 进 行 描 述 。 数 据 , 或 光 纤<br />

通 道 内 容 , 紧 随 其 后 , 然 后 是 帧 结 束 (EOF)。 这 样 封 装 的 目 的 是 让 光 纤 通 道 可 以 在 需 要 时<br />

被 其 他 类 似 于 TCP 的 协 议 所 承 载 。<br />

FC 协 议 交 换 方 式<br />

按 照 连 接 和 寻 址 方 式 的 不 同 , 光 纤 通 道 支 持 三 种 拓 扑 方 式 :<br />

1. PTP( 点 对 点 ): 一 般 用 于 DAS( 直 连 式 存 储 ) 设 置<br />

服 务 器 和 存 储 设 备 在 点 对 点 的 环 境 里 都 是 N_PORT. 通 过 一 条 上 行 一 条 下 行 两 条 通<br />

道 进 行 数 据 存 储 与 读 取 。<br />

2. FC-AL( 光 纤 通 道 仲 裁 环 路 ): 采 用 FC-AL 仲 裁 环 机 制 , 使 用 Token( 令 牌 ) 的<br />

方 式 进 行 仲 裁 。 光 纤 环 路 端 口 , 或 交 换 机 上 的 FL 端 口 , 和 HBA 上 的 NL 端 口 ( 节<br />

点 环 ) 连 接 , 支 持 环 路 运 行 。 采 用 FC-AL 架 构 , 当 一 个 设 备 加 入 FC-AL 的 时 候 ,<br />

或 出 现 任 何 错 误 或 需 要 重 新 设 置 的 时 候 , 环 路 就 必 须 重 新 初 始 化 。 在 这 个 过 程 中 ,<br />

所 有 的 通 信 都 必 须 暂 时 中 止 。 由 于 其 寻 址 机 制 ,FC-AL 理 论 上 被 限 制 在 了 127 个<br />

节 点 。<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


FC-SW(FC Switchedλ 交 换 式 光 纤 通 道 ): 在 交 换 式 SAN 上 运 行 的 方 式 。F<br />

C-SW 可 以 按 照 任 意 方 式 进 行 连 接 , 规 避 了 仲 裁 环 的 诸 多 弊 端 , 但 需 要 购 买 支 持 交 换<br />

架 构 的 交 换 模 块 或 FC 交 换 机 。<br />

光 纤 信 道 (FC) 中 的 基 本 实 体 是 光 纤 信 道 网 络 , 与 一 般 分 层 网 络 不 同 的 是 , 一 个 光<br />

纤 信 道 网 络 很 大 程 度 上 由 功 能 单 元 以 及 各 单 元 间 接 口 所 指 定 , 各 部 分 组 成 如 下 :<br />

N_PORTs – 光 纤 信 道 流 量 终 点 ;<br />

FC Devices –N_PORT 访 问 的 光 纤 信 道 设 备 ;<br />

Fabric Port – 光 纤 网 络 接 口 , 连 接 N_PORT ;<br />

在 N_PORT 间 传 输 数 据 帧 的 网 络 结 构 ;<br />

交 换 结 构 或 混 合 结 构 下 的 一 组 辅 助 服 务 器 , 包 括 支 持 设 备 发 现 和 网 络 地 址 解 析 服 务 的<br />

名 称 服 务 器 。<br />

主 要 的 光 纤 信 道 网 络 拓 扑 组 成 如 下 所 示 :<br />

Arbitrated Loop –N_PORTs 以 菊 花 链 (daisy-chain) 形 式 连 接 在 一 起 ;<br />

Switched Fabric – 由 交 换 单 元 组 成 的 网 络 ;<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


Mixed Fabric – 由 交 换 机 和 "fabric-attached" 环 路 组 成 的 网 络 。 L_PORT 将 loo<br />

p-attached N_PORT (NL_PORT) 与 环 路 连 接 起 来 , 并 且 NL_PORT 通 过 FL_P<br />

ORT 接 入 该 结 构 。<br />

案 例 分 析 :<br />

某 电 信 运 营 商 ,2001 年 时 使 用 SAN 存 储 网 络 作 为 邮 件 系 统 的 集 中 存 储 中 心 , 使 用 FC-AL<br />

( 光 纤 通 道 仲 裁 环 路 ) 结 构 , 但 是 由 于 网 站 中 一 台 服 务 器 不 稳 定 , 不 停 的 宕 机 , 重 启 。<br />

整 个 SAN 网 络 都 不 是 很 稳 定 , 请 问 是 什 么 原 因 ? 如 何 解 决 ?<br />

答 案 : 采 用 FC-AL 架 构 , 当 一 个 设 备 加 入 FC-AL 的 时 候 , 或 出 现 任 何 错 误 或 需 要 重<br />

新 设 置 的 时 候 , 环 路 就 必 须 重 新 初 始 化 。 在 这 个 过 程 中 , 所 有 的 通 信 都 必 须 暂 时 中 止 。<br />

如 果 网 络 中 有 一 个 设 备 不 稳 定 , 整 个 网 络 就 不 会 稳 定 。 建 议 采 用 FC-SW(FC Switched<br />

交 换 式 光 纤 通 道 ), 这 样 网 络 中 任 意 设 备 的 变 化 不 会 影 响 整 个 系 统 。<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


第 三 节 革 命 的 ISCSI<br />

这 里 讲 到 ISCSI, 为 什 么 是 革 命 的 , 因 为 ISCSI 是 把 FC 的 协 议 平 民 化 了 。 把<br />

专 门 用 于 数 据 传 输 的 FC 协 议 进 行 了 改 良 , 加 上 TCP/IP 的 封 头 , 就 可 以 直 接 在 IP 网<br />

络 上 传 递 , 昂 贵 的 HBA 卡 ,FC 交 换 机 可 以 抛 弃 , 只 有 有 一 台 普 通 的 网 络 交 换 机 就 可<br />

以 , 完 成 从 主 机 到 存 储 的 数 据 传 递 过 程 。<br />

iSCSI 是 Internet Small Computer System Interface 的 简 称 , 是 一 种 在 IP 网 络<br />

上 传 送 SCSI 操 作 指 令 和 数 据 的 协 议 。iSCSI 协 议 最 初 是 由 IBM,CISIO,HP 发 起 的 ,<br />

2000 年 2 月 成 为 IETF 草 案 ,2004 年 4 月 作 为 正 式 的 IETF 标 准 。<br />

iSCSI 协 议 主 要 由 RFC3720 描 述 , 其 他 涉 及 的 RFC 有 :3721(iSNS),3722<br />

( 命 令 规 范 ),3723( 安 全 ),3347( 设 计 ),3783(IP 上 的 有 序 命 令 传 送 ),3385<br />

( 错 误 估 计 )<br />

iSCSI 协 议 建 立 在 TCP 协 议 之 上 , 是 一 种 面 向 连 接 的 协 议 。<br />

iSCSI 的 主 要 功 能 是 在 TCP/IP 上 封 装 , 并 可 靠 的 传 输 SCSI 命 令 及 数 据 。<br />

iSCSI 协 议 在 存 储 网 络 协 议 体 系 架 构 中 的 位 置 如 下 图 所 示 :<br />

双 方 在 各 个 协 议 层 的 通 讯 示 意 图 如 下 :<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


iSCSI 协 议 定 义 了 在 TCP/IP 网 络 发 送 、 接 收 block( 数 据 块 ) 级 的 存 储 数 据<br />

的 规 则 和 方 法 。 发 送 端 将 SCSI 命 令 和 数 据 封 装 到 TCP/IP 包 中 再 通 过 网 络 转 发 ,<br />

接 收 端 收 到 TCP/IP 包 之 后 , 将 其 还 原 为 SCSI 命 令 和 数 据 并 执 行 , 完 成 之 后 将 返<br />

回 的 SCSI 命 令 和 数 据 再 封 装 到 TCP/IP 包 中 再 传 送 回 发 送 端 。 而 整 个 过 程 在 用 户 看<br />

来 , 使 用 远 端 的 存 储 设 备 就 象 访 问 本 地 的 SCSI 设 备 一 样 简 单 。<br />

早 在 2001 年 上 半 年 ,IBM 就 推 出 了 IP Storage 200i, 是 市 场 上 公 认 的 第 一<br />

款 基 于 iSCSI 协 议 的 产 品 , 这 款 产 品 的 出 现 , 对 于 身 处 信 息 爆 炸 时 代 却 无 法 承 担 光<br />

纤 通 道 SAN 环 境 高 成 本 的 中 小 型 用 户 来 说 , 具 有 巨 大 的 吸 引 力 ;2001 年 10 月 ,<br />

Cisco 也 推 出 了 SN5420 存 储 路 由 器 , 基 于 IP 标 准 和 SAN 标 准 , 可 以 提 供 与 现 有 LAN、<br />

WAN、 光 纤 和 SAN 设 备 之 间 的 互 操 作 , 率 先 建 立 了 IP 网 络 与 SAN 之 间 的 桥 梁 。 现<br />

在 , 有 更 多 的 厂 商 参 与 到 iSCSI 产 品 的 开 发 中 , 如 Intel 已 经 推 出 了 存 储 网 卡 IP<br />

Storage iSCSI PRO/1000T, 将 协 议 转 化 也 就 是 封 装 、 还 原 TCP/IP 包 的 步 骤 转 移 到<br />

网 卡 上 来 执 行 , 大 大 降 低 了 服 务 器 处 理 器 的 占 用 率 。 同 时 , 还 有 芯 片 、 板 卡 制 造 商 加<br />

入 到 iSCSI 产 品 的 开 发 中 , 如 Adaptec、Qlogic 等 等 。<br />

iSCSI 可 以 实 现 在 IP 网 络 上 运 行 SCSI 协 议 , 使 其 能 够 在 诸 如 高 速 千 兆 以 太 网<br />

上 进 行 路 由 选 择 。 用 户 可 使 用 标 准 的 千 兆 级 以 太 网 传 输 协 议 , 通 过 Cat5 线 缆 和 任 意<br />

的 交 换 机 产 品 , 将 服 务 器 与 磁 盘 阵 列 连 接 在 一 起 , 并 且 能 够 提 供 接 近 FC SAN 的 性 能 。<br />

iSCSI 集 SCSI、 以 太 网 和 TCP/IP 等 技 术 于 一 身 , 支 持 iSCSI 技 术 的 服 务 器 和<br />

存 储 设 备 能 够 直 接 连 接 到 现 有 的 IP 交 换 机 和 路 由 器 上 , 具 有 低 廉 、 开 放 、 大 容 量 、<br />

传 输 速 度 高 、 安 全 等 诸 多 优 点 , 最 适 合 需 要 在 网 络 上 存 储 和 传 输 大 量 数 据 的 应 用 环 境 ,<br />

比 如 广 电 视 频 制 作 和 媒 资 系 统 , 视 频 监 控 系 统 ,IPTV 系 统 , 数 据 备 份 系 统 , 以 及 许<br />

多 的 对 IOPS 和 带 宽 性 能 要 求 不 是 还 很 高 的 数 据 库 存 储 系 统 、 大 容 量 文 件 存 储 系 统 。<br />

这 样 ISCSI 存 储 加 上 SATA 磁 盘 就 可 以 作 为 近 线 存 储 来 大 规 模 使 用 。<br />

我 们 分 析 了 iSCSI 存 储 的 系 统 结 构 , 下 面 来 看 iSCSI 是 如 何 与 服 务 器 、 工 作 站<br />

等 主 机 设 备 来 连 接 的 , 也 就 是 我 们 如 何 建 立 一 个 iSCSI 网 络 存 储 系 统 。<br />

iSCSI 设 备 的 主 机 接 口 一 般 默 认 都 是 IP 接 口 , 可 以 直 接 与 以 太 网 络 交 换 机 和<br />

iSCSI 交 换 机 连 接 , 形 成 一 个 存 储 区 域 网 络 。 根 据 主 机 端 HBA 卡 、 网 络 交 换 机 的 不<br />

同 ,iSCSI 设 备 与 主 机 之 间 有 三 种 连 接 方 式 。<br />

第 一 种 : 以 太 网 卡 +initiator 软 件 方 式 。<br />

服 务 器 、 工 作 站 等 主 机 使 用 标 准 的 以 太 网 卡 , 通 过 以 太 网 线 直 接 与 以 太 网 交 换<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


机 连 接 ,iSCSI 存 储 也 通 过 以 太 网 线 连 接 到 以 太 网 交 换 机 上 , 或 直 接 连 接 到 主 机 的 以<br />

太 网 卡 上 。 在 主 机 上 安 装 Initiator 软 件 。<br />

安 装 Initiator 软 件 后 ,Initiator 软 件 可 以 将 以 太 网 卡 虚 拟 为 iSCSI 卡 , 接 受 和 发<br />

送 iSCSI 数 据 报 文 , 从 而 实 现 主 机 和 iSCSI 设 备 之 间 的 iSCSI 协 议 和 TCP/IP 协 议 传<br />

输 功 能 。<br />

这 种 方 式 由 于 采 用 普 通 的 标 准 以 太 网 卡 和 以 太 网 交 换 机 , 无 需 额 外 配 置 适 配 器 ,<br />

因 此 硬 件 成 本 最 低 。 缺 点 是 进 行 ISCSI 包 文 和 TCP/IP 包 文 转 换 要 点 主 机 端 的 一 部 分<br />

资 源 。 不 过 在 低 I/O 和 低 带 宽 性 能 要 求 的 应 用 环 境 中 和 完 全 满 足 数 据 访 问 要 求 。<br />

目 前 很 多 最 新 版 本 的 常 用 操 作 系 统 都 提 供 免 费 的 Initiator 软 件 , 建 立 一 个 存 储<br />

系 统 除 了 存 储 设 备 本 身 外 , 基 本 上 不 需 要 投 入 更 多 的 资 金 来 , 因 此 在 三 种 系 统 连 接 方<br />

式 中 其 建 设 成 本 是 最 低 的 。<br />

第 二 种 : 硬 件 TOE 网 卡 +initiator 软 件 方 式 。<br />

第 一 种 方 式 由 于 采 用 普 通 以 太 网 卡 和 以 太 网 交 换 机 , 无 需 额 外 配 置 适 配 器 , 或<br />

专 用 的 网 络 设 备 , 因 此 硬 件 成 本 最 低 。 但 由 于 进 行 ISCSI 包 文 和 TCP/IP 包 文 的 打 包<br />

和 解 包 全 部 需 要 主 机 主 处 理 器 CPU 来 进 行 运 算 , 数 据 传 输 率 直 接 受 到 主 机 当 前 运 行<br />

状 态 和 可 用 资 源 的 影 响 和 限 制 , 因 此 一 般 无 法 提 供 高 带 宽 和 高 IOPS 性 能 。<br />

具 有 TOE(TCP Offload Engine) 功 能 的 智 能 以 太 网 卡 可 以 将 网 络 数 据 流 量 的<br />

处 理 工 作 全 部 转 到 网 卡 上 的 集 成 硬 件 中 进 行 , 把 系 统 主 处 理 器 CPU 从 忙 于 协 议 处 理<br />

的 繁 重 的 内 核 中 断 服 务 中 解 脱 出 来 , 主 机 只 承 担 TCP/IP 控 制 信 息 的 处 理 任 务 。<br />

与 第 一 种 方 式 相 比 , 采 用 TOE 卡 可 以 大 幅 度 提 高 数 据 的 传 输 速 率 。TCP/IP 协<br />

议 栈 功 能 由 TOE 卡 完 成 , 而 iSCSI 层 的 功 能 仍 旧 由 主 机 来 完 成 。<br />

由 于 TOE 卡 也 采 用 TCP/IP 协 议 , 相 当 于 一 块 高 性 能 的 以 太 网 卡 , 所 以 第 二 种<br />

方 式 也 可 以 看 做 是 第 一 种 连 接 方 式 的 特 殊 情 况 。<br />

第 三 种 :iSCSI HBA 卡 连 接 方 式 。<br />

在 主 机 上 安 装 专 业 的 iSCSI HBA 适 配 卡 , 从 而 实 现 主 机 与 交 换 机 之 间 、 主 机 与<br />

存 储 之 间 的 高 效 数 据 交 换 。<br />

与 前 两 种 方 式 相 比 , 第 三 种 连 接 方 式 中 采 用 了 iSCSI HBA 卡 , 因 此 数 据 传 输 性<br />

能 最 好 , 价 格 也 最 高 。<br />

后 两 种 方 式 都 需 要 在 主 机 上 安 装 专 门 的 硬 件 板 卡 , 由 于 目 前 TOE 网 卡 和 iSCSI<br />

HBA 的 市 场 价 格 都 比 较 贵 。 如 果 网 络 中 主 机 数 量 比 较 多 , 那 么 网 络 总 资 金 投 入 不 见<br />

得 会 比 FC-SAN 存 储 系 统 低 很 多 , 网 络 的 带 宽 和 性 能 却 相 比 FC-SAN 存 储 系 统 差 了<br />

很 多 。<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


附 文 : DIY iSCSI 阵 列<br />

如 果 你 的 IT 架 构 中 有 空 闲 的 服 务 器 以 及 SCSI 磁 盘 柜 , 那 么 你 就 完 全 可 以 通 过 添 加 一 个 并 不 昂 贵 的<br />

iSCSI target 程 序 来 把 它 们 配 置 成 为 一 个 iSCSI 磁 盘 阵 列 。 即 便 你 必 须 购 买 一 些 磁 盘 , 估 计 一 个 2TB 的 阵<br />

列 总 共 花 费 也 只 有 大 约 3 万 元 左 右 就 可 以 了 。 你 构 建 的 新 iSCSI 阵 列 可 以 运 行 在 Windows 或 Linux 操 作 系<br />

统 之 上 , 这 样 你 就 可 以 在 你 的 新 服 务 器 上 像 iSCSI 逻 辑 驱 动 器 一 样 分 配 空 间 给 文 件 服 务 。<br />

有 的 时 候 你 也 可 以 这 样 DIY 阵 列 来 作 为 一 种 权 宜 之 计 。 很 多 时 候 , 你 已 经 向 领 导 提 交 了 购 买 新 磁 盘 存 储 阵<br />

列 的 申 请 , 但 在 等 待 领 导 审 批 的 时 候 , 也 许 你 的 Exchange 服 务 器 已 经 没 有 空 间 可 用 了 , 这 时 你 就 可 以 使<br />

用 一 台 服 务 器 、 一 个 SCSI 磁 盘 柜 以 及 一 个 下 载 的 WinTarget 软 件 副 本 轻 松 的 将 存 储 添 加 到 服 务 器 上 。<br />

也 许 你 会 觉 得 通 过 一 台 服 务 器 来 构 建 iSCSI 磁 盘 阵 列 的 做 法 有 些 古 怪 。 其 实 很 多 市 场 上 的 iSCSI 磁 盘 阵 列<br />

产 品 , 包 括 诸 如 LeftHand Networkl 和 MPC 等 一 些 著 名 厂 商 的 产 品 , 都 是 使 用 了 标 准 的 Xeon 主 板 。 自 然 ,<br />

基 于 服 务 器 的 阵 列 并 不 具 备 冗 余 的 磁 盘 控 制 器 , 但 是 一 个 好 的 RAID 控 制 器 和 iSCSI target 软 件 的 组 合 ,<br />

同 样 能 够 实 现 与 品 牌 产 品 性 能 相 当 的 iSCSI 阵 列 。<br />

一 旦 你 将 iSCSI target 软 件 加 入 到 一 台 Windows 或 Linux 服 务 器 , 你 就 可 以 创 建 逻 辑 磁 盘 或 LUN(Logical<br />

Unit Numbers, 逻 辑 单 元 数 )。 大 多 数 拥 有 企 业 级 磁 盘 阵 列 的 人 都 会 创 建 RAID 设 置 , 然 后 划 分 为 很 多 个<br />

LUN 给 他 们 的 服 务 器 , 它 们 都 有 权 访 问 底 层 的 操 作 系 统 , 这 提 供 了 很 大 的 灵 活 性 。 大 多 数 的 iSCSI target<br />

软 件 都 允 许 你 创 建 虚 拟 的 LUN 作 为 你 服 务 器 上 面 现 有 文 件 系 统 的 文 件 对 象 (file object), 或 者 将 一 个 卷 、<br />

分 区 或 其 他 没 有 格 式 的 磁 盘 空 间 转 变 为 LUN。<br />

文 件 LUN 可 以 充 分 利 用 诸 如 压 缩 (compression)、 快 照 (snapshots) 等 特 性 , 你 也 可 以 使 用 第 三 方 的<br />

程 序 ( 如 Double-Take 或 WANsync) 来 做 复 制 (replication)。 当 主 机 服 务 器 的 卷 都 已 经 被 添 满 后 , 你 只<br />

要 通 过 简 单 的 几 次 鼠 标 点 击 就 可 以 扩 展 一 个 基 于 文 件 的 LUN, 而 扩 展 一 个 分 区 或 物 理 磁 盘 却 是 一 项 相 比 大<br />

得 多 的 工 程 。 特 别 是 , 如 果 你 想 在 自 己 的 开 发 环 境 中 尝 试 一 种 自 制 的 iSCSI 阵 列 , 那 么 基 于 文 件 的 LUN 是<br />

非 常 适 合 的 , 而 且 从 测 试 服 务 器 上 删 除 你 不 再 使 用 的 LUN 还 可 以 获 得 很 多 的 自 由 空 间 。<br />

从 更 底 层 来 分 析 , 通 过 主 机 操 作 系 统 的 文 件 系 统 来 运 行 你 的 iSCSI I/O 所 带 来 的 附 加 代 价 是 —— 基 于 文 件<br />

的 LUN 会 比 分 区 LUN 更 慢 。 尤 其 是 当 你 为 了 其 他 文 件 或 LUN 而 使 用 你 的 基 于 文 件 的 LUN 卷 时 , 这 种 情<br />

况 会 更 明 显 。 精 简 自 动 配 置 (thin provisioning) 可 以 让 你 在 一 个 5TB 的 磁 盘 阵 列 中 创 建 出 10 个 1TB 的<br />

LUN, 因 为 它 只 有 在 写 入 内 容 的 时 候 才 使 用 磁 盘 空 间 。 尽 管 可 以 通 过 使 用 LUN 装 载 稀 少 的 文 件 , 来 使 得 你<br />

自 制 的 阵 列 模 拟 高 端 SAN 阵 列 的 精 简 自 动 配 置 特 性 , 而 且 这 好 像 也 很 有 诱 惑 力 , 但 我 们 的 忠 告 是 —— 这 将<br />

会 创 建 出 非 常 碎 小 的 LUN 文 件 , 并 且 对 性 能 会 有 较 大 影 响 。<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


而 且 , 在 文 件 LUN 数 据 上 使 用 其 他 的 文 件 系 统 过 滤 器 ( 如 防 病 毒 软 件 或 CDP 应 用 等 ), 也 不 是 什 么 好 主<br />

意 。 防 病 毒 程 序 会 将 LUN 数 据 误 解 为 病 毒 , 从 而 使 得 你 的 系 统 运 行 如 同 蜗 牛 一 样 慢 。 举 例 来 说 , 如 果 你 服<br />

务 器 的 G 卷 是 LUN, 有 使 用 者 将 感 染 病 毒 的 文 件 存 放 到 该 驱 动 器 中 , 而 iSCSI 服 务 器 上 又 装 有 防 病 毒 软 件 ,<br />

那 么 整 个 G 驱 动 器 将 会 被 检 查 隔 离 , 而 不 仅 仅 是 被 感 染 病 毒 的 文 件 。 所 以 , 如 果 你 使 用 单 个 的 卷 来 做 文 件<br />

服 务 或 基 于 文 件 的 LUN, 你 最 好 是 想 办 法 不 要 让 文 件 LUN 接 受 病 毒 扫 描 , 而 只 在 装 备 LUN 的 服 务 器 上 运<br />

行 防 病 毒 程 序 。<br />

市 场 上 各 厂 商 销 售 的 阵 列 都 是 运 行 各 自 的 私 有 软 件 , 它 们 一 般 不 会 轻 易 受 到 日 常 病 毒 、 蠕 虫 等 的 影 响 , 这<br />

种 固 件 升 级 之 间 的 间 隔 时 间 要 比 Windows 服 务 器 补 丁 之 间 升 级 间 隔 长 很 多 。 另 外 , 由 于 当 你 对 自 制 的 阵 列<br />

进 行 补 丁 修 补 的 时 候 , 你 必 须 关 掉 所 有 主 机 服 务 器 使 用 的 逻 辑 驱 动 器 , 所 以 这 也 就 意 味 着 你 使 用 自 制 阵 列<br />

会 比 使 用 市 场 上 买 到 的 专 职 阵 列 具 有 更 长 的 停 机 维 护 时 间 。<br />

自 制 的 iSCSI 安 全 吗 ?<br />

尽 管 iSCSI 规 范 定 义 了 如 何 使 用 IPsec 在 加 密 的 链 接 上 发 送 协 议 , 但 是 大 多 数 厂 商 并 没 有 实 现 这 一 选 项 功<br />

能 部 分 。 如 果 你 使 用 在 TCP/IP 堆 栈 中 支 持 IPsec 的 Windows Server 或 Linux 分 发 来 构 建 iSCSI 阵 列 , 那<br />

么 iSCSI target 软 件 将 会 使 用 那 个 堆 栈 ,IPsec 就 可 以 对 在 你 的 服 务 器 和 磁 盘 阵 列 之 间 传 输 的 数 据 进 行 加<br />

密 , 或 者 可 以 通 过 验 证 证 书 授 权 的 形 式 来 确 保 只 有 那 些 应 该 访 问 磁 盘 阵 列 上 LUN 的 服 务 器 才 能 够 访 问 , 这<br />

比 通 常 的 CHAP(Challenge-Handshake Authentication Protocol, 挑 战 握 手 验 证 协 议 ) 鉴 定 要 更 具 有 安 全<br />

性 。<br />

不 过 ,IPsec 的 缺 点 是 , 所 有 的 加 密 和 解 密 都 要 吞 噬 CPU 频 率 周 期 。 我 们 使 用 于 iSCSI 减 负 载 的 TOE 以<br />

及 iSCSI HBA 等 并 不 支 持 IPsec 减 负 载 (IPsec off-load)。 尽 管 包 括 Intel 和 3Com 在 内 的 主 要 网 卡 厂 商<br />

都 已 经 使 得 10/100 安 全 NIC 支 持 IPsec, 但 我 们 在 市 场 上 能 见 到 的 千 兆 以 太 网 (Gigabit Ethernet)IPsec<br />

卡 只 有 一 种 , 那 就 是 Cavium Network 公 司 的 Nitrox XL。 你 需 要 记 住 一 点 :IPsec 只 是 在 传 输 过 程 中 加 密<br />

数 据 。<br />

那 么 , 你 应 该 寻 找 什 么 样 的 iSCSI target 软 件 呢 ? 首 先 要 注 重 灵 活 性 。 随 着 服 务 器 的 需 求 空 间 变 化 , 你 会<br />

需 要 扩 展 LUN, 因 此 你 选 择 的 iSCSI target 应 用 要 具 有 跨 越 几 个 RAID 组 或 物 理 驱 动 器 扩 展 LUN 的 能 力 ,<br />

也 就 是 要 具 备 一 组 可 靠 的 基 于 文 件 的 LUN 以 及 一 个 可 以 跨 越 多 个 驱 动 器 来 扩 展 卷 的 逻 辑 卷 管 理 器 。<br />

另 外 , 还 需 要 注 意 快 照 能 力 。 在 需 要 的 时 候 快 照 可 以 复 制 虚 拟 服 务 器 或 变 化 的 配 置 , 不 过 实 际 中 快 照 必 须<br />

是 根 据 事 先 设 定 好 的 时 间 进 度 计 划 来 执 行 , 也 就 是 它 需 要 通 过 诸 如 Windows 2003 VSS(Volume Shadow<br />

copy Service, 卷 映 射 拷 贝 服 务 ) 这 样 的 快 照 软 件 工 具 , 随 着 你 服 务 器 的 应 用 来 调 整 变 化 。 加 入 你 对 数 据<br />

库 采 用 了 每 小 时 一 次 的 快 照 , 万 一 什 么 时 候 数 据 库 被 破 坏 , 你 也 可 以 轻 松 返 回 到 上 一 快 照 时 的 健 康 状 况 ,<br />

而 不 会 造 成 太 大 损 失 。<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


多 路 径 I/0(Multipath I/O,MPIO) 支 持 可 以 允 许 在 服 务 器 和 iSCSI 阵 列 之 间 有 多 个 千 兆 以 太 网 (GigE)<br />

连 接 , 也 可 以 允 许 这 些 连 接 使 用 分 离 的 以 太 网 交 换 机 。 这 样 , 当 其 中 一 个 电 缆 连 接 中 断 或 某 一 个 交 换 机 发<br />

生 故 障 时 , 你 的 服 务 器 也 不 会 中 断 与 数 据 的 连 接 。<br />

复 制 (Replication) 也 是 一 项 先 进 的 技 术 功 能 , 它 能 够 使 得 你 本 地 磁 盘 架 构 更 具 有 容 错 性 , 或 者 能 够 把 你<br />

的 现 场 数 据 传 送 到 另 一 个 磁 盘 阵 列 以 备 灾 难 恢 复 使 用 。 需 要 指 出 的 是 , 如 果 一 个 企 业 很 注 重 复 制 的 高 可 用<br />

性 的 话 , 是 不 太 可 能 采 用 自 制 iSCSI 阵 列 的 。<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


第 四 节 NAS 会 一 统 江 湖 吗 ?<br />

NAS 技 术 最 近 也 是 突 飞 猛 进 , 从 NETAPP 在 中 国 的 销 售 额 年 年 翻 番 就 可 以 看 出<br />

来 , 说 NAS 是 最 好 的 文 件 共 享 技 术 , 并 不 适 合 数 据 库 系 统 。 但 是 oracle 公 司 每 年 大<br />

量 采 购 NETAPP 的 NAS 好 像 又 打 破 了 这 一 规 律 。 到 底 NAS 会 不 会 代 替 FC,ISCSI<br />

等 技 术 一 统 江 湖 呢 ? 让 我 们 从 NAS 的 底 层 技 术 说 起 :<br />

NAS 采 用 了 NFS(Sun) 沟 通 Unix 阵 营 和 CIFS 沟 通 NT 与 Unix, 这 也 反 映 了<br />

NAS 是 基 于 操 作 系 统 的 “ 文 件 级 ” 读 写 操 作 , 访 问 请 求 是 根 据 “ 文 件 句 柄 + 偏 移 量 ” 得 出 。<br />

句 柄 是 比 进 程 还 要 小 的 单 元 , 通 常 用 作 进 程 之 间 通 信 、 资 源 定 位 等 。 与 SAN 不 同 ,<br />

NAS 对 数 据 的 管 理 是 基 于 文 件 系 统 , 不 会 去 管 下 面 的 存 储 是 谁 家 的 , 所 以 NAS 天 生<br />

具 有 存 储 异 构 整 合 的 存 储 虚 拟 化 功 能 。 下 面 我 们 介 绍 一 下 NAS 文 件 共 享 的 灵 魂<br />

——NFS 和 CIFS。<br />

NFS( 网 络 文 件 系 统 ) 是 Unix 系 统 间 实 现 磁 盘 文 件 共 享 的 一 种 方 法 , 支 持 应 用<br />

程 序 在 客 户 端 通 过 网 络 存 取 位 于 服 务 器 磁 盘 中 数 据 的 一 种 文 件 系 统 协 议 。 其 实 它 包 括<br />

许 多 种 协 议 , 最 简 单 的 网 络 文 件 系 统 是 网 络 逻 辑 磁 盘 , 即 客 户 端 的 文 件 系 统 通 过 网 络<br />

操 作 位 于 远 端 的 逻 辑 磁 盘 , 如 IBM SVD( 共 享 虚 拟 盘 )。 现 一 般 在 Unix 主 机 之 间 采<br />

用 Sun 开 发 的 NFS(Sun), 它 能 够 在 所 有 Unix 系 统 之 间 实 现 文 件 数 据 的 互 访 , 逐<br />

渐 成 为 主 机 间 共 享 资 源 的 一 个 标 准 。 相 比 之 下 ,SAN 采 用 的 网 络 文 件 系 统 , 作 为 高<br />

层 协 议 , 需 要 特 别 的 文 件 服 务 器 来 管 理 磁 盘 数 据 , 客 户 端 以 逻 辑 文 件 块 的 方 式 存 取 数<br />

据 , 文 件 服 务 器 使 用 块 映 射 存 取 真 正 的 磁 盘 块 , 并 完 成 磁 盘 格 式 和 元 数 据 管 理 。<br />

CIFS 是 由 微 软 开 发 的 , 用 于 连 接 Windows 客 户 机 和 服 务 器 。 经 过 Unix 服 务 器<br />

厂 商 的 重 新 开 发 后 , 它 可 以 用 于 连 接 Windows 客 户 机 和 Unix 服 务 器 , 执 行 文 件 共 享<br />

和 打 印 等 任 务 。 它 最 早 的 由 来 是 NetBIOS, 这 是 微 软 开 发 的 在 局 域 网 内 实 现 基 于<br />

Windows 名 称 资 源 共 享 的 API。 之 后 , 产 生 了 基 于 NetBIOS 的 NetBEUI 协 议 和<br />

NBT(NetBIOS OVER TCP/IP) 协 议 。NBT 协 议 进 一 步 发 展 为 SMB(Server Message<br />

Block Potocol) 和 CIFS(Common Internet File System, 通 用 互 联 网 文 件 系 统 ) 协<br />

议 。 其 中 ,CIFS 用 于 Windows 系 统 , 而 SMB 广 泛 用 于 Unix 和 Linux, 两 者 可 以 互<br />

通 。SMB 协 议 还 被 称 作 LanManager 协 议 。CIFS 可 籍 由 与 支 持 SMB 的 服 务 器 通 信<br />

而 实 现 共 享 。 微 软 操 作 系 统 家 族 和 几 乎 所 有 Unix 服 务 器 都 支 持 SMB 协 议 /SMBBA 软<br />

件 包 。<br />

但 最 近 的 消 息 有 点 不 妙 — 微 软 已 经 在 Exchange 等 关 健 应 用 中 撤 消 了 对 CIFS 协<br />

议 的 支 持 。 微 软 在 其 网 站 上 称 ,CIFS 协 议 要 求 数 据 通 过 客 户 的 网 络 设 备 , 容 易 造 成<br />

性 能 瓶 颈 。 此 举 遭 到 业 内 人 士 抨 击 。<br />

SAMBA 开 放 源 代 码 软 件 的 开 发 者 之 一 杰 里 米 称 , 对 Linux 的 恐 惧 感 和 试 图 利 用<br />

其 在 台 式 机 方 面 的 优 势 保 护 Windows 服 务 器 操 作 系 统 的 销 售 是 微 软 拒 绝 CIFS 协 议<br />

的 真 正 原 因 。Network Appliance 公 司 (NAS 设 备 主 要 生 产 商 之 一 ) 也 曾 表 示 , 微 软<br />

的 这 一 措 施 是 “ 不 理 智 和 贪 婪 的 ”。<br />

案 例 3: 网 站 应 用<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


刘 斌 最 近 开 始 负 责 网 站 行 业 的 售 前 , 本 来 他 是 钟 情 于 ISCSI 技 术 的 ,ISCSI 有 FC 协 议<br />

的 高 速 , 加 上 可 以 使 用 普 通 以 太 网 的 特 点 , 加 上 低 廉 的 价 格 可 以 说 是 无 敌 于 天 下 了 。 但 是 在<br />

网 站 这 个 行 业 里 面 推 广 的 一 直 不 是 很 理 想 , 于 是 , 他 特 地 去 拜 访 一 大 门 户 网 站 , 了 解 他 们 的<br />

应 用 , 看 有 没 有 机 会 。<br />

网 站 的 技 术 负 责 人 张 总 是 刘 斌 的 学 长 , 从 网 络 管 理 员 一 步 一 步 干 到 公 司 的 CTO, 那<br />

真 是 聪 明 人 啊 ( 做 人 做 事 都 很 聪 明 )。 张 总 把 刘 斌 迎 到 办 公 室 :“ 刘 斌 啊 , 你 进 这 家 专 业 做<br />

ISCSI 的 存 储 公 司 很 不 错 啊 , 你 们 公 司 最 近 发 展 势 头 很 好 , 但 是 看 样 子 你 还 不 是 很 了 解 网<br />

站 的 情 况 , 如 果 想 让 你 们 的 存 储 在 我 的 网 站 使 用 , 你 先 要 成 为 网 站 系 统 的 专 家 才 行 。”<br />

“ 让 我 给 你 讲 讲 我 们 网 站 发 展 的 过 程 吧 , 我 刚 来 这 家 公 司 的 时 候 , 就 几 个 人 , 那 个 时<br />

候 我 们 就 在 电 信 的 机 房 租 了 一 个 柜 子 , 买 了 两 台 服 务 器 , 一 台 做 WEB 服 务 器 , 一 台 做 数 据<br />

库 服 务 器 。 就 够 用 了 , 可 以 等 公 司 拿 到 VC 后 , 到 处 做 宣 传 , 做 活 动 , 每 天 的 流 量 是 翻 倍 的<br />

涨 啊 。 服 务 器 马 上 就 不 够 用 了 , 开 始 是 买 了 10 台 PC SERVER 做 WEB 服 务 器 , 一 台 小 机<br />

做 数 据 库 存 储 。 但 是 用 了 半 年 又 不 够 用 了 。 但 是 CMS 出 现 解 决 了 现 有 网 站 数 据 库 瓶 颈 的<br />

问 题 . CMS 英 文 全 称 是 : Content Management System, 通 过 CMS 系 统 将 所 有 数 据 库 驱 动 的<br />

网 页 变 成 了 静 态 网 页 , 这 样 就 不 需 要 每 次 都 去 调 用 数 据 库 系 统 了 。 但 是 造 成 的 问 题 是 , 静<br />

态 页 面 需 要 有 一 个 能 给 所 有 WEB 服 务 器 访 问 的 公 用 存 储 系 统 , 而 且 这 个 存 储 还 能 支 持 不 同<br />

的 操 作 系 统 , 于 是 NAS 在 互 联 网 中 开 始 大 量 使 用 。 看 看 现 在 的 门 户 网 站 , 少 则 几 百 台 , 多<br />

则 上 万 台 WEB 服 务 器 。 如 果 没 有 nas 系 统 , 需 要 多 少 人 来 进 行 静 态 页 面 和 程 序 的 更 新 和 维<br />

护 ?”<br />

“ 原 来 这 样 ” 刘 斌 同 学 明 白 “ 那 这 么 说 ISCSI 在 网 站 的 应 用 里 面 需 求 会 很 小 吧 ”。 那<br />

也 不 一 定 , 张 总 回 答 : 我 们 现 在 在 做 很 多 视 频 存 储 的 网 站 , 特 别 是 CDN 系 统 , 已 经 不 需 要<br />

通 过 NAS 进 行 共 享 , 应 用 软 件 可 以 将 热 点 数 据 自 动 进 行 远 程 复 制 , 降 低 网 络 传 输 量 和 数 据<br />

库 的 使 用 率 。 所 谓 云 存 储 可 以 说 从 CDN 系 统 里 面 学 了 不 少 东 西 。 所 以 说 现 在 的 大 型 网 站 ,<br />

高 端 FC 存 储 , 高 端 NAS 和 性 价 比 高 的 ISCSI 产 品 都 会 有 大 量 的 需 求 。<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


第 五 节 连 接 方 式 与 协 议 的 关 系<br />

我 们 平 时 在 做 存 储 设 计 的 时 候 , 容 易 犯 一 次 错 误 : 那 就 是 把 连 接 方 式 和 存 储 协 议 相 混 淆 。<br />

现 在 让 我 们 看 一 看 存 储 连 接 拓 扑 方 式 有 几 种 :<br />

1. 主 机 和 存 储 直 接 连 接 :DAS(direct attached system)。 注 意 只 要 是 主 机 直 接 连 接 存 储<br />

的 都 叫 DAS, 而 中 间 的 协 议 可 以 使 用 SCSI, ISCSI, FC 都 可 以 。 但 是 如 果 使 用 SCSI 或<br />

者 SAS 连 接 协 议 就 只 能 用 DAS, 因 为 这 两 种 协 议 还 没 有 交 换 机 可 以 连 接 。 只 能 直 连 。<br />

见 左 上 角 。<br />

2. SAN(storage area network) 存 储 区 域 网 络 : 主 机 和 存 储 设 备 通 过 网 络 交 接 设 备 连 接 在<br />

一 起 组 成 的 网 络 就 叫 做 SAN 网 络 。 SAN 网 络 的 核 心 是 SAN 交 换 机 , 所 有 的 数 据 必 须<br />

通 过 SAN 交 换 机 进 行 通 信 。SAN 网 络 中 可 以 使 用 的 协 议 只 有 FC 和 ISCSI。<br />

3. NAS( network attached storage): 通 过 文 件 共 享 协 议 进 行 数 据 共 享 的 存 储 方 式 。 图<br />

中 第 二 排 的 两 张 图 , 左 边 的 为 标 准 的 NAS 存 储 , 用 户 通 过 IP 网 络 进 行 访 问 。 而 右<br />

边 的 图 为 现 在 高 端 NAS 的 一 般 机 构 ,NAS 网 关 加 FC 存 储 。 例 如 ONstor 就 是 供 应<br />

NAS 网 关 , 后 面 可 以 连 接 任 何 厂 商 的 FC 存 储 。<br />

问 题 : 有 个 模 糊 的 客 户 信 息 , 看 大 家 是 否 能 够 猜 出 客 户 的 现 状 和 如 何 帮 他 设 计 整 体<br />

系 统 。<br />

客 户 以 前 有 个 DAS 存 储 , 但 是 最 近 想 升 级 , 但 是 FC SAN 的 系 统 很 贵 , 于 是 想 是 否<br />

能 用 ISCSI 系 统 。<br />

问 题 分 析 : 以 前 使 用 的 DAS 存 储 , 虽 然 没 有 告 诉 我 们 是 什 么 接 口 , 但 是 可 以 大 概<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


推 出 是 SCSI 协 议 的 , 如 果 客 户 有 足 够 的 资 金 , 应 用 系 统 又 是 核 心 系 统 , 可 以 建 议 使<br />

用 FC SAN 结 构 , 需 要 增 加 FC HBA 卡 , FC 交 换 机 , 光 纤 线 等 东 西 。 如 果 要 求 低 成<br />

本 可 以 使 用 ISCSI 接 口 的 存 储 , 该 存 储 无 需 光 纤 卡 线 之 类 的 东 西 , 只 需 要 一 台 普 通<br />

网 络 交 换 机 , 六 类 线 就 可 以 正 常 工 作 了 。<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


第 二 章 操 作 系 统 与 存 储<br />

谈 存 储 不 能 不 谈 操 作 系 统 , 因 为 到 做 存 储 设 计 和 配 置 时 都 与 服 务 器 或 者 小 型 机 的 操<br />

作 系 统 有 关 系 , 关 系 最 大 的 部 分 还 是 文 件 系 统 。 所 以 这 一 章 节 就 谈 操 作 系 统 和 文 件<br />

系 统 与 存 储 的 关 系 。<br />

现 在 用 的 操 作 系 统 最 多 的 就 5 种 ,windows,lunix,aix,hpunix,solaris。 前 面 两 种<br />

是 因 为 在 桌 面 级 市 场 上 占 据 主 流 , 而 被 大 家 广 泛 使 用 。 而 后 面 三 种 则 是 应 该 在 小 型<br />

机 市 场 上 占 据 大 部 分 市 场 而 形 成 的 。 其 实 可 以 分 成 两 大 类 :windows 和 unix<br />

第 一 节 Unix 操 作 系 统 产 生 发 展<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


Unix 操 作 系 统 的 历 史 漫 长 而 曲 折 , 它 的 第 一 个 版 本 是 1969 年 由 KeThompson 在 AT&T<br />

贝 尔 实 验 室 实 现 的 , 运 行 在 一 台 DECPDP-7 计 算 机 上 。 这 个 版 本 实 现 了 一 个 文 件 系<br />

统 、 一 个 命 令 解 释 器 (shell) 和 一 些 简 单 的 文 件 工 具 。Ken 和 他 的 伙 伴 们 使 用 GE 系 统<br />

来 为 PDP-7 进 行 交 叉 编 译 , 很 快 写 好 了 汇 编 器 , 使 系 统 有 了 自 支 持 的 能 力 。 这 个 系<br />

统 已 基 本 成 型 , 其 文 件 系 统 与 现 在 的 文 件 系 统 相 似 , 它 使 用 i 结 点 , 有 特 殊 文 件 类<br />

型 支 持 目 录 和 设 备 , 而 且 可 以 同 时 支 持 两 个 用 户 。<br />

与 当 时 的 一 个 名 为 MULTICS(MULTiplexed Information and Computing System) 的<br />

操 作 系 统 相 比 ,UNIX 显 得 异 常 短 小 精 悍 , 它 曾 被 玩 笑 地 称 作 "UNICS", 代<br />

表 UNiplexed Information and Computing System. 有 人 称 MULTICS 代<br />

表 "Many Unneccessarily Large Tables In Core Simulataneously", 而 UNIX 则 是 裁 减 了 的<br />

MULTICS, 不 久 ,UNICS 变 成 了 UNIX 而 且 被 流 传 下 来 。<br />

1970 年 ,UNIX 被 移 植 到 PDP-11/20 上 , 这 需 要 很 大 的 工 作 量 , 因 为 整 个 系 统 全 是 用<br />

汇 编 语 言 编 写 的 。<br />

C 语 言 的 诞 生 给 系 统 设 计 带 来 了 新 的 契 机 , Ken Thompson 和 Dennis Ritchie 使 用 C<br />

语 言 对 整 个 系 统 进 行 了 再 加 工 和 编 写 , 使 得 Unix 能 够 很 容 易 的 移 植 到 其 他 硬 件 的 计<br />

算 机 上 。 从 那 以 后 ,Unix 系 统 开 始 了 令 人 瞩 目 的 发 展 。 由 于 此 时 AT&T 还 没 有 把 Unix<br />

作 为 它 的 正 式 商 品 , 因 此 研 究 人 员 只 是 在 实 验 室 内 部 使 用 并 完 善 它 。 正 是 由 于 Unix<br />

是 被 作 为 研 究 项 目 , 其 他 科 研 机 构 和 大 学 的 计 算 机 研 究 人 员 也 希 望 能 得 到 这 个 系<br />

统 , 以 便 进 行 自 己 的 研 究 。AT&T 以 分 发 许 可 证 的 方 法 , 对 Unix 仅 仅 收 取 很 少 的 费<br />

用 , 大 学 和 研 究 机 构 就 能 获 得 Unix 的 源 代 码 以 进 行 研 究 。Unix 的 源 代 码 被 散 发 到<br />

各 个 大 学 , 一 方 面 使 得 科 研 人 员 能 够 根 据 需 要 改 进 系 统 , 或 者 将 其 移 植 到 其 他 的 硬<br />

件 环 境 中 去 , 另 一 方 面 培 养 了 懂 得 Unix 使 用 和 编 程 的 大 量 的 学 生 , 这 使 得 Unix 的<br />

普 及 更 为 广 泛 。<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


由 于 操 作 系 统 的 开 发 相 当 困 难 , 只 有 少 数 的 计 算 机 厂 商 , 如 IBM、Digital 等 大 型<br />

公 司 , 才 拥 有 自 己 的 操 作 系 统 , 而 其 他 众 多 生 产 计 算 机 的 硬 件 厂 商 则 采 用 别 人 开 发<br />

的 操 作 系 统 。 因 为 Unix 不 需 要 太 多 的 花 费 , 因 此 很 多 厂 商 就 选 择 了 Unix 作 为 他 们<br />

生 产 的 计 算 机 使 用 的 操 作 系 统 。 他 们 把 Unix 移 植 到 自 己 的 硬 件 环 境 下 , 而 不 必 从 头<br />

开 发 一 个 操 作 系 统 。<br />

到 了 70 年 代 中 后 期 , 在 Unix 发 展 到 了 版 本 6 之 后 ,AT&T 认 识 到 了 Unix 的 价 值 ,<br />

成 立 了 Unix 系 统 实 验 室 (Unix System Lab,USL) 来 继 续 发 展 Unix。 因 此 AT&T 一 方<br />

面 继 续 发 展 内 部 使 用 的 Unix 版 本 7, 一 方 面 由 USL 开 发 对 外 正 式 发 行 的 Unix 版 本 ,<br />

同 时 AT&T 也 宣 布 对 Unix 产 品 拥 有 所 有 权 。 几 乎 在 同 时 , 加 州 大 学 伯 克 利 分 校 计 算<br />

机 系 统 研 究 小 组 (CSRG) 使 用 Unix 对 操 作 系 统 进 行 研 究 , 因 此 他 们 的 研 究 成 果 就<br />

反 映 在 他 们 使 用 的 Unix 中 。 他 们 对 Unix 的 改 进 相 当 多 , 增 加 了 很 多 当 时 非 常 先 进<br />

的 特 性 , 包 括 更 好 的 内 存 管 理 , 快 速 且 健 壮 的 文 件 系 统 等 , 大 部 分 原 有 的 源 代 码 都<br />

被 重 新 写 过 , 以 支 持 这 些 新 特 性 。 很 多 其 他 Unix 使 用 者 , 包 括 其 他 大 学 和 商 业 机<br />

构 , 都 希 望 能 得 到 CSRG 改 进 的 Unix 系 统 。 因 此 CSRG 中 的 研 究 人 员 把 他 们 的 Unix<br />

组 成 一 个 完 整 的 Unix 系 统 ──BSD Unix(Berkeley Software Distribution), 向 外 发 行 。<br />

到 此 ,UNIX 就 有 了 一 个 大 的 分 支 , 分 为 AT&T UNIX 和 BSD Unix, 现 代 的 Unix 版<br />

本 大 部 分 都 是 这 两 个 版 本 的 衍 生 产 品 。<br />

第 二 节 BSD 横 空 出 世<br />

Unix 在 Unix 的 历 史 发 展 中 具 有 相 当 大 的 影 响 力 , 被 很 多 商 业 厂 家 采 用 , 成 为<br />

很 多 商 用 Unix 的 基 础 。 而 AT&T 与 其 同 时 存 在 的 Unix 版 本 的 影 响 就 小 得 多 。 同 时 很<br />

多 研 究 项 目 也 是 以 BSDUnix 为 研 究 系 统 , 例 如 美 国 国 防 部 的 项 目 ─ARPANET,<br />

ARPANET 今 天 发 展 成 为 了 Internet, 而 BSDUnix 中 最 先 实 现 了 TCP/IP, 使 Internet<br />

和 Unix 紧 密 结 合 在 一 起 。 而 AT&T 的 Unix 系 统 实 验 室 , 同 时 也 在 不 断 改 进 他 们 的 商<br />

用 Unix 版 本 , 直 到 他 们 吸 收 了 BSDUnix 中 已 有 的 各 种 先 进 特 性 , 并 结 合 其 本 身 的 特<br />

点 , 推 出 了 Unix System V 版 本 之 后 , 情 况 才 有 了 改 变 。 从 此 以 后 ,BSDUnix 和<br />

UnixSystemV 形 成 了 当 今 Unix 的 两 大 主 流 , 现 代 的 Unix 版 本 大 部 分 都 是 这 两 个 版 本<br />

的 衍 生 产 品 。<br />

Unix 的 版 本 号 表 示 方 式 比 较 复 杂 , 各 种 不 同 的 Unix 版 本 有 自 己 的 版 本 标 识 方 式 ,<br />

如 最 早 AT&T 开 发 的 内 部 Unix 使 用 简 单 的 顺 序 号 来 标 识 版 本 , 从 V 1 到 V 7。BSD 使<br />

用 主 版 本 加 次 版 本 的 方 法 标 识 , 如 4.2BSD,4.3BSD, 在 原 始 版 本 的 基 础 上 还 有 派 生<br />

版 本 , 这 些 版 本 通 常 有 自 己 的 名 字 , 如 4.3BSD-Net/1,4.3BSD-Net/2。AT&T 使 用 罗<br />

马 数 字 来 标 识 他 们 的 对 外 发 布 的 Unix 版 本 , 用 Release 来 表 示 次 版 本 。 如<br />

System V Release 4( 简 写 为 SVR4) 标 识 AT&T 的 Unix System V 的 第 四 次 发 布 的 版 本 。<br />

其 他 商 业 公 司 的 Unix 使 用 自 己 的 版 本 标 识 , 如 Sun 的 Solaris 2.6,IBM 的 AIX 4.0<br />

等 。 虽 然 AT&T 的 Unix System V 也 是 非 常 优 秀 的 Unix 版 本 , 但 是 BSD Unix 在<br />

Unix 领 域 内 的 影 响 更 大 。AT&T 的 Unix 系 统 实 验 室 一 直 关 注 着 BSD 的 发 展 , 在 1992<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


年 ,Unix 系 统 实 验 室 指 控 BSDI── 一 家 发 行 商 业 BSD Unix 的 公 司 , 违 反 了 AT&T<br />

的 许 可 权 , 发 布 自 己 的 Unix 版 本 , 并 进 一 步 指 控 伯 克 利 计 算 机 系 统 研 究 组 泄 漏 了<br />

Unix 的 商 业 机 密 ( 此 时 的 4.3BSD 中 来 自 AT&T Un ix 的 代 码 已 经 不 足 10%)。 这 个 官<br />

司 影 响 了 很 多 Unix 厂 商 , 使 他 们 不 得 不 从 BSD Unix 转 向 Unix Sys tem V, 以 避 免 法 律<br />

问 题 。 以 至 于 当 今 大 多 数 商 业 Unix 版 本 都 是 基 于 Unix System V 的 。<br />

这 件 有 关 Unix 版 权 的 案 子 直 到 Unix 系 统 实 验 室 被 AT&T 卖 给 了 Novell 公 司 后 才 得<br />

以 解 决 , Novell 不 打 算 陷 入 这 样 的 法 律 纷 争 中 , 因 此 就 采 用 了 比 较 友 好 的 做 法 。 伯<br />

克 利 的 CSRG 被 允 许 自 由 发 布 BSD, 但 是 其 中 来 自 于 AT&T 的 代 码 必 须 完 全 删 除 。 因<br />

此 CSRG 就 对 他 们 最 新 的 4.4BSD 进 行 了 修 改 , 删 除 了 那 些 来 自 于 AT&T 的 源 代 码 ,<br />

发 布 了 4.4 BSD Lite 版 本 ( 该 系 统 是 不 完 整 的 , 尤 其 对 于 英 特 尔 386 体 系 的 计 算 机 系<br />

统 )。 由 于 这 个 版 本 不 存 在 法 律 问 题 ,4.4BSD Lite 成 为 了 现 代 BSD 系 统 的 基 础 版 本 。<br />

Novell 的 比 较 友 善 的 做 法 还 不 止 对 BSD, 他 把 自 己 的 Unix 改 名 为 Unixware, 而 将<br />

Unix 商 标 赠 送 给 X/Open── 一 个 由 众 多 Unix 厂 家 组 成 的 联 盟 , 这 样 这 个 联 盟 内 的<br />

所 有 成 员 均 可 使 用 Unix 商 标 。 从 此 之 后 ,Unix 不 再 是 专 有 产 品 了 。 后 来 Novell 由<br />

于 自 身 的 经 营 问 题 , 又 将 Unixware 卖 给 SCO 公 司 。 同 时 , 由 于 BSD 系 统 已 经 十 分<br />

成 熟 , 作 为 对 操 作 系 统 进 行 研 究 的 目 标 已 经 达 到 , 伯 克 利 计 算 机 系 统 研 究 组 (CSRG)<br />

在 发 布 了 4 .4BSD-lite2 之 后 就 解 散 了 , 小 组 的 科 研 人 员 有 些 进 入 了 Unix 商 业 公 司 ,<br />

有 些 继 续 进 行 其 他 计 算 机 领 域 的 研 究 。 此 时 , 严 格 意 义 上 的 Unix System V 和 BSD Unix<br />

都 不 复 存 在 了 , 存 在 的 只 是 他 们 的 各 种 后 续 版 本 。 Unix 的 魅 力 不 仅 在 于 其 功 能 的 强<br />

大 性 , 还 在 于 其 优 秀 的 可 扩 展 性 , 它 提 供 了 高 级 语 言 C 和 各 种 解 释 语 言 可 用 于 编 写<br />

程 序 。 利 用 这 些 系 统 提 供 的 工 具 , 使 用 者 就 能 按 照 自 己 的 需 要 和 兴 趣 对 原 有 系 统 进<br />

行 扩 展 , 满 足 相 当 一 部 分 计 算 机 研 究 人 员 和 使 用 者 的 需 要 , 这 样 Unix 就 具 备 更 强 大<br />

的 能 力 , 完 成 各 种 复 杂 的 任 务 。 一 旦 用 熟 了 Unix, 体 会 到 Unix 的 强 大 功 能 , 使 用<br />

者 就 会 希 望 一 直 使 用 它 , 而 不 是 仅 具 备 有 限 能 力 的 其 他 计 算 机 系 统 。 企 业 也 希 望 能<br />

在 其 可 以 承 受 的 条 件 下 , 利 用 Unix 系 统 的 强 大 处 理 能 力 。<br />

由 于 Unix 是 多 用 户 操 作 系 统 , 作 为 系 统 的 普 通 使 用 者 只 能 使 用 系 统 提 供 的 有 限 功<br />

能 , 而 只 有 Unix 系 统 管 理 员 才 能 充 分 利 用 其 的 全 部 能 力 。 因 而 拥 有 自 己 的 Unix 系<br />

统 也 是 一 个 普 通 Unix 使 用 者 的 愿 望 。 但 是 在 那 些 时 候 , 能 够 满 足 这 些 愿 望 的 计 算 机<br />

并 不 是 每 个 人 都 能 买 得 起 的 。 昂 贵 的 硬 件 , 以 及 Unix 逐 渐 商 业 化 趋 势 , 都 使 得 拥 有<br />

自 己 的 Unix 对 大 多 数 人 只 是 美 好 的 愿 望 , 而 使 用 Unix 的 地 方 主 要 为 一 些 要 求 较 高<br />

的 科 研 和 大 中 型 公 司 机 构 。<br />

到 80 年 代 , 个 人 计 算 机 的 出 现 , 使 得 硬 件 的 价 格 能 被 人 和 小 企 业 接 受 了 , 给 拥<br />

有 一 个 Unix 系 统 的 愿 望 带 来 了 一 线 曙 光 。 但 是 使 用 8086 芯 片 的 个 人 计 算 机 能 力 比<br />

较 差 , 在 其 上 不 能 实 现 真 正 正 常 工 作 的 多 用 户 系 统 。 进 入 九 十 年 代 之 后 , 英 特 尔 公<br />

司 推 出 的 80386 芯 片 使 个 人 计 算 机 的 计 算 能 力 大 大 提 高 , 在 个 人 计 算 机 上 构 建 一 个<br />

可 以 真 正 使 用 的 Unix 也 成 为 了 可 能 。<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


事 实 上 此 时 能 运 行 在 X86 平 台 上 的 Unix 相 当 有 限 ,Mircosoft 的 Xienx 是 一 种 ( 后<br />

来 发 展 成 为 SCO Unix), 但 不 能 指 望 能 自 由 、 免 费 使 用 这 个 商 用 系 统 。 要 移 植 Unix<br />

到 PC 平 台 上 便 需 要 Unix 的 源 代 码 , 而 此 时 受 AT&T 的 许 可 权 的 限 制 ,Unix 代 码 还<br />

不 能 被 自 由 获 得 ( 但 在 BSD 与 AT&T 的 法 律 纠 纷 之 后 的 4.4 BSD Lite 不 再 受 这 个 限 制<br />

了 , 可 以 在 BSD 许 可 下 自 由 使 用 )。 很 多 计 算 机 爱 好 者 为 了 实 现 一 个 可 以 自 由 使 用<br />

的 操 作 系 统 , 不 断 进 行 着 努 力 。 自 由 软 件 基 金 会 的 GNU 计 划 的 目 的 就 是 打 算 创 建<br />

一 个 自 由 的 、 与 Unix 类 似 的 操 作 系 统 , 为 了 实 现 这 个 目 的 ,GNU 开 发 了 很 多 非 常<br />

有 效 的 工 具 , 包 括 编 译 器 和 很 多 系 统 命 令 , 然 而 GNU 计 划 中 的 操 作 系 统 内 核 ──<br />

HURD, 却 进 展 缓 慢 , 从 而 无 法 构 建 一 个 完 整 的 操 作 系 统 。 很 快 , 就 有 计 算 机 爱 好<br />

者 开 始 考 虑 在 个 人 计 算 机 平 台 上 构 建 一 个 Unix 内 核 。 芬 兰 一 位 计 算 机 研 究 生<br />

Linus Torvalds 开 始 了 这 个 工 作 , 并 取 得 了 相 当 大 的 成 功 , 他 通 过 学 习 Minix── 一<br />

个 用 于 教 学 目 的 的 简 单 Unix 系 统 , 在 x86 平 台 上 构 建 了 Linux 内 核 , 这 个 内 核 和 GNU<br />

的 系 统 工 具 结 合 起 来 , 成 为 当 前 非 常 流 行 的 GNU/Linux 系 统 。<br />

第 三 节 LUNIX 颠 覆 传 统 。<br />

说 到 Linus 和 他 的 操 作 系 统 , 就 不 能 不 提 到 他 的 故 乡 芬 兰 。 芬 兰 可 以 说 是 世 界 上 国 土<br />

面 积 按 比 例 来 说 处 在 北 极 圈 内 最 多 的 国 家 ( 约 1/4 的 国 土 ), 在 这 个 寒 冷 的 国 度 里 ,<br />

遍 布 着 大 大 小 小 约 六 万 多 个 湖 泊 , 芬 兰 也 因 此 被 人 们 称 为 “ 千 湖 之 国 ”。 在 芬 兰 , 一<br />

年 中 实 际 上 只 有 三 个 季 度 , 即 春 冬 、 夏 季 和 秋 冬 。“ 严 寒 的 冬 天 ” 长 达 8 个 月 之 久 ,<br />

而 夏 天 却 只 有 60 天 左 右 。 芬 兰 的 历 史 可 以 说 是 芬 兰 人 民 与 自 然 、 与 寒 冷 做 艰 苦 卓 绝<br />

的 斗 争 的 一 个 神 话 。 芬 兰 人 的 民 族 史 诗 《 卡 勒 瓦 拉 》 就 记 载 了 这 个 民 族 从 远 古 时 代<br />

起 直 到 圣 女 玛 丽 亚 生 下 英 雄 卡 勒 利 亚 王 为 止 的 所 有 神 话 。 这 部 史 诗 的 作 者 从 丰 富 的<br />

民 间 传 说 、 神 话 及 歌 谣 中 汲 取 了 一 切 养 料 和 精 彩 篇 章 , 将 它 们 收 集 、 改 编 并 润 色 整<br />

理 ,1835 年 初 版 时 有 35 篇 长 诗 , 共 12000 多 行 ; 而 1849 年 再 版 时 , 篇 幅 几 乎 增 加<br />

了 一 倍 , 共 50 篇 长 诗 ,23000 余 行 , 最 终 成 为 芬 兰 人 的 “ 荷 马 史 诗 ”。<br />

140 多 年 后 , 又 有 一 位 芬 兰 人 创 造 了 另 一 部 伟 大 的 “ 史 诗 ”, 他 就 是 天 才 的 程 序 员<br />

Linus. 不 过 这 一 次 他 用 的 是 计 算 机 语 言 , 他 收 集 这 部 “ 史 诗 ” 创 作 素 材 的 地 方 是 覆 盖 全<br />

球 的 因 特 网 。 这 使 得 他 的 创 作 从 一 开 始 便 具 有 了 国 际 性 , 使 得 他 的 这 部 “ 史 诗 ” 成 了<br />

一 部 国 际 性 的 作 品 。 这 部 “ 史 诗 ” 的 问 世 , 很 有 可 能 在 20 世 纪 以 及 21 世 纪 成 为 芬 兰<br />

人 对 于 世 界 的 最 巨 大 的 贡 献 。 这 部 “ 史 诗 ” 的 创 作 是 从 芬 兰 首 都 赫 尔 辛 基 开 始 的 。<br />

芬 兰 首 都 赫 尔 辛 基 是 一 座 三 面 环 海 、 风 景 秀 丽 、 大 小 湖 泊 星 罗 棋 布 的 城 市 ; 它 还 是<br />

举 世 闻 名 的 大 学 城 和 国 际 性 的 政 治 、 文 化 及 会 议 中 心 , 这 里 曾 举 行 过 多 次 西 方 国 家<br />

的 首 脑 会 议 。 在 距 市 中 心 约 10 分 钟 脚 程 的 地 方 , 有 一 条 以 卡 勒 瓦 拉 命 名 的 大 街 , 街<br />

道 两 旁 ,19 世 纪 的 旧 式 住 宅 和 现 代 化 的 建 筑 相 映 成 趣 。 卡 勒 瓦 拉 大 街 上 , 有 一 座 大<br />

学 生 寄 宿 公 寓 , 我 们 这 部 史 诗 的 缔 造 者 Linus Torvalds 就 住 在 这 座 公 寓 里 。 现 在<br />

看 来 ,Linux 并 非 深 思 熟 虑 的 惊 人 之 作 , 而 是 一 个 逐 渐 扩 展 的 过 程 。 它 综 合 了 许 多 次<br />

的 试 验 、 各 种 各 样 的 概 念 和 一 小 段 一 小 段 的 程 序 , 在 不 知 不 觉 中 逐 渐 凝 聚 成 了 一 个<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


有 机 的 整 体 。 这 个 过 程 与 史 诗 《 卡 勒 瓦 拉 》 的 成 书 过 程 极 为 相 似 。 它 最 初 的 生 成 动<br />

机 应 当 追 溯 到 1990 年 的 秋 天 。 那 时 的 Linus 正 在 赫 尔 辛 基 大 学 学 习 Unix 课 程 , 所 用<br />

的 教 材 是 Andrew Tanenbaum 的 《 操 作 系 统 : 设 计 与 实 施 》。 因 为 在 学 校 上 机 需 要 长<br />

时 间 排 队 等 待 , 于 是 “ 一 气 之 下 , 我 干 脆 自 己 掏 钱 买 了 一 台 PC 机 ”,Linus 回 忆 说 。<br />

Linus 在 自 己 的 PC 机 上 , 利 用 Tanenbaum 教 授 自 行 设 计 的 微 型 Unix 操 作 系 统 Minix<br />

为 开 发 平 台 , 开 发 了 属 于 他 自 己 的 第 一 个 程 序 。“ 这 个 程 序 包 括 两 个 进 程 , 都 是 向 屏<br />

幕 上 写 字 母 , 然 后 用 一 个 定 时 器 来 切 换 这 两 个 进 程 。” 他 回 忆 说 ,“ 一 个 进 程 写 A, 另<br />

一 个 进 程 写 B, 所 以 我 就 在 屏 幕 上 看 到 了 AAAA,BBBB, 如 此 循 环 重 复 的 输 出 结 果 。”<br />

Linus 说 刚 开 始 的 时 候 他 根 本 没 有 想 到 要 编 写 一 个 操 作 系 统 内 核 。1991 年 , 他 需 要<br />

一 个 简 单 的 终 端 仿 真 程 序 来 存 取 Usenet 新 闻 组 的 内 容 , 于 是 他 就 在 前 两 个 草 草 编 写<br />

的 进 程 的 基 础 上 又 写 了 一 个 程 序 。 当 然 , 他 把 那 些 个 A 和 B 改 成 了 别 的 东 西 。“ 一 个<br />

进 程 是 从 键 盘 上 阅 读 输 入 然 后 发 送 给 调 制 解 调 器 , 另 一 个 进 程 则 是 从 调 制 解 调 器 上<br />

阅 读 发 送 来 的 信 息 然 后 送 到 屏 幕 上 供 人 阅 读 。” 然 而 要 实 现 这 两 个 新 的 进 程 , 他 显 然<br />

还 需 要 一 些 别 的 东 西 , 这 就 是 驱 动 程 序 。 他 必 须 为 不 同 的 显 示 器 、 键 盘 和 调 制 解 调<br />

器 编 写 驱 动 程 序 。1991 年 的 夏 季 , 也 就 是 在 他 购 买 了 第 一 台 PC 之 后 6 个 月 ,Linus<br />

觉 得 他 还 需 要 从 网 上 下 载 某 些 文 件 , 为 此 他 必 须 读 写 某 个 磁 盘 。“ 于 是 我 又 不 得 不 写<br />

一 个 磁 盘 驱 动 程 序 , 然 后 是 一 个 文 件 系 统 。 而 一 旦 当 你 有 了 任 务 切 换 器 、 文 件 系 统<br />

和 设 备 驱 动 程 序 之 后 , 你 当 然 就 拥 有 了 一 个 Unix,” 或 者 至 少 是 它 的 一 个 内 核 。Linux<br />

就 以 这 样 一 种 极 其 古 怪 但 也 极 其 自 然 的 方 式 问 世 了 。<br />

这 个 羽 毛 未 丰 的 操 作 系 统 很 有 可 能 马 上 夭 折 , 所 以 Linus 并 没 有 在 Minix 新 闻 组 中<br />

公 布 。 他 只 是 在 赫 尔 辛 基 技 术 大 学 的 一 台 FTP 服 务 器 上 发 了 一 则 消 息 , 说 用 户 可 以<br />

下 载 Linux 的 公 开 版 本 。“Linux 是 我 的 笔 名 , 但 是 我 要 是 真 用 它 来 命 名 的 话 , 我 担 心<br />

有 人 会 认 为 我 狂 妄 自 大 , 而 且 不 会 去 认 真 地 对 待 它 。 所 以 我 当 时 选 了 一 个 很 糟 糕 的<br />

名 字 :Freax,” 这 个 字 是 由 free( 自 由 )+freak( 怪 胎 )+x 构 成 的 ,“ 我 知 道 这 听 起<br />

来 令 人 恶 心 。” 幸 好 , 管 理 这 台 FTP 服 务 器 的 Ari Lemmke 根 本 不 喜 欢 Freax 这 个 名 字 ,<br />

他 最 后 还 是 选 择 了 Linux。 到 1992 年 1 月 止 , 全 世 界 大 约 只 有 100 个 左 右 的 人 在 使<br />

用 Linux, 但 正 是 他 们 为 Linux 做 关 键 性 的 在 线 洗 礼 。 他 们 所 提 供 的 所 有 初 期 的 上 载<br />

代 码 和 评 论 后 来 证 明 对 Linux 的 发 展 至 关 重 要 , 尤 为 重 要 的 是 那 些 网 上 黑 客 们 为 了 解<br />

决 Linux 的 错 误 而 编 写 的 许 多 插 入 代 码 段 。<br />

Linus 就 是 如 此 这 般 脚 步 蹒 跚 跌 跌 撞 撞 地 创 建 了 一 个 网 上 的 “ 卡 勒 利 亚 王 国 ”, 并 开<br />

始 为 他 的 “ 卡 勒 瓦 拉 ” 收 集 并 组 织 各 种 有 用 的 素 材 。 网 上 的 任 何 人 在 任 何 地 方 都 可 以<br />

得 到 Linux 的 基 本 文 件 , 并 可 通 过 电 子 邮 件 发 表 评 论 或 者 提 供 修 正 代 码 ,Usenet 还<br />

专 门 为 它 开 辟 了 一 个 论 坛 。 于 是 ,Linux 就 从 最 开 始 的 一 个 人 思 想 的 产 品 变 成 了 一 副<br />

巨 大 的 织 锦 , 变 成 了 由 无 数 志 同 道 合 的 黑 客 们 发 起 的 一 场 运 动 。<br />

Linus 向 来 不 求 名 利 ,Linux 的 成 功 也 没 有 为 他 带 来 财 富 , 但 他 的 成 就 已 使 其 在 电 脑<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


科 技 发 展 史 上 占 有 一 席 之 地 。Linus 的 才 能 吸 引 了 二 十 多 名 精 英 跟 随 左 右 , 并 心 甘 情<br />

愿 地 离 开 他 们 的 家 和 原 来 的 办 公 室 , 随 Linus 来 到 硅 谷 , 去 开 创 他 们 眼 里 真 正 的 事 业 。<br />

而 Linux 的 转 售 商 , 像 Red Hat、Solaris、Caldera 以 及 Workstation Solution 等 , 在 得<br />

知 李 纳 斯 要 离 开 赫 尔 辛 基 去 硅 谷 发 展 时 , 无 不 对 Linux 系 统 的 前 景 翘 首 以 盼 。 就 像 当<br />

年 Marc Andreesen 离 开 学 校 开 发 出 Internet 免 费 浏 览 器 软 件 ( 即 今 天 的 NETSCAPE),<br />

又 或 像 杨 致 远 和 David Filo 创 办 雅 虎 一 样 ,Linus 离 开 象 牙 塔 后 也 定 会 有 所 建 树 。<br />

Linux 虽 有 不 少 优 势 , 但 并 非 所 向 披 靡 。 对 长 期 依 赖 微 软 操 作 系 统 的 人 来 说 ,Linux<br />

的 使 用 概 念 仍 很 陌 生 ; 企 业 用 户 也 不 可 能 一 夜 间 抛 弃 Windows。 虽 然 电 脑 大 厂 纷 纷<br />

表 态 支 持 Linux, 但 现 有 支 援 Linux 的 应 用 软 件 和 工 具 仍 比 不 上 微 软 完 备 。 但 对 于 不<br />

远 的 将 来 ,Linus 会 竭 尽 一 切 , 使 Linux 在 激 烈 竞 争 中 继 续 领 先 。Linux 受 欢 迎 的 现 状<br />

已 经 超 出 了 他 当 初 的 想 象 , 而 且 还 将 继 续 被 关 注 、 被 传 播 、 被 进 行 下 去 。<br />

与 这 些 努 力 相 比 ,BSD 方 面 的 研 究 人 员 的 行 动 则 比 较 迟 缓 , 一 个 原 因 是 Unix 技 术<br />

上 已 经 相 当 成 熟 , 计 算 机 系 统 研 究 组 的 大 部 分 成 员 已 经 把 注 意 力 转 向 了 其 他 研 究 项<br />

目 , 另 外 AT&T 与 BSD 的 法 律 纷 争 也 使 得 BSD 发 展 受 到 了 阻 碍 。 但 是 还 是 有 两 个 将<br />

BSD 移 植 到 80386 平 台 的 开 发 工 作 同 时 进 行 , 一 个 是 BSD/386 小 组 , 他 们 的 研 究 成<br />

果 是 商 业 版 本 的 BSD/OS, 属 于 商 业 公 司 BSDI。 另 一 个 就 是 386BSD 计 划 , 后 来 发 展<br />

成 为 FreeBSD。<br />

CSRG 研 究 人 员 的 条 件 比 较 优 越 , 拥 有 足 够 的 Unix 系 统 , 因 此 对 个 人 计 算 机 平 台 上<br />

的 Unix 系 统 没 有 太 急 迫 的 要 求 。386BSD 计 划 由 Bill Jolitz 等 研 究 人 员 发 起 , 将<br />

4.3BSD Net/2 移 植 到 80386 平 台 上 , 并 使 用 386BSD 的 名 称 发 布 。 但 是 移 植 工 作 是 一<br />

个 复 杂 的 任 务 , 直 到 386BSD 0.5 版 本 , 系 统 中 仍 然 存 在 相 当 多 的 问 题 没 有 解 决 。 于<br />

是 在 1993 年 , 另 一 些 研 究 者 决 定 加 入 这 个 计 划 , 打 算 和 Bill Jolitz 一 起 修 正 系 统 中 存<br />

在 的 问 题 。 但 是 这 时 计 划 的 组 织 者 Bill Jolitz 突 然 决 定 退 出 , 使 得 386BSD 计 划 面 临 停<br />

止 的 危 险 。Bill Jolitz 作 为 计 划 的 发 起 者 和 负 责 者 并 没 有 对 这 个 计 划 以 后 该 如 何 发 展<br />

给 出 具 体 意 见 , 因 此 386BSD 计 划 是 到 此 为 止 还 是 继 续 发 展 , 就 取 决 于 其 他 开 发 者 的<br />

决 定 。 幸 运 的 是 , 该 项 目 的 另 三 个 参 与 者 Nate Williams, Rod Grimes 和<br />

Jordan K. Hubbard 决 定 继 续 这 项 非 常 有 意 义 的 工 作 , 他 们 采 用 由 David Green man 创<br />

造 的 名 字 FreeBSD 作 为 系 统 的 新 名 字 , 从 此 有 了 一 种 任 何 人 都 可 以 自 由 使 用 的 Unix<br />

操 作 系 统 ── FreeBSD。<br />

到 目 前 ,InterNet 上 常 见 的 UNIX 系 统 有 以 下 几 种 : 各 商 业 公 司 的 基 于 AT&T 的 UNIX<br />

系 统 ( 非 intel 平 台 据 多 ), 主 要 是 Sun 的 Solaris, 基 于 BSD UNIX 的 BSDi 和 FreeBSD ,<br />

以 及 Linux, 其 中 FreeBSD 和 Linux 是 可 在 i386 上 运 行 的 免 费 的 操 作 系 统 , 我 们 能 够<br />

使 用 的 也 基 本 上 只 有 这 两 个 UNIX 系 统 , 但 在 这 里 , 我 们 还 要 分 清 楚 linux 和 FreeBSD<br />

的 区 别 , 主 要 有 两 个 :1.FreeBSD 是 由 最 初 的 BSDUNIX 一 路 发 展 下 来 的 正 统 的 UNIX<br />

系 统 , 而 linux 是 一 个 遵 循 POSIX 标 准 所 有 系 统 代 码 全 部 重 新 编 写 了 的 操 作 系 统 。<br />

2.FreeBSD 是 完 整 的 一 个 操 作 系 统 , 而 linux 只 是 一 个 内 核 , 加 上 各 种 GNU 软 件 构 成<br />

的 操 作 系 统 , 所 以 , 才 会 有 很 多 的 linux 系 统 , 如 RedHat Linux ,Tubro Linux, 蓝 点<br />

linux 等 ,redhat linux 就 是 redhat 公 司 对 linux 内 核 作 必 要 的 修 改 , 加 上 redhat 挑 选 的<br />

GNU 程 序 构 成 ,tubro 亦 然 , 如 果 你 愿 意 , 你 也 可 以 这 个 做 , 搞 个 XXlinux 出 来 , 只<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


要 你 有 这 个 能 力 :)。<br />

回 顾 Unix 的 发 展 , 可 以 注 意 到 Unix 与 其 他 商 业 操 作 系 统 的 不 同 之 处 主 要 在 于 其 开<br />

放 性 。 在 系 统 开 始 设 计 时 就 考 虑 了 各 种 不 同 使 用 者 的 需 要 , 因 而 Unix 被 设 计 为 具 备<br />

很 大 可 扩 展 性 的 系 统 。 由 于 它 的 源 码 被 分 发 给 大 学 , 从 而 在 教 育 界 和 学 术 界 影 响 很<br />

大 , 进 而 影 响 到 商 业 领 域 中 。 大 学 生 和 研 究 者 为 了 科 研 目 的 或 个 人 兴 趣 在 Unix 上 进<br />

行 各 种 开 发 , 并 且 不 计 较 金 钱 利 益 , 将 这 些 源 码 公 开 , 互 相 共 享 , 这 些 行 为 极 大 丰<br />

富 了 Unix 本 身 。 很 多 计 算 机 领 域 的 科 学 家 和 技 术 人 员 遵 循 这 些 方 式 , 开 发 了 数 以 千<br />

计 的 自 由 软 件 , 包 括 FreeBSD 在 内 。 正 因 为 如 此 , 当 今 的 Internet 才 如 此 丰 富 多 采 ,<br />

与 其 他 商 业 网 络 不 同 , 才 能 成 为 真 正 的 全 球 网 络 。 开 放 是 Unix 的 灵 魂 , 也 是 Internet<br />

的 灵 魂 。<br />

UNIX 的 历 史 搞 笑 版<br />

Unix 是 个 倒 霉 蛋 , 生 来 就 穷 困 潦 倒 。Unix 的 父 亲 —— 电 话 公 司 —— 每 年 只 能 给 他 一 卷 电 纸<br />

, 所 以 Unix 既 没 有 得 体 的 文 档 , 也 没 有 任 何 源 代 码 的 注 释 。 一 年 又 一 年 过 去 了 , 贝 尔 爸 一<br />

直 在 为 增 加 家 庭 收 入 、 养 活 自 己 的 孩 子 而 苦 苦 挣 扎 。 即 便 如 此 ,Unix 上 学 时 , 还 是 只 能 拥<br />

有 两 个 字 母 或 三 个 字 母 组 成 的 指 令 名 , 因 为 电 话 公 司 再 也 供 不 起 更 多 的 字 母 了 。 在 学 校 里 ,<br />

其 他 拥 有 完 整 指 令 名 的 操 作 系 统 都 百 般 嘲 弄 可 怜 的 小 Unix, 笑 他 没 有 任 务 管 理 和 终 端 管 理<br />

功 能 , 笑 他 只 能 用 进 程 间 通 信 和 锁 方 式 来 操 作 文 件 系 统 。 于 是 , 在 贫 穷 的 重 压 下 , 电 话 公<br />

司 开 始 酗 酒 。 每 个 周 末 , 他 喝 得 酩 酊 大 醉 之 后 , 就 毒 打 可 怜 的 小 Unix, 揍 他 的 脸 和 脖 子 。<br />

终 于 ,Unix 离 家 出 走 了 。<br />

不 久 ,Unix 在 伯 克 利 的 大 街 上 住 了 下 来 。 在 那 里 ,Unix 和 一 群 坏 孩 子 呆 在 一 起 。 他<br />

的 生 活 变 得 堕 落 而 放 荡 , 毒 品 成 了 家 常 便 饭 。 为 了 能 生 存 下 去 , 他 把 他 的 源 代 码 许 可 协 议<br />

廉 价 出 售 给 大 专 院 校 做 医 疗 实 验 。Unix 的 生 活 不 断 被 大 学 里 一 群 群 不 知 名 的 男 女 黑 客 们 肆<br />

意 篡 改 , 而 且 经 常 是 几 个 人 同 时 下 手 。Unix 跌 入 了 罪 恶 和 耻 辱 的 深 渊 。 可 怜 的 小 Unix 患<br />

上 了 精 神 病 。 他 整 日 蜷 缩 在 他 自 己 的 梦 境 里 , 只 有 在 那 里 他 才 感 觉 得 到 安 全 。 他 吸 食 吗 啡 ,<br />

梦 想 着 能 成 为 一 种 真 正 的 操 作 系 统 。 他 吸 食 迷 幻 药 , 梦 想 着 自 己 是 加 了 黑 霉 的 牦 牛 肉 。 他<br />

沉 溺 于 他 的 梦 境 , 对 迷 幻 药 的 依 赖 越 来 越 大 。 他 可 以 在 整 个 周 末 , 一 边 喝 掺 了 迷 幻 药 的 鸡<br />

尾 酒 , 一 边 读 亨 特 · 汤 普 逊 的 作 品 , 同 时 飞 快 地 写 下 些 疯 狂 的 诗 篇 。 除 了 他 自 己<br />

以 外 , 没 有 人 能 懂 得 这 些 诗 里 的 深 意 :<br />

$sed $mf.new -e '1,/^# AUTOMATICALLY/!d'<br />

make shlist || ($echo "Searching for .SH files..."; \<br />

$echo *.SH | $tr ' ' '\012' | $egrep -v '\*' >.shlist)<br />

if $test -s .deptmp; then<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


for file in `cat .shlist`; do<br />

$echo `$expr X$file : 'X\(.*\).SH'`: $file config.sh \; \<br />

/bin/sh $file >> .deptmp<br />

done<br />

$echo "Updating $mf..."<br />

$echo "# If this runs make out of memory, delete /usr/include lines." \<br />

>> $mf.new<br />

$sed 's|^\(.*\.o:\) *\(.*/.*\.c\) *$|\1 \2; '"$defrule \2|" .deptmp \<br />

>>$mf.new<br />

else<br />

make hlist || ($echo "Searching for .h files..."; \<br />

$echo *.h | $tr ' ' '\012' | $egrep -v '\*' >.hlist)<br />

$echo "You don't seem to have a proper C preprocessor. Using grep instead."<br />

$egrep '^#include ' `cat .clist` `cat .hlist` >.deptmp<br />

$echo "Updating $mf..."<br />

> $mf.new<br />

.hsed<br />

> $mf.new<br />

> $mf.new<br />

> $mf.new<br />

> $mf.new<br />

for file in `$cat .shlist`; do<br />

$echo `$expr X$file : 'X\(.*\).SH'`: $file config.sh \; \<br />

/bin/sh $file >> $mf.new<br />

done<br />

fi<br />

后 来 ,Unix 开 始 在 电 报 大 街 上 走 来 走 去 , 一 遍 又 一 遍 地 对 自 己 说 :“ 灾 难 : 释 放 自 由 的 i 节 点 。”<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


有 时 , 他 会 拦 着 陌 生 人 , 像 吃 了 安 非 他 明 的 吉 娃 娃 狗 一 样 , 尖 叫 着 对 他 们 大 声 喊 :“ 总 线 错<br />

误 ( 内 核 映 像 已 保 存 )!” 或 者 :“ 未 知 冲 突 : 请 手 工 运 行 fsck!” 人 们 都 对 他 视 而 不 见 , 带<br />

着 孩 子 的 母 亲 则 远 远 地 绕 道 而 过 。<br />

一 天 晚 上 ,Unix 看 电 视 时 , 一 个 镜 头 改 变 了 他 的 一 生 。Unix 在 电 视 里 看 到 职 业 摔 跤<br />

比 赛 的 画 面 , 他 知 道 他 已 经 找 到 了 自 己 真 正 的 目 标 。 他 开 始 服 用 大 量 的 皮 质 激 素 , 把 自 己<br />

变 得 强 大 起 来 , 他 要 变 得 比 小 时 候 那 些 曾 经 打 倒 过 他 的 程 序 都 更 强 大 。 他 每 天 早 饭 都 要 吃<br />

三 打 煎 饼 和 四 打 新 功 能 。 由 于 类 固 醇 的 副 作 用 , 他 的 内 部 元 件 长 得 越 来 越 大 , 以 至 于 他 的<br />

身 体 都 容 纳 不 下 了 。 最 早 长 大 的 元 件 是 内 核 , 然 后 C 语 言 类 库 , 再 就 是 一 大 堆 幽 灵 程 序 。<br />

很 快 , 他 的 一 个 视 窗 系 统 开 始 为 每 个 打 开 的 窗 口 请 求 2 兆 字 节 的 交 换 空 间 了 。Unix 变 得 强<br />

壮 而 丑 陋 , 但 他 仍 然 在 继 续 服 药 , 他 的 内 部 元 件 仍 然 在 膨 胀 。 这 些 膨 胀 中 的 元 件 从 他 的 耳<br />

朵 和 鼻 孔 生 长 出 来 , 强 有 力 地 挤 压 着 Unix 的 大 脑 , 直 到 把 大 脑 压 成 液 体 。 现 在 ,Unix 拥 有<br />

了 巨 人 安 德 烈 的 肌 肉 、 象 人 的 身 体 、 以 及 杰 克 · 尼 科 尔 森 的 古 怪 个 性 。 遭 破 坏 最 严 重 的 是<br />

Unix 的 神 智 。 因 为 没 法 消 化 他 吞 下 的 大 堆 大 堆 相 互 冲 突 的 新 功 能 ,Unix 的 人 格 开 始 分 裂 成<br />

为 千 百 种 互 不 兼 容 的 操 作 系 统 。 人 们 必 须 小 心 地 问 :“ 早 上 好 ,Unix, 今 天 你 是 哪 个 Unix?”<br />

他 会 回 答 “ 比 斯 蒂 (BSD)”, 或 者 “Domain”, 或 者 “ 我 是 System III, 但 我 明 天 就 会 变 成 System<br />

V”。 精 神 病 专 家 们 年 复 一 年 地 对 Unix 进 行 治 疗 , 想 把 他 的 两 种 最 主 要 的 人 格 合 并 到 一 起 。<br />

这 两 种 人 格 分 别 是 : 来 自 伯 克 利 市 中 心 的 “ 比 斯 蒂 小 孩 ” 和 一 心 想 变 成 女 人 的 南 方 异 性 癖<br />

患 者 “ 小 贝 尔 ”。 每 一 次 治 疗 之 后 , 这 两 种 主 要 人 格 都 会 再 次 变 异 , 就 像 得 了 精 神 病 的 逆 转<br />

录 酶 病 毒 一 样 , 而 它 们 的 混 合 体 则 往 往 演 变 成 缺 乏 持 久 的 生 命 力 , 与 父 辈 不 兼 容 的 一 大 堆<br />

无 用 的 原 生 质 。 结 果 , 由 于 体 内 的 癌 变 ,Unix 控 制 不 了 自 身 的 平 衡 , 一 跤 跌 进 了 一 大 桶 含<br />

有 放 射 性 毒 素 的 袋<br />

熊 尿 里 。 他 从 尿 桶 里 爬 出 来 , 皮 肤 发 白 , 头 发 发 绿 , 浑 身 散 发 着 死 人 味 儿 。 他 咧 着 嘴 恐 怖 地<br />

笑 着 , 打 算 去 征 服 全 世 界 。<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


第 三 章 磁 盘 存 储 介 质 和 文 件 系 统<br />

第 一 节 磁 盘 存 储 介 质<br />

磁 盘 还 是 现 在 存 储 数 据 的 主 要 介 质 , 我 们 平 时 接 触 的 很 多 高 端 的 存 储 , 几 百 上 千 万 的 高 速<br />

存 储 设 备 , 最 后 数 据 都 是 存 放 在 磁 盘 存 储 介 质 上 面 的 。<br />

我 们 平 时 接 触 最 的 存 储 介 质 就 是 磁 盘 , 对 于 磁 盘 的 结 构 的 认 识 有 利 于 我 们 去 理 解 整 个 存 储 架 构 。<br />

硬 盘 内 部 结 构 详 解<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


让 我 们 来 看 看 磁 盘 存 储 发 展 的 历 史 :<br />

在 开 发 最 初 的 个 人 计 算 机 时 , 人 们 用 180KB 的 软 磁 盘 , 不 久 便 采 用 360KB<br />

的 双 面 磁 盘 。 为 了 组 织 这 些 存 储 设 备 上 数 据 , 最 初 的 DOS 系 统 开 发 者 设 计 一 个 表<br />

来 指 示 哪 个 扇 区 属 于 哪 些 文 件 , 以 及 哪 些 扇 区 空 闲 , 这 样 操 作 系 统 可 以 最 大 限 度<br />

地 利 用 这 些 磁 盘 空 间 , 使 文 件 可 以 存 储 在 不 连 续 的 扇 区 上 。 文 件 数 据 可 以 分 散 有<br />

组 织 地 存 储 在 磁 盘 的 不 同 扇 区 , 这 称 为 文 件 分 割 。<br />

由 于 在 360KB 磁 盘 上 有 720 个 扇 区 , 因 此 , 表 要 做 得 足 够 大 以 能 标 识 每 个<br />

扇 区 , 并 预 留 一 些 空 间 以 备 未 来 采 用 更 大 存 储 空 间 的 磁 盘 。 表 中 的 每 个 记 录 只 用<br />

一 个 字 节 , 这 样 只 能 有 256 个 可 能 值 , 不 能 满 足 这 么 多 扇 区 的 需 要 。 假 如 采 用 两<br />

个 字 节 则 最 多 可 以 有 65,536 个 记 录 , 但 这 样 将 浪 费 磁 盘 空 间 。 因 此 , 综 合 这 两<br />

种 情 况 , 决 定 采 用 12 位 作 为 表 记 录 的 长 度 来 跟 踪 磁 盘 上 扇 区 的 利 用 情 况 。 采 用<br />

12 位 长 度 可 以 有 4,096 个 可 能 值 , 假 如 每 个 表 记 录 对 应 一 个 512 字 节 扇 区 , 那<br />

么 这 个 FAT 表 可 以 处 理 高 达 2MB 存 储 容 量 的 存 储 设 备 。 但 要 从 这 么 长 的 表 中 得<br />

到 需 要 的 信 息 将 花 太 长 时 间 , 因 此 , 人 们 引 入 了 簇 (cluster) 的 概 念 。 这 使 设 备<br />

的 最 小 存 储 单 元 从 单 个 扇 区 增 加 到 固 定 数 量 扇 区 , 这 些 固 定 数 量 扇 区 称 为 簇 。 对<br />

于 180KB 磁 盘 , 簇 的 大 小 为 两 个 扇 区 (1,024 字 节 )。 因 此 , 假 如 要 保 存 一 个 500<br />

字 节 的 文 件 , 将 占 用 磁 盘 上 1,024 个 字 节 。 这 看 上 去 会 浪 费 , 但 实 际 上 簇 的 概 念<br />

在 存 储 大 文 件 时 效 果 很 好 , 而 实 际 上 多 数 系 统 和 用 户 文 件 都 是 较 大 的 。 表 1 列 出<br />

FAT 所 能 代 表 簇 的 最 大 数 字 。<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


簇 的 概 念<br />

磁 盘 上 最 小 可 寻 址 存 储 单 元 称 为 扇 区 , 通 常 每 个 扇 区 为 512 个 字 节 ( 或 字<br />

符 )。 由 于 多 数 文 件 比 扇 区 大 得 多 , 因 此 假 如 对 一 个 文 件 分 配 最 小 的 存 储 空 间 ,<br />

将 使 存 储 器 能 存 储 更 多 数 据 , 这 个 最 小 存 储 空 间 即 称 为 簇 。 根 据 存 储 设 备 ( 磁 盘 、<br />

闪 卡 和 硬 盘 ) 的 容 量 , 簇 的 大 小 可 以 不 同 以 使 存 储 空 间 得 到 最 有 效 的 应 用 。 在 早<br />

期 的 360KB 磁 盘 上 , 簇 大 小 为 2 个 扇 区 (1,024 字 节 ); 第 一 批 的 10MB 硬 盘 的 簇<br />

大 小 增 加 到 8 个 扇 区 (4,096 字 节 ); 现 在 的 小 型 闪 存 设 备 上 的 典 型 簇 大 小 是 8KB<br />

或 16KB。2GB 以 上 的 硬 盘 驱 动 器 有 32KB 的 簇 。<br />

为 什 么 采 用 簇 呢 ? 通 常 , 存 储 设 备 上 的 空 间 分 配 是 随 机 的 。 在 一 个 新 存 储<br />

设 备 上 , 文 件 连 续 存 储 , 并 知 道 开 始 和 结 束 扇 区 和 长 度 , 在 读 取 时 可 以 根 据 这 些<br />

信 息 重 新 得 到 所 存 储 的 文 件 。 但 是 , 过 一 段 时 间 后 , 有 些 文 件 将 会 被 擦 掉 , 同 时<br />

可 能 有 些 文 件 增 大 , 这 时 不 能 保 证 同 一 个 文 件 存 储 在 连 续 的 一 系 列 扇 区 里 。 因 此 ,<br />

需 要 一 种 方 法 来 辨 别 哪 个 扇 区 被 分 配 到 某 些 文 件 , 以 及 还 有 哪 些 扇 区 可 用 。 这 时<br />

可 以 采 用 一 种 表 结 构 来 实 现 这 种 功 能 , 使 每 个 扇 区 对 应 一 个 表 记 录 。 然 而 , 由 于<br />

大 多 数 文 件 存 储 在 多 个 扇 区 , 一 个 记 录 对 应 一 个 扇 区 的 作 法 将 造 成 一 些 浪 费 。 因<br />

此 , 采 用 每 个 录 代 表 一 个 固 定 数 量 扇 区 将 更 有 意 义 , 这 个 固 定 扇 区 被 称 为 簇 。 给<br />

文 件 分 配 扇 区 假 如 给 一 个 文 件 ( 簇 ) 分 配 的 最 小 存 储 空 间 大 小 取 决 于 保 存 该 文 件<br />

的 介 质 类 型 , 我 们 必 须 有 一 种 方 法 来 标 明 某 个 簇<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


第 二 节 什 么 是 逻 辑 卷<br />

LVM<br />

逻 辑 卷 管 理 器 (Logical Volume Manager), 顾 名 思 义 , 它 就 是 用 于 管 理 逻 辑 卷 的 ,LVM<br />

在 Linux 内 核 得 到 支 持 。<br />

在 传 统 的 存 储 模 型 中 , 文 件 系 统 是 直 接 构 建 于 物 理 分 区 之 上 的 , 物 理 分 区 的 大 小 就 决 定<br />

了 其 上 文 件 系 统 的 存 储 容 量 , 因 此 对 文 件 系 统 的 存 储 容 量 的 调 整 就 变 得 比 较 繁 琐 。<br />

而 LVM 设 计 的 主 要 目 标 就 是 实 现 文 件 系 统 存 储 容 量 的 可 扩 展 性 , 使 对 容 量 的 调 整 更 为<br />

简 易 。<br />

名 词 解 释<br />

在 介 绍 LVM 的 工 作 原 理 之 前 需 要 先 介 绍 几 个 名 词 :<br />

• PP, 物 理 分 区 (Physical Partition), 如 硬 盘 的 分 区 , 或 RAID 分 区 。<br />

• PV, 物 理 卷 (Physical Volume), 是 PP 的 LVM 抽 象 , 它 维 护 了 PP 的 结<br />

构 信 息 , 是 组 成 VG 的 基 本 逻 辑 单 元 , 一 般 一 个 PV 对 应 一 个 PP。<br />

• PE, 物 理 扩 展 单 元 (Physical Extends), 每 个 PV 都 会 以 PE 为 基 本 单 元 划<br />

分 。<br />

• VG, 卷 组 (Volume Group), 即 LVM 卷 组 , 它 可 由 一 个 或 数 个 PV 组 成 ,<br />

相 当 于 LVM 的 存 储 池 。<br />

• LE, 逻 辑 扩 展 单 元 (Logical Extends), 组 成 LV 的 基 本 单 元 , 一 个 LE 对 应<br />

一 个 PE。<br />

• LV, 逻 辑 卷 (Logical Volume), 它 建 立 在 VG 之 上 , 文 件 系 统 之 下 , 由 若 干<br />

个 LE 组 成 。<br />

工 作 原 理<br />

LVM 的 架 构 图 如 下 :<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


LVM 在 每 个 物 理 卷 头 部 都 维 护 了 一 个 metadata, 每 个 metadata 中 都 包 含 了 整 个<br />

VG 的 信 息 , 包 括 每 个 VG 的 布 局 配 置 、PV 的 编 号 、LV 的 编 号 , 以 及 每 个 PE 到 LE<br />

的 映 射 关 系 。 同 一 个 VG 中 的 每 个 PV 头 部 的 信 息 是 相 同 的 , 这 样 有 利 于 故 障 时 进 行<br />

数 据 恢 复 。<br />

LVM 对 上 层 文 件 系 统 提 供 LV 层 , 隐 藏 了 操 作 细 节 。 对 文 件 系 统 而 言 , 对 LV 的 操 作<br />

与 原 先 对 Partition 的 操 作 没 有 差 别 。 当 对 LV 进 行 写 入 操 作 时 ,LVM 定 位 相 应 的 LE,<br />

通 过 PV 头 部 的 映 射 表 , 将 数 据 写 入 到 相 应 的 PE 上 。<br />

LVM 实 现 的 关 键 在 于 在 PE 和 LE 间 建 立 映 射 关 系 , 不 同 的 映 射 规 则 决 定 了 不 同 的<br />

LVM 存 储 模 型 。LVM 支 持 多 个 PV 的 Stripe 和 Mirror, 这 点 和 软 Raid 的 实 现 十 分<br />

相 似 。<br />

是 否 使 用 LVM?<br />

在 决 定 是 否 使 用 LVM 前 请 先 了 解 下 LVM 的 优 缺 点 。<br />

使 用 LVM 的 优 势 :<br />

• 文 件 系 统 可 以 跨 多 个 磁 盘 , 因 此 大 小 不 会 受 物 理 磁 盘 的 限 制 。<br />

• 可 以 在 系 统 运 行 状 态 下 动 态 地 扩 展 文 件 系 统 大 小 。<br />

• 可 以 增 加 新 磁 盘 到 LVM 的 存 储 池 中 。<br />

• 可 以 以 镜 像 的 方 式 冗 余 重 要 数 据 到 多 个 物 理 磁 盘 上 。<br />

• 可 以 很 方 便 地 导 出 整 个 卷 组 , 并 导 入 到 另 外 一 台 机 器 上 。<br />

使 用 LVM 的 限 制 :<br />

• 在 从 卷 组 中 移 除 一 个 磁 盘 时 必 须 使 用 reducevg, 否 则 会 出 问 题 。<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


• 当 卷 组 中 的 一 个 磁 盘 损 坏 时 , 整 个 卷 组 都 会 受 影 响 。<br />

• 不 能 减 小 文 件 系 统 大 小 ( 受 文 件 系 统 类 型 限 制 )。<br />

• 因 为 加 入 了 额 外 的 操 作 , 存 储 性 能 会 受 影 响 ( 使 用 Stripe 的 情 况 另 当 别 论 )。<br />

使 用 LVM 将 获 得 更 好 的 可 扩 展 性 和 可 操 作 性 , 但 却 损 失 了 可 靠 性 和 存 储 性 能 , 总 的 说<br />

来 就 是 在 这 两 者 间 选 择 。<br />

使 用 要 点<br />

• 按 需 分 配 文 件 系 统 大 小 , 不 要 一 次 性 分 配 太 大 的 空 间 给 文 件 系 统 , 剩 余 的 空 间<br />

可 以 放 在 存 储 池 中 , 在 需 要 时 再 扩 充 到 文 件 系 统 中 。<br />

• 把 不 同 的 数 据 放 在 不 同 的 卷 组 中 , 这 样 在 做 系 统 升 级 或 数 据 迁 移 操 作 时 会 比 较<br />

方 便 。<br />

操 作 示 例<br />

使 用 LVM 的 基 本 步 骤 :<br />

1. 在 物 理 分 区 (PP) 上 创 建 物 理 卷 (PV)<br />

如 : pvcreate /dev/sda1<br />

2. 在 创 建 卷 组 (VG)<br />

如 : vgcreate vg /dev/sda1<br />

3. 从 VG 中 分 配 空 间 , 创 建 逻 辑 卷 (LV)<br />

如 : lvcreate -L10G -nhome vg<br />

4. 在 LV 上 建 立 文 件 系 统<br />

如 : mke2fs -j /dev/vg/home<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


第 三 节 UNIX 文 件 系 统 基 础 UFS<br />

UFS 文 件 系 统 的 柱 面 组 结 构<br />

创 建 UFS 文 件 系 统 时 , 磁 盘 片 被 分 成 若 干 个 柱 面 组 。 柱 面 组 由 一 个 或 多 个 连 续<br />

的 磁 盘 柱 面 组 成 。 柱 面 组 又 进 一 步 分 成 若 干 个 可 寻 址 的 块 , 以 控 制 和 组 织 柱 面 组<br />

中 文 件 的 结 构 。 在 文 件 系 统 中 , 每 种 类 型 的 块 都 具 有 特 定 的 功 能 。UFS 文 件 系 统<br />

具 有 以 下 四 种 类 型 的 块 。<br />

块 类 型<br />

引 导 块<br />

超 级 块<br />

Inode<br />

存 储 块 或 数 据 块<br />

所 存 储 信 息 的 类 型<br />

在 引 导 系 统 时 使 用 的 信 息<br />

有 关 文 件 系 统 的 详 细 信 息<br />

有 关 文 件 的 所 有 信 息<br />

每 个 文 件 的 数 据<br />

以 下 各 节 提 供 有 关 这 些 块 的 组 织 和 功 能 的 其 他 信 息 。<br />

引 导 块<br />

引 导 块 存 储 在 引 导 系 统 时 使 用 的 对 象 。 如 果 文 件 系 统 不 用 于 引 导 , 则 将 引 导 块 保<br />

留 为 空 。 引 导 块 仅 出 现 在 第 一 个 柱 面 组 ( 柱 面 组 0) 中 , 它 是 片 中 的 前 8 KB。<br />

超 级 块<br />

超 级 块 存 储 有 关 文 件 系 统 的 大 多 数 信 息 , 其 中 包 括 :<br />

文 件 系 统 的 大 小 和 状 态<br />

标 号 , 包 括 文 件 系 统 名 称 和 卷 名 称<br />

文 件 系 统 逻 辑 块 的 大 小<br />

上 次 更 新 的 日 期 和 时 间<br />

柱 面 组 的 大 小<br />

柱 面 组 中 的 数 据 块 数<br />

摘 要 数 据 块<br />

文 件 系 统 状 态<br />

最 后 一 个 挂 载 点 的 路 径 名<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


由 于 超 级 块 包 含 关 键 数 据 , 因 此 在 创 建 文 件 系 统 时 建 立 了 多 个 超 级 块 。<br />

摘 要 信 息 块 保 留 在 超 级 块 内 。 不 复 制 摘 要 信 息 块 , 而 是 将 其 与 主 超 级 块 组 合 在 一<br />

起 ( 通 常 在 柱 面 组 0 中 )。 摘 要 块 记 录 在 使 用 文 件 系 统 时 发 生 的 更 改 。 此 外 ,<br />

摘 要 块 列 出 文 件 系 统 中 的 inode、 目 录 、 段 和 存 储 块 的 数 目 。<br />

Inode<br />

inode 包 含 有 关 文 件 的 所 有 信 息 , 但 文 件 的 名 称 ( 保 存 在 目 录 中 ) 除 外 。 一 个<br />

inode 为 128 字 节 。inode 信 息 保 存 在 柱 面 信 息 块 中 , 它 包 含 以 下 内 容 :<br />

文 件 类 型 :<br />

常 规<br />

目 录<br />

块 特 殊<br />

字 符 特 殊<br />

FIFO, 也 称 为 命 名 管 道<br />

符 号 链 接<br />

套 接 字<br />

其 他 inode- 属 性 目 录 和 阴 影 ( 用 于 ACL)<br />

文 件 的 模 式 ( 读 - 写 - 执 行 权 限 集 )<br />

指 向 文 件 的 硬 链 接 数<br />

文 件 属 主 的 用 户 ID<br />

文 件 所 属 的 组 ID<br />

文 件 中 的 字 节 数<br />

包 含 15 个 磁 盘 块 地 址 的 数 组<br />

上 次 访 问 文 件 的 日 期 和 时 间<br />

上 次 修 改 文 件 的 日 期 和 时 间<br />

更 改 inode 的 日 期 和 时 间<br />

包 含 15 个 磁 盘 块 地 址 (0 到 14) 的 数 组 指 向 存 储 文 件 内 容 的 数 据 块 。 前 12 个<br />

地 址 是 直 接 地 址 。 即 , 它 们 直 接 指 向 文 件 内 容 的 前 12 个 逻 辑 存 储 块 。 如 果 文 件<br />

大 于 12 个 逻 辑 块 , 则 第 13 个 地 址 指 向 间 接 块 , 该 块 包 含 直 接 块 地 址 而 不 是 文<br />

件 内 容 。 第 14 个 地 址 指 向 双 重 间 接 块 , 该 块 包 含 间 接 块 的 地 址 。 第 15 个 地 址<br />

用 于 三 重 间 接 地 址 。 下 图 描 述 从 inode 开 始 这 些 地 址 块 之 间 的 关 系 链 。<br />

图 23–1 UFS 文 件 系 统 的 地 址 链<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


数 据 块<br />

数 据 块 也 称 为 存 储 块 , 它 包 含 为 文 件 系 统 分 配 的 其 余 空 间 。 这 些 数 据 块 的 大 小 是<br />

在 创 建 文 件 系 统 时 确 定 的 。 缺 省 情 况 下 , 为 数 据 块 分 配 以 下 两 种 大 小 :8 KB 的<br />

逻 辑 块 大 小 和 1 KB 的 段 大 小 (fragment size)。<br />

对 于 常 规 文 件 , 数 据 块 包 含 文 件 的 内 容 。 对 于 目 录 , 数 据 块 包 含 提 供 目 录 中 文 件<br />

的 inode 编 号 和 文 件 名 的 项 。<br />

空 闲 块<br />

在 柱 面 组 图 中 , 当 前 未 用 作 inode、 间 接 地 址 块 或 存 储 块 的 块 被 标 记 为 空 闲 。 此<br />

图 还 跟 踪 段 以 防 止 段 化 降 低 磁 盘 的 性 能 。<br />

为 使 您 了 解 典 型 的 UFS 文 件 系 统 结 构 , 下 图 说 明 普 通 UFS 文 件 系 统 中 的 一 系 列<br />

柱 面 组 。<br />

典 型 的 UFS 文 件 系 统<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


自 定 义 UFS 文 件 系 统 参 数<br />

在 更 改 由 newfs 命 令 指 定 的 缺 省 文 件 系 统 参 数 之 前 , 需 要 了 解 这 些 参 数 。 本 节<br />

介 绍 这 些 参 数 :<br />

逻 辑 块 大 小<br />

段 大 小<br />

最 小 空 闲 空 间<br />

旋 转 延 迟 ( 过 时 )<br />

优 化 类 型<br />

Inode 数 ( 文 件 )<br />

有 关 自 定 义 这 些 参 数 的 命 令 选 项 的 说 明 , 请 参 见 newfs(1M) 和 mkfs_ufs(1M)。<br />

逻 辑 块 大 小<br />

逻 辑 块 大 小 是 UNIX® 内 核 用 来 读 取 或 写 入 文 件 的 块 的 大 小 。 逻 辑 块 大 小 通 常 与<br />

物 理 块 大 小 不 同 。 物 理 块 大 小 通 常 为 512 字 节 , 这 是 磁 盘 控 制 器 可 以 读 取 或 写<br />

入 的 最 小 块 的 大 小 。<br />

缺 省 情 况 下 , 逻 辑 块 大 小 设 置 为 系 统 的 页 面 大 小 。 对 于 UFS 文 件 系 统 , 缺 省 的<br />

逻 辑 块 大 小 为 8192 字 节 (8 KB)。UFS 文 件 系 统 支 持 4096 或 8192 字 节 (4 或<br />

8 KB) 的 块 大 小 。 建 议 的 逻 辑 块 大 小 为 8 KB。<br />

仅 适 用 于 SPARC –<br />

在 sun-4u TM<br />

平 台 上 , 只 能 指 定 8192 字 节 的 块 大 小 。<br />

要 选 择 最 适 合 您 系 统 的 逻 辑 块 大 小 , 应 同 时 考 虑 所 需 性 能 和 可 用 空 间 。 对 于 大 多<br />

数 UFS 系 统 ,8 KB 的 文 件 系 统 可 提 供 最 佳 的 性 能 , 在 磁 盘 性 能 与 主 内 存 和 磁 盘<br />

的 空 间 使 用 之 间 实 现 很 好 的 平 衡 。<br />

通 常 , 当 大 多 数 文 件 都 非 常 大 时 , 要 提 高 效 率 , 应 为 文 件 系 统 使 用 较 大 的 逻 辑 块<br />

大 小 。 当 大 多 数 文 件 都 非 常 小 时 , 应 为 文 件 系 统 使 用 较 小 的 逻 辑 块 大 小 。 可 以 对<br />

文 件 系 统 使 用 quot -c filesystem 命 令 , 显 示 有 关 按 块 大 小 分 布 文 件 的 完 整<br />

报 告 。<br />

但 是 , 在 大 多 数 情 况 下 , 在 创 建 文 件 系 统 时 设 置 的 页 面 大 小 很 可 能 是 最 佳 大 小 。<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


段 大 小<br />

在 创 建 或 扩 展 文 件 时 , 会 按 完 整 逻 辑 块 或 部 分 逻 辑 块 ( 称 为 段 ) 为 其 分 配 磁 盘 空<br />

间 。 当 文 件 需 要 磁 盘 空 间 时 , 首 先 分 配 完 整 块 , 然 后 为 剩 余 部 分 分 配 某 个 块 的 一<br />

个 或 多 个 段 。 对 于 小 文 件 , 首 先 分 配 段 。<br />

能 够 为 文 件 分 配 块 中 段 而 不 是 仅 分 配 完 整 块 , 就 减 少 了 块 中 未 使 用 的 孔 洞 所 导 致<br />

的 磁 盘 空 间 段 化 , 从 而 节 省 了 空 间 。<br />

在 创 建 UFS 文 件 系 统 时 , 可 定 义 段 大 小 。 缺 省 的 段 大 小 为 1 KB。 每 个 块 都 可 以<br />

分 成 1 个 、2 个 、4 个 或 8 个 段 , 因 此 段 大 小 从 8192 字 节 到 512 字 节 ( 仅<br />

适 用 于 4 KB 文 件 系 统 ) 不 等 。 下 限 实 际 上 为 磁 盘 扇 区 大 小 ( 通 常 是 512 字 节 )。<br />

对 于 多 TB 文 件 系 统 , 段 大 小 必 须 等 于 文 件 系 统 的 块 大 小 。<br />

注 –<br />

段 的 上 限 为 逻 辑 块 大 小 , 在 这 种 情 况 下 段 根 本 不 是 段 。 如 果 相 对 于 空 间 而 言 , 您<br />

更 关 心 速 度 , 则 此 配 置 对 于 具 有 非 常 大 的 文 件 的 文 件 系 统 可 能 是 最 佳 的 。<br />

选 择 段 大 小 时 , 请 考 虑 时 间 和 空 间 之 间 的 平 衡 : 小 的 段 大 小 可 节 省 空 间 , 但 是 需<br />

要 更 多 的 时 间 进 行 分 配 。 通 常 , 当 大 多 数 文 件 都 很 大 时 , 要 提 高 存 储 效 率 , 应 为<br />

文 件 系 统 使 用 较 大 的 段 大 小 。 当 大 多 数 文 件 都 很 小 时 , 应 为 文 件 系 统 使 用 较 小 的<br />

段 大 小 。<br />

最 小 空 闲 空 间<br />

最 小 空 闲 空 间 是 在 创 建 文 件 系 统 时 保 留 的 磁 盘 空 间 占 总 磁 盘 空 间 的 百 分 比 。 缺 省<br />

的 保 留 空 间 为 ((64 MB/ 分 区 大 小 )* 100), 向 下 舍 入 到 最 接 近 的 整 数 , 且 介<br />

于 1% 与 10%( 包 括 1% 和 10%) 之 间 。<br />

空 闲 空 间 是 很 重 要 的 , 因 为 随 着 文 件 系 统 变 满 , 文 件 访 问 的 效 率 会 越 来 越 低 。 只<br />

要 存 在 足 够 的 空 闲 空 间 ,UFS 文 件 系 统 就 可 以 有 效 地 运 行 。 当 文 件 系 统 变 满 , 用<br />

尽 可 用 的 用 户 空 间 时 , 只 有 超 级 用 户 才 能 访 问 保 留 的 空 闲 空 间 。<br />

诸 如 df 之 类 的 命 令 报 告 用 户 可 用 空 间 的 百 分 比 , 不 包 括 作 为 最 小 空 闲 空 间 分<br />

配 的 百 分 比 。 当 命 令 报 告 文 件 系 统 中 正 使 用 的 磁 盘 空 间 超 过 100% 时 , 说 明 一 些<br />

保 留 空 间 已 被 超 级 用 户 使 用 。<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


如 果 将 配 额 强 加 于 用 户 , 则 可 供 他 们 使 用 的 空 间 不 包 括 保 留 的 空 闲 空 间 。 可 以 使<br />

用 tunefs 命 令 更 改 现 有 文 件 系 统 的 最 小 空 闲 空 间 值 。<br />

旋 转 延 迟<br />

此 参 数 已 过 时 。 不 管 指 定 什 么 值 , 该 值 始 终 设 置 为 0。<br />

优 化 类 型<br />

优 化 类 型 参 数 设 置 为 空 间 或 时 间 。<br />

空 间 - 选 择 空 间 优 化 时 , 会 以 最 大 程 度 地 减 小 段 化 的 方 式 分 配 磁 盘 块 , 同<br />

时 会 使 磁 盘 的 使 用 得 到 优 化 。<br />

时 间 - 选 择 时 间 优 化 时 , 将 尽 可 能 快 速 地 分 配 磁 盘 块 , 而 不 太 注 重 其 位 置 。<br />

如 果 存 在 足 够 的 空 闲 空 间 , 则 分 配 磁 盘 块 相 对 容 易 , 而 不 会 导 致 段 化 程 度 过<br />

高 。 缺 省 值 是 时 间 。<br />

可 以 使 用 tunefs 命 令 为 现 有 文 件 系 统 更 改 优 化 类 型 参 数 的 值 。<br />

有 关 更 多 信 息 , 请 参 见 tunefs(1M)。<br />

Inode 数 ( 文 件 )<br />

每 个 inode 的 字 节 数 指 定 文 件 系 统 中 的 inode 密 度 。 用 文 件 系 统 的 总 大 小 除 以<br />

该 数 , 就 可 以 确 定 要 创 建 的 inode 数 。 分 配 inode 后 , 不 重 新 创 建 文 件 系 统 ,<br />

就 无 法 更 改 该 数 。<br />

如 果 文 件 系 统 小 于 1 GB, 则 每 inode 的 缺 省 字 节 数 为 2048 字 节 (2 KB)。 如<br />

果 文 件 系 统 大 于 1 GB, 则 使 用 以 下 公 式 :<br />

文 件 系 统 大 小<br />

每 Inode 的 字 节 数<br />

小 于 或 等 于 1 GB 2048<br />

小 于 2 GB 4096<br />

小 于 3 GB 6144<br />

3 GB 至 1 TB 8192<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


文 件 系 统 大 小<br />

大 于 1 TB 或 是 使 用 -T 选 项 创 建 的<br />

每 Inode 的 字 节 数<br />

1048576<br />

如 果 使 用 的 文 件 系 统 包 含 许 多 符 号 链 接 , 则 这 些 符 号 链 接 可 以 降 低 平 均 文 件 大<br />

小 。 如 果 文 件 系 统 将 要 包 含 许 多 小 文 件 , 则 可 以 为 此 参 数 指 定 一 个 较 小 的 值 。 但<br />

是 , 请 注 意 具 有 太 多 的 inode 比 inode 不 足 要 好 得 多 。 如 果 具 有 太 少 的 inode,<br />

则 可 能 会 在 磁 盘 片 还 几 乎 为 空 时 达 到 最 大 文 件 数 。<br />

UFS 文 件 和 文 件 系 统 的 最 大 大 小<br />

UFS 文 件 系 统 的 最 大 大 小 约 为 16 TB 的 可 用 空 间 减 去 约 1% 的 开 销 。 稀 疏 文 件<br />

可 以 具 有 1 TB 的 逻 辑 大 小 。 但 是 , 由 于 文 件 系 统 开 销 所 致 , 可 以 存 储 在 文 件 中<br />

的 实 际 数 据 量 比 1 TB 大 约 小 1%。<br />

最 大 UFS 子 目 录 数<br />

UFS 文 件 系 统 中 每 目 录 的 最 大 子 目 录 数 为 32,767。 此 限 制 是 预 定 义 的 , 不 能 进<br />

行 更 改 。<br />

第 四 节 日 志 文 件 系 统<br />

定 义 日 志 文 件 系 统 的 方 法 有 很 多 种 , 但 是 让 我 们 抓 住 要 点 。 日 志 文 件 系 统<br />

就 是 专 为 那 些 厌 倦 了 一 直 盯 着 启 动 时 fsck( 即 文 件 系 统 一 致 性 检 查 ) 的 人 而 设<br />

计 的 ( 日 志 文 件 系 统 同 样 适 用 于 希 望 文 件 系 统 具 有 故 障 恢 复 能 力 的 群 体 )。 如 果<br />

系 统 采 用 传 统 的 未 提 供 日 志 功 能 的 文 件 系 统 , 那 么 操 作 系 统 在 检 测 到 系 统 为 非 正<br />

常 关 机 时 , 会 使 用 fsck 应 用 程 序 执 行 一 致 性 检 验 。 该 应 用 程 序 会 扫 描 文 件 系 统<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


( 这 要 花 费 很 长 的 时 间 ), 并 修 复 任 何 可 安 全 修 复 的 问 题 。 而 在 某 些 情 况 下 , 当<br />

文 件 系 统 损 坏 严 重 时 , 操 作 系 统 会 启 动 到 单 用 户<br />

模 式 , 由 用 户 进 行 进 一 步 的 修 复 。<br />

那 么 现 在 您 应 该 清 楚 日 志 文 件 系 统 针 对 的<br />

是 哪 类 人 群 了 , 但 是 他 们 是 如 何 取 缔 fsck 的<br />

呢 ? 笼 统 地 说 , 日 志 文 件 系 统 就 是 通 过 维 护 一 份<br />

日 志 来 防 止 文 件 系 统 崩 溃 。 所 谓 日 志 就 是 一 种 特<br />

殊 的 文 件 , 它 会 在 一 个 循 环 的 缓 冲 区 内 记 录 文 件<br />

系 统 的 修 改 , 然 后 将 其 定 期 提 交 到 文 件 系 统 。<br />

一 旦 系 统 发 生 崩 溃 , 日 志 文 件 就 会 起 到 一 个 检 查<br />

点 的 作 用 , 用 于 恢 复 未 保 存 的 信 息 , 防 止 损 坏 文<br />

件 系 统 元 数 据 。<br />

fsck 问 题<br />

更 麻 烦 的 是 , 为 了 确 保 文 件<br />

系 统 元 数 据 的 正 确 性 ( 即 使<br />

未 检 测 到 损 坏 ), 操 作 系 统<br />

会 自 动 启 动 fsck 进 程 。 因<br />

此 , 避 免 对 文 件 系 统 进 行 一<br />

致 性 检 验 正 是 需 要 改 进 的 地<br />

方 。<br />

总 之 , 日 志 文 件 系 统 就 是 一 种 具 有 故 障 恢 复 能 力 的 文 件 系 统 , 它 利 用 日 志 来 记<br />

录 尚 未 提 交 到 文 件 系 统 的 修 改 , 以 防 止 元 数 据 破 坏 ( 请 参 见 图 1)。 但 是 如 众 多<br />

其 他 Linux 解 决 方 案 一 样 , 日 志 文 件 系 统 有 多 种 方 案 供 您 选 择 。 下 面 就 让 我 们<br />

一 起 简 短 回 顾 一 下 日 志 文 件 系 统 的 历 史 , 然 后 再 看 一 看 现 行 的 几 种 文 件 系 统 , 看<br />

看 它 们 之 间 有 什 么 区 别 。<br />

图 1. 典 型 的 日 志 文 件 系 统<br />

什 么 是 元 数 据 ?<br />

元 数 据 指 磁 盘 上 的 数 据 的<br />

管 理 结 构 。 它 表 示 文 件 的 创<br />

建 与 删 除 、 目 录 的 创 建 与 删<br />

除 、 扩 充 文 件 、 截 取 文 件 等 。<br />

Linux 日 志 文 件 系 统 的 历 史<br />

最 早 的 日 志 文 件 系 统 是 IBM® Journaled FileSystem(JFS)。JFS 于 1990 年<br />

首 次 发 行 , 而 当 前 Linux 支 持 的 版 本 是 后 期 开 发 的 JFS2。1994 年 ,Silicon<br />

Graphics 为 IRIX 操 作 系 统 引 进 了 高 性 能 的 XFS。XFS 于 2001 年 被 植 入<br />

Linux 系 统 中 。1998 年 开 发 的 智 能 文 件 系 统 (SFS) 起 初 是 为 Amiga 开 发 的 ,<br />

但 之 后 却 在 GNU Lesser General Public License(LGPL) 下 发 行 , 并 于 2005 年<br />

获 得 了 Linux 的 支 持 。 最 常 用 的 日 志 文 件 系 统 ext3fs (third extended file<br />

system) 是 ext2 的 扩 展 , 它 增 加 了 记 录 日 志 的 功 能 。 从 2001 年 起 ,Linux 系<br />

统 中 就 开 始 支 持 ext3fs。 最 终 ,ReiserFS 日 志 文 件 系 统 在 其 被 引 入 之 后 , 力 压<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


群 雄 , 被 广 泛 使 用 。 但 由 于 其 原 开 发 者 的 一 些 法 律 纠 纷 ,ReiserFS 日 志 文 件 系<br />

统 未 能 得 到 进 一 步 的 发 展 。<br />

日 志 的 几 种 变 体<br />

日 志 文 件 系 统 是 使 用 日 志 来 缓 冲 文 件 系 统 的 修 改 ( 同 时 也 可 以 应 用 于 紧 急<br />

故 障 恢 复 ) 的 , 但 可 以 根 据 记 录 的 时 间 与 内 容 采 取 不 同 的 策 略 。 其 中 , 三 种 常 见<br />

的 策 略 为 : 回 写 (writeback)、 预 定 (ordered) 和 数 据 (data)。<br />

在 回 写 模 式 中 , 仅 有 元 数 据 被 记 录 到 日 志 , 数 据 块 则 被 直 接 写 入 到 磁 盘 位 置 上 。<br />

这 样 可 以 保 存 文 件 系 统 结 构 , 防 止 崩 溃 , 但 却 有 可 能 发 生 数 据 崩 溃 ( 比 如 : 在 元<br />

数 据 记 录 到 日 志 后 , 数 据 块 写 入 磁 盘 前 , 系 统 崩 溃 )。 要 想 解 决 这 个 问 题 , 您 可<br />

以 使 用 预 定 模 式 。 预 定 模 式 只 将 元 数 据 记 录 到 日 志 , 但 是 在 此 之 前 将 数 据 写 入<br />

到 磁 盘 。 这 样 就 可 以 保 证 系 统 恢 复 后 数 据 和 文 件 系 统 的 一 致 性 。 最 后 一 种 模 式 将<br />

数 据 也 记 录 到 了 日 志 中 。 在 数 据 模 式 中 , 元 数 据 和 数 据 都 被 记 录 到 日 志 中 。 这<br />

种 模 式 可 以 最 大 限 度 地 防 止 文 件 系 统 崩 溃 与 数 据 丢 失 , 但 由 于 全 部 数 据 都 写 入 了<br />

两 次 ( 先 写 入 日 志 , 再 写 入 磁 盘 ), 系 统 性 能 可 能 会 降 低 。<br />

日 志 的 提 交 也 有 很 多 种 不 同 的 策 略 。 比 如 , 是 在 日 志 将 满 时 , 还 是 在 超 时 后 ?<br />

日 志 文 件 系 统 的 现 状<br />

如 今 , 有 几 种 日 志 文 件 系 统 应 用 非 常 广 泛 。 每 一 种 都 有 其 自 己 的 优 缺 点 。 下 面 介<br />

绍 现 存 最 普 遍 的 四 种 日 志 文 件 系 统 。<br />

JFS2<br />

JFS2( 又 称 enhanced journaled file system) 是 最 早 期 的 日 志 文 件 系 统 , 在<br />

植 入 Linux 之 前 已 被 应 用 于 IBM AIX® 操 作 系 统 多 年 。 它 是 64 位 的 文 件 系 统 ,<br />

虽 然 它 是 在 原 来 的 JFS 的 基 础 上 开 发 的 , 但 却 较 之 有 所 改 进 , 即 :JFS2 具 有 更<br />

优 的 扩 展 性 能 , 而 且 支 持 多 处 理 器 架 构 。<br />

JFS2 支 持 预 定 的 日 志 记 录 方 式 , 可 以 提 高 较 高 的 性 能 , 并 实 现 亚 秒 级 文 件 系 统<br />

恢 复 。JFS2 同 时 为 提 高 性 能 提 供 了 基 于 分 区 的 文 件 分 配 (Extent-based<br />

allocation)。 基 于 分 区 的 分 配 是 指 对 一 组 连 续 的 块 而 非 单 一 的 块 进 行 分 配 。<br />

由 于 这 些 块 在 磁 盘 上 是 连 续 的 , 其 读 取 和 写 入 的 性 能 就 会 更 好 。 这 种 分 配 的 另 外<br />

一 个 优 势 就 是 可 以 将 元 数 据 管 理 最 小 化 。 按 块 分 配 磁 盘 空 间 就 意 味 着 要 逐 块 更 新<br />

元 数 据 。 而 使 用 分 区 , 元 数 据 则 仅 需 按 照 分 区 ( 可 以 代 表 多 个 块 ) 更 新 。<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


JFS2 还 使 用 了 B+ 树 , 以 便 更 快 地 查 找 目 录 和 管 理 分 区 描 述 符 。JFS2 没 有 内 部<br />

日 志 提 交 策 略 , 而 是 在 kupdate 守 护 进 程 超 时 时 提 交 。<br />

XFS<br />

XFS 是 Silicon Graphicsis 于 1995 年 为 IRIX 操 作 系 统 开 发 的 其 他 早 期 日<br />

志 文 件 系 统 之 一 。 它 于 2001 年 就 已 经 被 植 入 Linux, 因 此 , 它 已 经 成 熟 而 且 可<br />

靠 。<br />

XFS 支 持 64 位 全 地 址 寻 址 , 并 以 B+ 树 为 目 录 和 文 件 分 配 提 供 高 性 能 。XFS 同<br />

样 使 用 了 基 于 分 区 的 分 配 , 支 持 可 变 的 块 大 小 ( 从 512 字 节 到 64KB )。 除 分<br />

区 外 ,XFS 还 采 用 延 时 分 配 , 即 等 到 块 将 被 写 入 磁 盘 时 , 再 为 其 分 配 磁 盘 空 间 。<br />

这 样 所 需 磁 盘 空 间 总 数 就 一 目 了 然 , 因 此 这 个 功 能 提 高 了 分 配 连 续 磁 盘 块 的 可 能<br />

性 。<br />

XFS 还 有 一 些 其 他 的 有 趣 特 性 , 它 可 以 保 证 rate 输 入 输 出 (I/O — 通 过 为 文<br />

件 系 统 用 户 保 留 带 宽 ) 和 直 接 I/O。 其 中 , 数 据 是 直 接 在 磁 盘 和 用 户 空 间 缓 冲 区<br />

间 拷 贝 的 ( 而 不 是 从 多 个 缓 冲 区 进 入 )。XFS 采 用 回 写 日 志 策 略 。<br />

第 三 扩 展 文 件 系 统 (ext3fs)<br />

第 三 扩 展 文 件 系 统 (third extended file system,ext3fs) 是 最 流 行 的 日 志<br />

文 件 系 统 , 是 由 ext2 文 件 系 统 演 化 而 来 。 实 际 上 ,Ext3fs 可 以 与 ext2fs 兼<br />

容 , 这 是 因 为 ext3fs 使 用 的 结 构 与 ext2fs 相 同 , 仅 仅 多 了 一 个 日 志 而 已 。 我<br />

们 甚 至 可 以 把 ext3fs 的 一 部 分 当 作 ext2 文 件 系 统 挂 载 , 或 者 将 ext2 文 件 系<br />

统 转 换 成 ext3 文 件 系 统 ( 使 用 tune2fs 实 用 程 序 )。<br />

Ext3fs 允 许 用 三 种 方 式 记 录 日 志 ( 回 写 , 预 定 和 数 据 ), 但 预 定 模 式 为 默 认 模<br />

式 。 日 志 提 交 策 略 也 是 可 配 置 的 , 但 是 默 认 在 日 志 填 满 1/4 时 或 其 中 一 个 提 交<br />

计 时 器 超 时 时 , 提 交 日 志 。<br />

ext3fs 主 要 的 弊 端 之 一 就 是 它 最 初 不 是 作 为 日 志 文 件 系 统 而 设 计 的 。 它 是 在<br />

ext2fs 的 基 础 上 开 发 的 , 因 此 缺 少 一 些 其 他 日 志 文 件 系 统 所 具 备 的 高 级 特 性 ( 例<br />

如 分 区 )。 它 在 性 能 方 面 较 之 ReiserFS、JFS 以 及 XFS 也 尤 为 逊 色 , 但 它 所 需<br />

要 的 CPU 和 内 存 要 比 同 类 解 决 方 案 少 。<br />

ReiserFS<br />

什 么 是 tail packing?<br />

很 多 情 况 下 , 一 些 文 件 的 大<br />

小 小 于 逻 辑 块 。 为 了 不 把 可<br />

以 分 配 给 一 个 逻 辑 块 的 磁 盘<br />

空 间 浪 费 给 小 文 件 ( 称 之 为<br />

tail), 于 是 把 多 个 文 件 打<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


ReiserFS 是 从 一 开 始 就 按 照 记 录 日 志 的 意 图 而<br />

开 发 的 日 志 文 件 系 统 。ReiserFS 于 2001 年 被<br />

引 进 到 主 流 2.4 内 核 (Linux 采 用 的 第 一 个 日<br />

志 文 件 系 统 )。 其 默 认 的 日 志 记 录 方 法 为 预 定 ,<br />

且 支 持 以 在 线 调 整 大 小 的 方 式 扩 展 文 件 系 统 。<br />

包 到 一 个 单 一 的 逻 辑 块 中 。<br />

结 果 发 现 这 种 方 法 可 以 让 磁<br />

盘 空 间 的 容 量 比 其 他 竞 争 文<br />

件 系 统 ( 有 性 能 损 失 ) 高 5%。<br />

ReiserFS 同 时 还 具 有 tail packing 功 能 , 显 著 减 少 了 磁 盘 碎 片 。 在 处 理 较 小<br />

文 件 方 面 ,ReiserFS 的 速 度 要 比 ext3f 快 ( 当 tail packing 可 用 时 )。<br />

ReiserFS( 又 称 ReiserFS v3) 具 有 很 多 先 进 的 功 能 , 如 B+ 树 。 该 文 件 系 统 的<br />

基 础 格 式 建 立 在 单 一 的 B+ 树 的 基 础 之 上 , 这 使 得 搜 索 的 效 率 和 可 伸 缩 性 增 强 。<br />

提 交 策 略 则 取 决 于 日 志 的 大 小 , 但 是 要 以 待 提 交 的 块 的 数 量 为 基 础 。<br />

ReiserFS 也 遇 到 了 几 个 问 题 — 大 多 是 最 近 出 现 的 , 这 与 其 开 发 者 遇 到 了 一 些<br />

法 律 纠 纷 有 直 接 原 因 ( 详 情 请 参 阅 参 考 资 料 )。<br />

日 志 文 件 系 统 的 未 来<br />

现 在 您 已 经 了 解 了 现 行 的 ( 和 过 去 的 ) 日 志 文 件 系 统 , 下 面 就 让 我 们 看 一 看 它 的<br />

发 展 趋 势 。<br />

Reiser4<br />

在 成 功 地 将 ReiserFS 合 并 到 Linux 内 核 , 并 被 很 多 的 Linux 发 行 版 采 用 之<br />

后 ,Namesys( 开 发 ReiserFS 的 公 司 ) 便 开 始 致 力 于 新 的 日 志 文 件 系 统 的 开 发 。<br />

Reiser4 被 设 计 成 为 全 新 的 日 志 文 件 系 统 , 它 拥 有 很 多 先 进 的 功 能 。<br />

Resier4 拟 定 通 过 wandering 日 志 和 延 迟 分 配 块 直 至 日 志 提 交 ( 像 在 XFS 中 一<br />

样 ) 的 方 式 来 实 现 更 优 秀 的 日 志 记 录 。Reiser4 还 设 计 有 灵 活 的 插 件 架 构 ( 以 支<br />

持 诸 如 压 缩 和 加 密 之 类 的 功 能 ), 但 是 被 Linux 社 区 拒 绝 了 , 因 为 这 些 在 虚 拟<br />

文 件 系 统 (virtual file system,VFS) 被 当 作 是 最 好 的 功 能 。<br />

由 于 Namesys 的 所 有 者 的 坚 持 , 所 有 关 于 Reiser4 的 商 业 活 动 都 停 止 了 。<br />

第 四 扩 展 文 件 系 统<br />

第 四 扩 展 日 志 文 件 系 统 (fourth extended journaling file system,ext4fs)<br />

是 由 ext3fs 演 化 而 来 。Ext4 文 件 系 统 被 设 计 为 具 有 向 前 和 向 后 兼 容 性 , 但 它<br />

具 有 许 多 新 的 高 级 特 性 ( 其 中 的 一 些 特 性 破 坏 了 兼 容 性 )。 这 就 意 味 着 您 可 以 将<br />

ext4fs 的 一 部 分 作 为 ext3fs 挂 载 , 反 之 亦 然 。<br />

首 先 ,ext4fs 是 64 位 文 件 系 统 , 并 被 设 计 为 可 以 支 持 很 大 的 容 量 (1 exabyte)。<br />

它 还 可 以 使 用 分 区 , 但 是 这 样 做 将 失 去 与 ext3fs 的 兼 容 性 。 像 XFS 和 Reiser4<br />

一 样 ,ext4fs 还 支 持 在 必 要 时 采 取 延 时 分 配 方 式 分 配 块 ( 这 样 可 以 减 少 磁 盘 碎<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


片 )。 日 志 的 内 容 也 已 经 执 行 过 检 查 和 (checksum), 使 日 志 更 加 可 靠 。ext4fs<br />

并 没 有 采 用 标 准 的 B+ 或 者 B* 树 , 取 而 代 之 的 是 B 树 的 一 种 变 体 , 叫 做 H 树 ,<br />

它 支 持 更 大 的 子 目 录 (ext3 的 上 限 为 32KB )。<br />

虽 然 延 时 分 配 的 方 法 可 以 减 少 磁 盘 碎 片 , 但 时 间 久 了 , 一 个 大 的 文 件 系 统 可 能 会<br />

成 为 碎 片 。 为 解 决 这 个 问 题 , 开 发 了 在 线 磁 盘 碎 片 整 理 工 具 (e4defrag)。 您 可<br />

以 使 用 这 个 工 具 来 整 理 单 个 的 文 件 或 者 整 个 文 件 系 统 。<br />

ext3fs 与 ext4fs 间 的 另 一 个 有 趣 的 区 别 就 在 于 文 件 的 日 期 分 辨 率 。 在 ext3<br />

中 , 时 间 戳 的 最 小 分 辨 率 为 1 秒 。 而 Ext4fs 是 面 向 未 来 的 : 那 时 处 理 器 和 接<br />

口 的 速 度 会 持 续 加 快 , 需 要 更 高 的 分 辨 率 。 因 此 ,ext4 中 时 间 戳 的 最 小 分 辨 率<br />

为 1 纳 秒 。<br />

Ext4fs 已 被 合 并 到 自 2.6.19 以 后 的 Linux 内 核 中 , 但 它 还 是 不 够 稳 定 。 下 一<br />

代 系 统 的 开 发 将 继 续 致 力 于 此 ; 辅 之 以 上 一 代 的 优 势 , 它 就 会 是 下 一 代 的 Linux<br />

日 志 文 件 系 统 。<br />

ext3 reiserfs xfs 的 比 较<br />

我 以 我 个 人 看 法 , 谈 谈 ext3 reiserfs xfs 三 种 文 件 系 统 的 安 全 性 (jfs 了 解 不 多 ), 泛 泛 而 谈 ,<br />

应 该 有 不 当 之 处 , 欢 迎 提 供 不 同 的 看 法 , 以 便 改 正 。<br />

ext3 是 多 数 LINUX 上 默 认 的 文 件 系 统 , 也 是 从 传 统 UNIX 文 件 系 统 的 结 构 上 演 变 而 来 的 ,<br />

文 件 系 统 设 计 得 非 常 简 单 明 了 , 以 不 同 的 块 组 进 行 数 据 、 节 点 、 块 组 表 的 组 织 。 优 点 是 很 简 单 ,<br />

尤 其 适 用 于 频 繁 删 除 / 增 加 文 件 、 同 时 每 级 文 件 下 的 文 件 总 数 不 多 的 文 件 系 统 。<br />

因 EXT3 B 树 的 概 念 用 得 较 少 , 在 目 录 检 索 方 面 很 差 , 所 以 同 一 组 目 录 下 不 能 放 太 多 文 件 ,<br />

目 录 结 构 也 尽 可 能 不 能 太 复 杂 。<br />

EXT3 的 日 志 功 能 设 计 很 差 , 经 常 会 遇 到 实 然 断 电 后 , 文 件 系 统 损 坏 的 情 况 , 实 际 上 ext3<br />

对 日 志 的 检 验 、 还 原 方 面 做 得 还 很 不 够 。<br />

EXT3 采 用 的 数 据 存 储 方 式 相 当 表 格 化 , 格 式 化 时 就 确 定 了 固 定 数 目 的 inode, 并 分 配 好 了<br />

空 间 , 当 然 会 导 致 空 间 的 大 浪 费 , 同 时 当 文 件 太 多 , 达 到 上 限 时 , 文 件 系 统 也 无 法 负 担 。<br />

EXT3 采 用 全 索 引 的 方 式 对 数 据 存 储 区 域 进 行 索 引 管 理 , 所 以 , 大 量 的 文 件 碎 片 在 EXT3 上<br />

并 不 会 导 致 严 重 的 数 据 风 险 , 随 机 寻 址 会 更 快 。 当 然 , 浪 费 也 会 大 一 些 。<br />

总 得 看 ,EXT3 并 不 是 一 个 很 安 全 的 文 件 系 统 , 如 果 从 数 据 存 储 安 全 的 角 度 看 , 并 不 推 荐 。<br />

REISERFS 是 一 个 算 法 敏 捷 的 文 件 系 统 , 无 处 不 在 的 树 结 构 使 得 索 引 、 遍 历 的 适 应 范 围 极 大 ,<br />

一 个 上 几 千 万 个 文 件 的 文 件 系 统 , 通 常 也 只 需 要 约 4 级 索 引 就 可 以 到 达 。 但 因 索 引 以 整 个 文 件<br />

系 统 中 所 有 的 节 点 为 单 位 组 织 ( 一 颗 树 ), 所 以 即 使 访 问 一 个 文 件 , 复 杂 程 序 也 不 会 很 低 。 所 以 很<br />

容 易 理 解 的 ,MOUNT 的 时 间 会 更 长 ( 读 取 一 个 根 目 录 就 需 要 从 整 个 树 的 根 读 到 叶 , 同 时 根 目 录<br />

节 点 并 不 是 索 引 B 树 的 根 节 点 , 也 是 普 通 的 一 个 叶 节 点 , 这 点 和 其 他 文 件 系 统 很 不 相 同 ), 同 时<br />

目 录 节 点 有 机 地 整 合 在 整 个 节 点 树 里 , 并 以 HASH 为 索 引 键 值 。<br />

reiserfs 的 上 述 主 要 特 征 决 定 了 , 它 在 处 理 少 量 文 件 时 的 优 势 并 不 明 显 , 反 而 会 更 慢 , 同 时<br />

因 复 杂 程 度 带 来 更 强 的 不 稳 定 性 。 但 在 处 理 大 量 文 件 时 , 它 的 稳 定 性 也 不 会 再 下 降 多 少 , 同 时 树<br />

的 特 征 与 目 录 节 点 的 特 征 , 遍 历 目 录 结 构 的 性 能 也 不 会 下 降 多 少 。 所 以 特 别 适 合 大 量 文 件 ( 邮 件<br />

系 统 、 大 量 文 件 的 网 站 服 务 器 ) 的 使 用 环 境 。<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


另 外 ,reiserfs 也 是 一 种 日 志 文 件 系 统 , 但 日 志 能 力 并 不 很 强 , 日 志 方 面 我 分 析 得 不 多 , 只<br />

从 结 构 方 面 看 , 比 EXT3 的 好 一 点 ( 更 加 结 构 化 了 )。<br />

xfs 本 身 是 SGI 用 在 IRIX 上 的 一 种 文 件 系 统 , 设 计 结 构 感 觉 滴 水 不 漏 , 随 处 可 见 的 分 层 寻<br />

址 机 制 ( 和 REISERFS 的 设 计 可 是 大 相 径 庭 ), 让 系 统 可 以 更 快 , 更 高 效 得 处 理 指 定 文 件 。 同 时 ,<br />

XFS 在 寻 址 上 大 量 运 用 位 操 作 , 这 也 使 得 处 理 大 文 件 时 效 率 更 高 。<br />

xfs 在 目 录 结 构 组 织 方 面 比 较 类 似 于 ext3, 目 录 也 是 以 普 通 数 据 文 件 的 方 式 进 行 存 储 与 管 理 ,<br />

这 样 在 应 付 大 量 文 件 读 取 时 , 索 引 性 能 稍 差 一 些 。<br />

xfs 文 件 系 统 的 日 志 功 能 据 其 他 资 料 讲 相 对 要 强 一 些 ( 本 人 未 作 分 析 ), 通 常 不 容 易 崩 溃 。<br />

从 数 据 删 除 与 格 式 化 角 度 看 ,XFS 与 REISERFS 在 删 除 与 格 式 化 后 , 都 有 机 会 完 整 恢 复 ( 并<br />

不 清 除 节 点 里 的 关 键 信 息 )。 但 EXT3 恢 复 的 难 度 就 会 大 很 多 ( 清 除 节 点 )。<br />

简 单 的 结 论 ,XFS 在 文 件 数 目 不 是 特 别 多 的 情 况 下 是 较 可 靠 的 。REISERFS 在 大 量 小 文 件 的<br />

文 件 系 统 ( 超 过 百 万 文 件 , 且 多 数 文 件 小 于 1MB) 上 是 首 选 的 。<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


第 五 节 云 存 储 与 并 行 文 件 系 统<br />

云 存 储 (cloud storage) 这 个 概 念 一 经 提 出 , 就 得 到 了 众 多 厂 商 的 支 持 和 关 注 。Amazon 在<br />

两 年 前 就 推 出 的 Elastic Compute Cloud(EC2: 弹 性 计 算 云 ) 云 存 储 产 品 , 旨 在 为 用 户 提<br />

供 互 联 网 服 务 形 式 同 时 提 供 更 强 的 存 储 和 计 算 功 能 。 内 容 分 发 网 络 服 务 提 供 商 CDNetworks<br />

和 业 界 著 名 的 云 存 储 平 台 服 务 商 Nirvanix 发 布 了 一 项 新 的 合 作 , 并 宣 布 结 成 战 略 伙 伴 关<br />

系 , 以 提 供 业 界 目 前 唯 一 的 云 存 储 和 内 容 传 送 服 务 集 成 平 台 。 半 年 以 前 , 微 软 就 已 经 推 出 了<br />

提 供 网 络 移 动 硬 盘 服 务 的 Windows Live SkyDrive Beta 测 试 版 。 近 期 ,EMC 宣 布 加 入 道 里<br />

可 信 基 础 架 构 项 目 , 致 力 于 云 计 算 环 境 下 关 于 信 任 和 可 靠 度 保 证 的 全 球 研 究 协 作 ,IBM 也 将<br />

云 计 算 标 准 作 为 全 球 备 份 中 心 的 3 亿 美 元 扩 展 方 案 的 一 部 分 。<br />

云 存 储 系 统<br />

云 存 储 变 得 越 来 越 热 , 大 家 众 说 纷 ” 云 ”, 而 且 各 有 各 的 说 法 , 各 有 各 的 观 点 , 那 么 到<br />

底 什 么 是 云 存 储 ?<br />

云 存 储 在 云 计 算 (cloud computing) 概 念 上 延 伸 和 发 展 出 来 的 一 个 新 的 概 念 。 云 计 算 是<br />

是 分 布 式 处 理 (Distributed Computing)、 并 行 处 理 (Parallel Computing) 和 网 格 计 算 (Grid<br />

Computing) 的 发 展 , 是 透 过 网 络 将 庞 大 的 计 算 处 理 程 序 自 动 分 拆 成 无 数 个 较 小 的 子 程 序 , 再<br />

交 由 多 部 服 务 器 所 组 成 的 庞 大 系 统 经 计 算 分 析 之 后 将 处 理 结 果 回 传 给 用 户 。 通 过 云 计 算 技<br />

术 , 网 络 服 务 提 供 者 可 以 在 数 秒 之 内 , 处 理 数 以 千 万 计 甚 至 亿 计 的 信 息 , 达 到 和 ” 超 级 计 算<br />

机 ” 同 样 强 大 的 网 络 服 务 。<br />

云 存 储 的 概 念 与 云 计 算 类 似 , 它 是 指 通 过 集 群 应 用 、 网 格 技 术 或 分 布 式 文 件 系 统 等 功 能 ,<br />

将 网 络 中 大 量 各 种 不 同 类 型 的 存 储 设 备 通 过 应 用 软 件 集 合 起 来 协 同 工 作 , 共 同 对 外 提 供 数 据<br />

存 储 和 业 务 访 问 功 能 的 一 个 系 统 。<br />

如 果 这 样 解 释 还 是 难 以 理 解 , 那 我 们 可 以 借 用 广 域 网 和 互 联 网 的 结 构 来 解 释 云 存 储 。<br />

云 状 的 网 络 结 构<br />

相 信 大 家 对 局 域 网 、 广 域 网 和 互 联 网 都 已 经 非 常 了 解 了 。 在 常 见 的 局 域 网 系 统 中 , 我 们<br />

为 了 能 更 好 地 使 用 局 域 网 , 一 般 来 讲 , 使 用 者 需 要 非 常 清 楚 地 知 道 网 络 中 每 一 个 软 硬 件 的 型<br />

号 和 配 置 , 比 如 采 用 什 么 型 号 交 换 机 , 有 多 少 个 端 口 , 采 用 了 什 么 路 由 器 和 防 火 墙 , 分 别 是<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


如 何 设 置 的 。 系 统 中 有 多 少 个 服 务 器 , 分 别 安 装 了 什 么 操 作 系 统 和 软 件 。 各 设 备 之 间 采 用 什<br />

么 类 型 的 连 接 线 缆 , 分 配 了 什 么 xml:lang=IP 地 址 和 子 网 掩 码 。<br />

但 当 我 们 使 用 广 域 网 和 互 联 网 时 , 我 们 只 需 要 知 道 是 什 么 样 的 接 入 网 和 用 户 名 、 密 码 就<br />

可 以 连 接 到 广 域 网 和 互 联 网 , 并 不 需 要 知 道 广 域 网 和 互 联 网 中 到 底 有 多 少 台 交 换 机 、 路 由 器 、<br />

防 火 墙 和 服 务 器 , 不 需 要 知 道 数 据 是 通 过 什 么 样 的 路 由 到 达 我 们 的 电 脑 , 也 不 需 要 知 道 网 络<br />

中 的 服 务 器 分 别 安 装 了 什 么 软 件 , 更 不 需 要 知 道 网 络 中 各 设 备 之 间 采 用 了 什 么 样 的 连 接 线 缆<br />

和 端 口 。<br />

广 域 网 和 互 联 网 对 于 具 体 的 使 用 者 是 完 全 透 明 的 , 我 们 经 常 用 一 个 云 状 的 图 形 来 表 示 广<br />

域 网 和 互 联 网 。<br />

虽 然 云 状 的 图 形 中 包 含 了 许 许 多 多 的 交 换 机 、 路 由 器 、 防 火 墙 和 服 务 器 , 但 对 具 体 的 广<br />

域 网 、 互 联 网 用 户 来 讲 , 这 些 都 是 不 需 要 知 道 的 。 这 个 云 状 图 形 代 表 的 是 广 域 网 和 互 联 网 带<br />

给 大 家 的 互 联 互 通 的 网 络 服 务 , 无 论 我 们 在 任 何 地 方 , 都 可 以 通 过 一 个 网 络 接 入 线 缆 和 一 个<br />

用 户 、 密 码 , 就 可 以 接 入 广 域 网 和 互 联 网 , 享 受 网 络 带 给 我 们 的 服 务 。<br />

参 考 云 状 的 网 络 结 构 , 创 建 一 个 新 型 的 云 状 结 构 的 存 储 系 统 系 统 , 这 个 存 储 系 统 由 多 个<br />

存 储 设 备 组 成 , 通 过 集 群 功 能 、 分 布 式 文 件 系 统 或 类 似 网 格 计 算 等 功 能 联 合 起 来 协 同 工 作 ,<br />

并 通 过 一 定 的 应 用 软 件 或 应 用 接 口 , 对 用 户 提 供 一 定 类 型 的 存 储 服 务 和 访 问 服 务 。<br />

当 我 们 使 用 某 一 个 独 立 的 存 储 设 备 时 , 我 们 必 须 非 常 清 楚 这 个 存 储 设 备 是 什 么 型 号 , 什<br />

么 接 口 和 传 输 协 议 , 必 须 清 楚 地 知 道 存 储 系 统 中 有 多 少 块 磁 盘 , 分 别 是 什 么 型 号 、 多 大 容 量 ,<br />

必 须 清 楚 存 储 设 备 和 服 务 器 之 间 采 用 什 么 样 的 连 接 线 缆 。 为 了 保 证 数 据 安 全 和 业 务 的 连 续<br />

性 , 我 们 还 需 要 建 立 相 应 的 数 据 备 份 系 统 和 容 灾 系 统 。 除 此 之 外 , 对 存 储 设 备 进 行 定 期 地 状<br />

态 监 控 、 维 护 、 软 硬 件 更 新 和 升 级 也 是 必 须 的 。<br />

如 果 采 用 云 存 储 , 那 么 上 面 所 提 到 的 一 切 对 使 用 者 来 讲 都 不 需 要 了 。 云 状 存 储 系 统 中 的<br />

所 有 设 备 对 使 用 者 来 讲 都 是 完 全 透 明 的 , 任 何 地 方 的 任 何 一 个 经 过 授 权 的 使 用 者 都 可 以 通 过<br />

一 根 接 入 线 缆 与 云 存 储 连 接 , 对 云 存 储 进 行 数 据 访 问 。<br />

云 存 储 不 是 存 储 , 而 是 服 务<br />

就 如 同 云 状 的 广 域 网 和 互 联 网 一 样 , 云 存 储 对 使 用 者 来 讲 , 不 是 指 某 一 个 具 体 的 设 备 ,<br />

而 是 指 一 个 由 许 许 多 多 个 存 储 设 备 和 服 务 器 所 构 成 的 集 合 体 。 使 用 者 使 用 云 存 储 , 并 不 是 使<br />

用 某 一 个 存 储 设 备 , 而 是 使 用 整 个 云 存 储 系 统 带 来 的 一 种 数 据 访 问 服 务 。 所 以 严 格 来 讲 , 云<br />

存 储 不 是 存 储 , 而 是 一 种 服 务 。<br />

云 存 储 的 核 心 是 应 用 软 件 与 存 储 设 备 相 结 合 , 通 过 应 用 软 件 来 实 现 存 储 设 备 向 存 储 服 务<br />

的 转 变 。<br />

云 存 储 - 与 云 计 算 的 关 系<br />

云 计 算 是 分 布 式 处 理 (Distributed Computing)、 并 行 处 理 (Parallel Computing) 和 网 格 计<br />

算 (Grid Computing) 的 发 展 , 是 透 过 网 络 将 庞 大 的 计 算 处 理 程 序 自 动 分 拆 成 无 数 个 较 小 的 子<br />

程 序 , 再 交 由 多 台 服 务 器 所 组 成 的 庞 大 系 统 经 计 算 分 析 之 后 将 处 理 结 果 回 传 给 用 户 。 通 过 云<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


计 算 技 术 , 网 络 服 务 提 供 者 可 以 在 数 秒 之 内 , 处 理 数 以 千 万 计 甚 至 亿 计 的 信 息 , 达 到 和 ” 超<br />

级 计 算 机 ” 同 样 强 大 的 网 络 服 务 。 如 下 图 :<br />

云 计 算 系 统 的 建 设 目 标 是 将 运 行 在 PC 上 、 或 单 个 服 务 器 上 的 独 立 的 、 个 人 化 的 运 算 迁<br />

移 到 一 个 数 量 庞 大 服 务 器 ” 云 ” 中 , 由 这 个 云 系 统 来 负 责 处 理 用 户 的 请 求 , 并 输 出 结 果 , 它<br />

是 一 个 以 数 据 运 算 和 处 理 为 核 心 的 系 统 。<br />

云 存 储 是 在 云 计 算 (cloud computing) 概 念 上 延 伸 和 发 展 出 来 的 一 个 新 的 概 念 , 是 指 通<br />

过 集 群 应 用 、 网 格 技 术 或 分 布 式 文 件 系 统 等 功 能 , 将 网 络 中 大 量 各 种 不 同 类 型 的 存 储 设 备 通<br />

过 应 用 软 件 集 合 起 来 协 同 工 作 , 共 同 对 外 提 供 数 据 存 储 和 业 务 访 问 功 能 的 一 个 系 统 。 当 云<br />

计 算 系 统 运 算 和 处 理 的 核 心 是 大 量 数 据 的 存 储 和 管 理 时 , 云 计 算 系 统 中 就 需 要 配 置 大 量 的 存<br />

储 设 备 , 那 么 云 计 算 系 统 就 转 变 成 为 一 个 云 存 储 系 统 , 所 以 云 存 储 是 一 个 以 数 据 存 储 和 管 理<br />

为 核 心 的 云 计 算 系 统 。<br />

与 云 计 算 系 统 相 比 , 云 存 储 可 以 认 为 是 配 置 了 大 容 量 存 储 空 间 的 一 个 云 计 算 系 统 。<br />

从 架 构 模 型 来 看 , 云 存 储 系 统 系 统 比 云 计 算 系 统 多 了 一 个 存 储 层 , 同 时 , 在 基 础 管 理 也<br />

多 了 很 多 与 数 据 管 理 和 数 据 安 全 有 关 的 功 能 , 在 两 者 在 访 问 层 和 应 用 接 口 层 则 是 完 全 相 同<br />

的 。<br />

云 存 储 - 技 术 前 提<br />

从 云 存 储 结 构 模 型 可 知 , 云 存 储 系 统 是 一 个 多 设 备 、 多 应 用 、 多 服 务 协 同 工 作 的 集 合 体 ,<br />

它 的 实 现 要 以 多 种 技 术 的 发 展 为 前 提 。<br />

一 、 宽 带 网 络 的 发 展<br />

真 正 的 云 存 储 系 统 将 会 是 一 个 多 区 域 分 布 、 遍 布 全 国 、 甚 至 于 遍 布 全 球 的 庞 大 公 用 系 统 ,<br />

使 用 者 需 要 通 过 ADSL、DDN 等 宽 带 接 入 设 备 来 连 接 云 存 储 , 而 不 是 通 过 FC、 SCSI 或 以 太 网<br />

线 缆 直 接 连 接 一 台 独 立 的 、 私 有 的 存 储 设 备 上 。 只 有 宽 带 网 络 得 到 充 足 的 发 展 , 使 用 者 才 有<br />

可 能 获 得 足 够 大 的 数 据 传 输 带 宽 , 实 现 大 量 容 量 数 据 的 传 输 , 真 正 享 受 到 云 存 储 服 务 , 否 则<br />

只 能 是 空 谈 。<br />

二 、 WEB2.0 技 术<br />

Web2.0 技 术 的 核 心 是 分 享 。 只 有 通 过 web2.0 技 术 , 云 存 储 的 使 用 者 才 有 可 能 通 过 PC、<br />

手 机 、 移 动 多 媒 体 等 多 种 设 备 , 实 现 数 据 、 文 档 、 图 片 和 视 音 频 等 内 容 的 集 中 存 储 和 资 料 共<br />

享 。Web2.0 技 术 的 发 展 使 得 使 用 者 的 应 用 方 式 和 可 得 服 务 更 加 灵 活 和 多 样 。<br />

三 、 应 用 存 储 的 发 展<br />

云 存 储 不 仅 仅 是 存 储 , 更 多 的 是 应 用 。 应 用 存 储 是 一 种 在 存 储 设 备 中 集 成 了 应 用 软 件 功<br />

能 的 存 储 设 备 , 它 不 仅 具 有 数 据 存 储 功 能 , 还 具 有 应 用 软 件 功 能 , 可 以 看 作 是 服 务 器 和 存 储<br />

设 备 的 集 合 体 。 应 用 存 储 技 术 的 发 展 可 以 大 量 减 少 云 存 储 中 服 务 器 的 数 量 , 从 而 降 低 系 统 建<br />

设 成 本 , 减 少 系 统 中 由 服 务 器 造 成 单 点 故 障 和 性 能 瓶 颈 , 减 少 数 据 传 输 环 节 , 提 供 系 统 性 能<br />

和 效 率 , 保 证 整 个 系 统 的 高 效 稳 定 运 行 。<br />

四 、 集 群 技 术 、 网 格 技 术 和 分 布 式 文 件 系 统<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


云 存 储 系 统 是 一 个 多 存 储 设 备 、 多 应 用 、 多 服 务 协 同 工 作 的 集 合 体 , 任 何 一 个 单 点 的 存<br />

储 系 统 都 不 是 云 存 储 。<br />

既 然 是 由 多 个 存 储 设 备 构 成 的 , 不 同 存 储 设 备 之 间 就 需 要 通 过 集 群 技 术 、 分 布 式 文 件 系<br />

统 和 网 格 计 算 等 技 术 , 实 现 多 个 存 储 设 备 之 间 的 协 同 工 作 , 使 多 个 的 存 储 设 备 可 以 对 外 提 供<br />

同 一 种 服 务 , 并 提 供 更 大 更 强 更 好 的 数 据 访 问 性 能 。 如 果 没 有 这 些 技 术 的 存 在 , 云 存 储 就 不<br />

可 能 真 正 实 现 , 所 谓 的 云 存 储 只 能 是 一 个 一 个 的 独 立 系 统 , 不 能 形 成 云 状 结 构 。<br />

五 、 CDN 内 容 分 发 、P2P 技 术 、 数 据 压 缩 技 术 、 重 复 数 据 删 除 技 术 、 数 据 加 密 技 术<br />

CDN 内 容 分 发 系 统 、 数 据 加 密 技 术 保 证 云 存 储 中 的 数 据 不 会 被 未 授 权 的 用 户 所 访 问 , 同<br />

时 , 通 过 各 种 数 据 备 份 和 容 灾 技 术 保 证 云 存 储 中 的 数 据 不 会 丢 失 , 保 证 云 存 储 自 身 的 安 全 和<br />

稳 定 。 如 果 云 存 储 中 的 数 据 安 全 得 不 到 保 证 , 想 来 也 没 有 人 敢 用 云 存 储 , 否 则 , 保 存 的 数 据<br />

不 是 很 快 丢 失 了 , 就 是 全 国 人 民 都 知 道 了 。<br />

六 、 存 储 虚 拟 化 技 术 、 存 储 网 络 化 管 理 技 术<br />

云 存 储 中 的 存 储 设 备 数 量 庞 大 且 分 布 在 多 不 同 地 域 , 如 何 实 现 不 同 厂 商 、 不 同 型 号 甚 至<br />

于 不 同 类 型 ( 如 FC 存 储 和 IP 存 储 ) 的 多 台 设 备 之 间 的 逻 辑 卷 管 理 、 存 储 虚 拟 化 管 理 和 多<br />

链 路 冗 余 管 理 将 会 是 一 个 巨 大 的 难 题 , 这 个 问 题 得 不 到 解 决 , 存 储 设 备 就 会 是 整 个 云 存 储 系<br />

统 的 性 能 瓶 颈 , 结 构 上 也 无 法 形 成 一 个 整 体 , 而 且 还 会 带 来 后 期 容 量 和 性 能 扩 展 难 等 问 题 。<br />

云 存 储 中 的 存 储 设 备 数 量 庞 大 、 分 布 地 域 广 造 成 的 另 外 一 个 问 题 就 是 存 储 设 备 运 营 管 理<br />

问 题 。 虽 然 这 些 问 题 对 云 存 储 的 使 用 者 来 讲 根 本 不 需 要 关 心 , 但 对 于 云 存 储 的 运 营 单 位 来 讲 ,<br />

却 必 须 要 通 过 切 实 可 行 和 有 效 的 手 段 来 解 决 集 中 管 理 难 、 状 态 监 控 难 、 故 障 维 护 难 、 人 力 成<br />

本 高 等 问 题 。 因 此 , 云 存 储 必 须 要 具 有 一 个 高 效 的 类 似 与 网 络 管 理 软 件 一 样 的 集 中 管 理 平 台 ,<br />

可 实 现 云 存 储 系 统 中 设 有 存 储 设 备 、 服 务 器 和 网 络 设 备 的 集 中 管 理 和 状 态 监 控 。<br />

第 六 节 分 布 式 并 行 文 件 系 统<br />

云 存 储 的 原 厂 商 现 在 虽 然 有 很 多 的 想 法 , 但 是 现 在 真 正 的 能 够 产 品 化 的 东 西 只 有 分 布 式<br />

并 行 文 件 系 统 ,<br />

计 算 机 硬 件 的 飞 速 发 展 , 计 算 机 的 性 能 不 断 提 高 , 而 其 价 格 日 益 下 降 。 人 们 越 来 越 倾 向 于 使<br />

用 高 性 价 比 的 分 布 式 系 统 。 今 年 来 分 布 式 式 得 到 了 空 前 的 发 展 , 比 如 集 群 计 算 ,peer-to-peer<br />

计 算 , 移 动 计 算 , 以 及 现 在 的 网 格 计 算 , 他 们 实 质 上 都 是 分 布 式 计 算 的 发 展 。 在 分 布 式 应 用<br />

中 文 件 的 管 理 , 文 件 共 享 一 直 是 提 高 分 布 式 性 能 的 重 要 指 标 之 一 , 也 是 一 个 久 经 不 衰 的 课<br />

题 。 在 实 质 应 用 中 , 人 们 要 求 具 有 高 性 能 , 高 可 靠 , 高 可 扩 展 的 文 件 系 统 满 足 当 今 诸 如 生 物<br />

计 算 , 天 气 预 报 和 流 媒 体 等 高 吞 吐 率 的 应 用 , 根 据 PVFS2 原 型 开 发 了 一 个 并 行 高 可 用 和 动 态<br />

扩 展 文 件 系 统 Handy。Handy 文 件 系 统 是 在 PVFS2 基 础 上 设 计 的 一 种 具 有 分 布 式 元 数 据 管 理<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


和 用 户 可 定 义 的 数 据 管 理 的 并 行 文 件 系 统 , 该 文 件 系 统 具 有 高 可 用 , 高 可 扩 展 等 特 征 。 从 现<br />

在 的 分 布 式 文 件 系 统 , 并 行 文 件 系 统 , 集 群 文 件 系 统 以 及 广 域 范 围 的 p2p 文 件 系 统 来 看 ,<br />

都 采 用 的 式 单 一 放 置 策 略 。 虽 然 这 些 文 件 系 统 具 有 高 性 能 、 高 可 用 、 可 扩 展 等 方 面 的 特 征 ,<br />

但 是 没 有 一 种 文 件 系 统 的 数 据 放 置 策 略 是 可 以 用 户 根 据 需 求 自 己 可 以 定 义 的 。<br />

2. 并 行 文 件 系 统 数 据 管 理 现 状<br />

并 行 文 件 系 统 不 论 是 在 国 内 还 是 在 国 外 都 开 发 了 很 多 系 统 , 比 较 流 行 的 主 要 有 国 内 中 科 院 计<br />

算 所 的 cosmos ; 国 外 的 有 zerba ,PVFS,CEFT-PVFS,CFS 等 。 这 些 并 行 文 件 系 统 基 本 包 含<br />

了 并 行 文 件 系 统 的 特 点 , 比 如 , 高 性 能 , 高 可 用 , 可 扩 展 , 数 据 与 元 数 据 分 开 管 理 等 特 点 。<br />

以 上 每 种 文 件 系 统 都 采 用 了 不 同 的 数 据 放 置 策 略 , 其 数 据 管 理 也 不 一 样 , 但 是 他 们 都 采 用 单<br />

一 的 数 据 放 置 管 理 策 略 方 式 。 下 面 将 就 这 几 个 文 件 系 统 的 数 据 管 理 描 述 如 下 :<br />

2.1.COSMOS<br />

在 COSMOS 中 , 所 有 的 存 储 节 点 被 划 分 为 多 个 stripe。 每 个 COSMOS<br />

文 件 存 在 某 个 stripe 中 ,Stripe 的 长 度 及 逻 辑 块 长 度 与 磁 盘 速 度 、 网 络 速<br />

度 、 应 用 程 序 的 文 件 访 问 模 式 有 关 , 系 统 可 以 调 节 。 这 种 数 据 放 置 策 略 具<br />

有 高 性 能 、 适 合 大 文 件 、 并 行 度 较 高 等 特 点 。 系 统 中 的 全 部 存 储 结 点 的 配<br />

置 磁 盘 被 独 立 组 织 成 一 到 多 个 分 组 (Stripe group), 每 个 分 组 有 一 个 或 多<br />

个 磁 盘 。 每 个 存 储 结 点 可 以 设 置 多 个 磁 盘 。 数 据 文 件 按 照 轮 转 方 法 对 应 到<br />

某 个 存 储 分 组 , 并 选 定 一 磁 盘 作 为 起 始 盘 , 文 件 的 各 个 条 块 按 轮 换 方 式 从<br />

起 始 点 开 始 依 次 分 派 到 组 中 的 各 个 磁 盘 上 。COSMOS 系 统 利 用 AIX 已 有 文 件<br />

系 统 JFS 来 实 现 对 磁 盘 数 据 文 件 的 存 储 。COSMOS 的 经 过 条 块 化 的 子 文 件 以<br />

一 般 的 JFS 文 件 形 式 直 接 存 储 在 本 地 磁 盘 , 避 免 了 直 接 管 理 磁 盘 , 但 增 加<br />

了 二 次 进 入 核 心 的 开 销 。<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


2.2.Zebra<br />

Zebra 是 一 个 含 有 多 个 节 点 的 网 络 文 件 系 统 , 其 目 的 是 提 高 文 件 的 高 吞<br />

吐 率 和 高 可 用 性 。Zebra 将 多 个 的 磁 盘 组 织 成 一 个 Raid3 的 磁 盘 阵 列 的 形<br />

式 , 将 数 据 分 片 , 然 后 将 分 片 数 据 放 置 到 不 同 的 磁 盘 上 , 用 一 个 节 点 负 责<br />

校 验 容 错 。 结 构 组 织 如 下<br />

2.3.PVFS<br />

PVFS 是 Clemson 大 学 开 发 的 一 种 并 行 文 件 系 统 , 该 文 件 系 统 就 要 静 态 扩<br />

展 , 高 性 能 , 多 用 户 接 口 等 特 点 。PVFS 的 数 据 管 理 采 用 数 据 分 片 , 多 个 管<br />

理 节 点 轮 转 放 置 分 片 数 据 的 方 法 。PVFS 的 数 据 分 片 大 小 固 定 。PVFS 的 数 据<br />

没 有 任 何 的 容 错 功 能 。 数 据 管 理 结 构 如 下 :<br />

2.4.CEFT-PVFS<br />

CEFT-PVFS 以 pvfs 为 基 础 , 改 造 PVFS 为 又 容 错 的 考 可 用 的 文<br />

件 系 统 。CEFT-PVFS 采 用 跟 pvfs 一 样 的 数 据 放 置 策 略 , 文 件 通 过<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


分 片 算 法 分 成 固 定 大 小 的 分 片 , 而 且 每 份 分 片 数 据 都 通 过 镜 像 的<br />

方 式 来 容 错 。<br />

图 5、CEFT-PVFS 的 数 据 管 理<br />

2.5、CFS<br />

CFS 是 麻 省 理 工 学 院 开 发 的 一 个 广 域 范 围 只 读 p2p 文 件 系 统 , 其 数 据 管<br />

理 是 通 过 hash 函 数 ISA-1 将 文 件 块 hash 得 到 I/O 节 点 , 通 过 底 层 的 chord<br />

来 定 位 该 节 点 , 最 后 通 过 dhash 的 IDA 算 法 , 将 文 件 块 划 分 成 14 个<br />

fragments, 这 些 fragements 都 不 相 同 , 任 取 7 个 fragments 就 可 以 通 过<br />

IDA 从 新 组 装 成 一 个 完 整 的 文 件 块 , 这 些 fragments 放 在 r 个 hash 节 点 的<br />

后 续 节 点 上 。CFS 的 保 证 了 数 据 的 较 高 可 用 性 和 数 据 的 负 载 平 衡 。<br />

CFS 的 数 据 管 理 虽 然 提 高 了 数 据 的 可 用 性 , 但 是 也 存 在 很 多 缺 点 , 例 如<br />

数 据 管 理 的 单 一 性 。CFS 节 点 的 崩 溃 , 可 能 会 花 大 量 的 时 间 取 从 它 的 后 续<br />

节 点 迁 移 数 据 。 在 并 行 文 件 系 统 中 迁 移 数 据 是 开 销 很 多 的 操 作 。 下 图 将 演<br />

示 CFS 的 数 据 管 理 。<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


CFS 数 据 管 理<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


什 么 是 Hadoop?<br />

Hadoop 是 apache 下 面 的 一 个 分 布 式 并 行 计 算 框 架 , 是 从 lunece 中 抽 取 出 来 的 一 个 框 架 。<br />

Hadoop 的 核 心 设 计 思 想 是 :MapReduce 和 HDFS,MapReduce 是 Google 提 出 的 一 个 软 件 架<br />

构 , 用 于 大 规 模 数 据 集 ( 大 于 1TB) 的 并 行 运 算 。 概 念 "Map( 映 射 )" 和 "Reduce( 化 简 )",<br />

和 他 们 的 主 要 思 想 , 都 是 从 函 数 式 编 程 语 言 借 来 的 , 还 有 从 矢 量 编 程 语 言 借 来 的 特 性 ;HDFS<br />

是 Hadoop Distributed File System 的 缩 写 , 即 :Hadoop 分 布 式 文 件 系 统 , 为 分 布 式 计 算 存 储<br />

提 供 底 层 支 持 。 注 :MapReduce (google mapreduce 论 文 点 击 这 里 ),GFS(Google File System)<br />

和 bigtable 是 google 的 三 大 核 心 技 术 。<br />

HadoopMapReduce 介 绍<br />

Map( 映 射 ) 和 reduce( 化 简 ) 是 分 开 处 理 的 ,map 是 将 一 个 任 务 分 解 为 多 个 任 务 执 行 ,reduce<br />

是 将 多 个 任 务 汇 总 起 来 得 到 想 要 的 结 果 。 把 一 个 list 拆 解 为 多 个 放 到 线 程 池 中 启 动 多 个 线 程 计 算 list<br />

中 值 , 然 后 把 多 个 任 务 返 回 的 结 果 合 并 为 一 个 总 的 结 果 其 实 就 是 一 个 简 单 的 MapReduce 的 应 用 。<br />

在 Hadoop 官 方 文 档 ( 单 击 这 里 ) 介 绍 了 HadoopMapReduce 的 三 个 步 骤 ,map( 主 要 是 分<br />

解 并 行 的 任 务 ),combine( 主 要 是 为 了 提 高 reduce 的 效 率 ),reduce( 把 处 理 后 的 结 果 再 汇 总 起<br />

来 )<br />

2.3.HDFS<br />

即 Hadoop Distributed File System (Hadoop 分 布 式 文 件 系 统 )<br />

HDFS 具 有 高 容 错 性 , 并 且 可 以 被 部 署 在 低 价 的 硬 件 设 备 之 上 。HDFS 很 适 合 那 些 有 大 数 据 集 的<br />

应 用 , 并 且 提 供 了 对 数 据 读 写 的 高 吞 吐 率 。HDFS 是 一 个 master/slave 的 结 构 , 就 通 常 的 部 署 来 说 ,<br />

在 master 上 只 运 行 一 个 Namenode, 而 在 每 一 个 slave 上 运 行 一 个 Datanode。<br />

HDFS 支 持 传 统 的 层 次 文 件 组 织 结 构 , 同 现 有 的 一 些 文 件 系 统 在 操 作 上 很 类 似 , 比 如 你 可 以 创<br />

建 和 删 除 一 个 文 件 , 把 一 个 文 件 从 一 个 目 录 移 到 另 一 个 目 录 , 重 命 名 等 等 操 作 。Namenode 管 理 着<br />

整 个 分 布 式 文 件 系 统 , 对 文 件 系 统 的 操 作 ( 如 建 立 、 删 除 文 件 和 文 件 夹 ) 都 是 通 过 Namenode 来 控<br />

制 。<br />

下 面 是 HDFS 的 结 构 :<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


从 上 面 的 图 中 可 以 看 出 ,Namenode,Datanode,Client 之 间 的 通 信 都 是 建 立 在 TCP/IP 的 基<br />

础 之 上 的 。 当 Client 要 执 行 一 个 写 入 的 操 作 的 时 候 , 命 令 不 是 马 上 就 发 送 到 Namenode,Client 首<br />

先 在 本 机 上 临 时 文 件 夹 中 缓 存 这 些 数 据 , 当 临 时 文 件 夹 中 的 数 据 块 达 到 了 设 定 的 Block 的 值 ( 默 认 是<br />

64M) 时 ,Client 便 会 通 知 Namenode,Namenode 便 响 应 Client 的 RPC 请 求 , 将 文 件 名 插 入 文 件<br />

系 统 层 次 中 并 且 在 Datanode 中 找 到 一 块 存 放 该 数 据 的 block, 同 时 将 该 Datanode 及 对 应 的 数 据 块<br />

信 息 告 诉 Client,Client 便 这 些 本 地 临 时 文 件 夹 中 的 数 据 块 写 入 指 定 的 数 据 节 点 。<br />

HDFS 采 取 了 副 本 策 略 , 其 目 的 是 为 了 提 高 系 统 的 可 靠 性 , 可 用 性 。HDFS 的 副 本 放 置 策 略 是 三<br />

个 副 本 , 一 个 放 在 本 节 点 上 , 一 个 放 在 同 一 机 架 中 的 另 一 个 节 点 上 , 还 有 一 个 副 本 放 在 另 一 个 不 同<br />

的 机 架 中 的 一 个 节 点 上 。 当 前 版 本 的 hadoop0.12.0 中 还 没 有 实 现 , 但 是 正 在 进 行 中 , 相 信 不 久 就<br />

可 以 出 来 了 。<br />

2.4.KFS<br />

KFS(KOSMOS DISTRIBUTED FILE SYSTEM), 一 个 类 似 GFS、Hadoop 中 HDFS 的 一 个 开 源<br />

的 分 布 式 文 件 系 统 。<br />

google 的 三 大 基 石 gfs,bigtable,map-reduce 相 对 应 的 开 源 产 品 gfs:kfs( 据 传 google 创 史 人 的<br />

同 窗 所 创 ),hdfs(hadoop 的 子 项 目 ) bigtable:hbase(hadoop 的 子 项 目 ),Hypertable( 从 hbase<br />

项 目 组 分 离 出 去 的 , 用 c++ 实 现 ) map-reduce:hadoop(apache 的 项 目 ,java 实 现 , 目 前 创 史<br />

人 在 yahoo 全 力 打 造 , 已 有 2000 个 以 上 的 节 点 并 行 计 算 的 规 模 )<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


Google 两 个 共 同 创 始 人 的 两 个 大 学 同 窗 ( 印 度 人 )Anand Rajaraman 和 Venky Harinarayan, 创<br />

立 的 一 个 新 的 搜 索 引 擎 Kosmix 最 近 捐 献 了 一 个 克 隆 GFS 的 文 件 系 统 KFS 项 目 。Hadoop 和<br />

Hypertable 这 两 个 项 目 也 开 始 支 持 KFS 来 做 底 层 的 存 储 。KFS 是 用 C++ 写 的 , 但 是 其 client 支 持<br />

C++,Java 和 Python。 那 么 KFS 到 底 有 什 么 特 性 呢 ?<br />

支 持 存 储 扩 充 ( 添 加 新 的 chunckserver, 系 统 自 动 感 知 )<br />

有 效 性 ( 复 制 机 制 保 证 文 件 有 效 性 )<br />

负 载 平 衡 ( 系 统 周 期 地 检 查 chunkservers 的 磁 盘 利 用 , 并 重 新 平 衡 chunkservers 的 磁 盘 利 用 ,HDFS<br />

现 在 还 没 有 支 持 )<br />

数 据 完 整 性 ( 当 要 读 取 数 据 时 检 查 数 据 的 完 整 性 , 如 果 检 验 出 错 使 用 另 外 的 备 份 覆 盖 当 前 的 数 据 )<br />

支 持 FUSE(HDFS 也 有 工 具 支 持 FUSE)<br />

使 用 契 约 ( 保 证 Client 缓 存 的 数 据 和 文 件 系 统 中 的 文 件 保 持 一 致 性 )<br />

HDFS 未 支 持 的 高 级 特 性 :<br />

支 持 同 一 文 件 多 次 写 入 和 Append, 不 像 HDFS 支 持 一 次 写 入 多 次 读 取 和 不 支 持 Append( 最 近 要 增<br />

加 Append, 但 是 遇 到 许 多 问 题 )。<br />

文 件 及 时 有 效 , 当 应 用 程 序 创 建 一 个 文 件 时 , 文 件 名 在 系 统 马 上 有 效 。 不 像 HDFS 文 件 只 当 输 入 流 关 闭<br />

时 才 在 系 统 中 有 效 , 因 此 , 如 果 应 用 程 序 在 关 闭 前 出 现 异 常 导 致 没 有 关 闭 输 入 流 , 数 据 将 会 丢 失 。<br />

2.5 Ceph<br />

Ceph 是 开 源 的 分 布 式 文 件 系 统 , 能 轻 松 的 管 理 多 PB 的 数 据 。 整 个 架 构 和 HDFS 相 似 。 动 态<br />

分 布 的 Metadata 管 理 是 他 的 一 个 特 点 。<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


第 四 章 数 据 库 与 存 储<br />

存 储 上 的 数 据 基 本 高 级 应 用 已 数 据 库 为 主 , 而 现 在 的 市 场 上 ORACLE 占 到 70% 以 上 的 份 额 。<br />

而 且 oracle 的 设 计 是 最 为 复 杂 的 , 理 解 oracle 数 据 库 以 后 , 学 习 其 他 的 MS SQL 和 sybase<br />

也 就 很 简 单 了 。<br />

第 一 节 Oracle 体 系 结 构<br />

1、 ORACLE 实 例 —— 包 括 内 存 结 构 与 后 台 进 程<br />

2、 ORACLE 数 据 库 —— 物 理 操 作 系 统 文 件 的 集 合<br />

3、 了 解 内 存 结 构 的 组 成<br />

4、 了 解 后 台 进 程 的 作 用<br />

5、 了 解 数 据 库 的 物 理 文 件<br />

6、 解 释 各 种 逻 辑 结 构<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


一 、ORACLE 实 例<br />

1、ORACLE 实 例<br />

System Global Area(SGA) 和 Background Process 称 为 数 据 库 的 实 例 。<br />

2、ORACLE 数 据 库<br />

从 物 理 上 看 是 由 一 系 列 物 理 文 件 的 集 合 ( 数 据 文 件 , 控 制 文 件 , 联 机 日 志 , 参 数 文 件 等 )<br />

3、 系 统 全 局 共 享 区 System Global Area(SGA)<br />

System Global Area 是 一 块 巨 大 的 共 享 内 存 区 域 , 他 被 看 做 是 Oracle 数 据 库 的 一 个 大 缓<br />

冲 池 , 这 里 的 数 据 可 以 被 ORACLE 的 各 个 进 程 共 用 。 其 大 小 可 以 通 过 如 下 语 句 查 看 :<br />

SQL> select * from v$sga;<br />

NAME VALUE<br />

-------------------- ---------<br />

Fixed Size 39816<br />

Variable Size 259812784<br />

Database Buffers 1.049E+09<br />

Redo Buffers 327680<br />

更 详 细 的 信 息 可 以 参 考 V$sgastat、V$buffer_pool<br />

主 要 包 括 以 下 几 个 部 分 :<br />

a、 共 享 池 (Shared pool)<br />

共 享 池 是 SGA 中 最 关 键 的 内 存 片 段 , 特 别 是 在 性 能 和 可 伸 缩 性 上 。 一 个 太 小 的 共 享 池 会<br />

扼 杀 性 能 , 使 系 统 停 止 , 太 大 的 共 享 池 也 会 有 同 样 的 效 果 , 将 会 消 耗 大 量 的 CPU 来 管 理 这 个<br />

共 享 池 。 不 正 确 的 使 用 共 享 池 只 会 带 来 灾 难 。 共 享 池 主 要 又 可 以 分 为 以 下 两 个 部 分 :<br />

SQL 语 句 缓 冲 (Library Cache)<br />

当 一 个 用 户 提 交 一 个 SQL 语 句 ,Oracle 会 将 这 句 SQL 进 行 分 析 (parse), 这 个 过 程 类 似<br />

于 编 译 , 会 耗 费 相 对 较 多 的 时 间 。 在 分 析 完 这 个 SQL,Oracle 会 把 他 的 分 析 结 果 给 保 存 在<br />

Shared pool 的 Library Cache 中 , 当 数 据 库 第 二 次 执 行 该 SQL 时 ,Oracle 自 动 跳 过 这 个 分 析<br />

过 程 , 从 而 减 少 了 系 统 运 行 的 时 间 。 这 也 是 为 什 么 第 一 次 运 行 的 SQL 比 第 二 次 运 行 的 SQL 要<br />

慢 一 点 的 原 因 。<br />

下 面 举 例 说 明 parse 的 时 间<br />

SQL> select count(*) from scpass ;<br />

COUNT(*)<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


----------<br />

243<br />

Elapsed: 00:00:00.08<br />

这 是 在 Share_pool 和 Data buffer 都 没 有 数 据 缓 冲 区 的 情 况 下 所 用 的 时 间<br />

SQL> alter system flush SHARED_POOL;<br />

System altered.<br />

清 空 Share_pool, 保 留 Data buffer<br />

SQL> select count(*) from scpass ;<br />

COUNT(*)<br />

----------<br />

243<br />

Elapsed: 00:00:00.02<br />

SQL> select count(*) from scpass ;<br />

COUNT(*)<br />

----------<br />

243<br />

Elapsed: 00:00:00.00<br />

从 两 句 SQL 的 时 间 差 上 可 以 看 出 该 SQL 的 Parse 时 间 约 为 00:00:00.02<br />

对 于 保 存 在 共 享 池 中 的 SQL 语 句 , 可 以 从 V$Sqltext、v$Sqlarea 中 查 询 到 , 对 于 编 程 者<br />

来 说 , 要 尽 量 提 高 语 句 的 重 用 率 , 减 少 语 句 的 分 析 时 间 。 一 个 设 计 的 差 的 应 用 程 序 可 以 毁 掉 整<br />

个 数 据 库 的 Share pool, 提 高 SQL 语 句 的 重 用 率 必 须 先 养 成 良 好 的 变 成 习 惯 , 尽 量 使 用 Bind<br />

变 量 。<br />

数 据 字 典 缓 冲 区 (Data Dictionary Cache)<br />

显 而 易 见 , 数 据 字 典 缓 冲 区 是 ORACLE 特 地 为 数 据 字 典 准 备 的 一 块 缓 冲 池 , 供 ORACLE<br />

内 部 使 用 , 没 有 什 么 可 以 说 的 。<br />

b、 块 缓 冲 区 高 速 缓 存 (Database Buffer Cache)<br />

这 些 缓 冲 是 对 应 所 有 数 据 文 件 中 的 一 些 被 使 用 到 的 数 据 块 。 让 他 们 能 够 在 内 存 中 进 行 操<br />

作 。 在 这 个 级 别 里 没 有 系 统 文 件 ,, 户 数 据 文 件 , 临 时 数 据 文 件 , 回 滚 段 文 件 之 分 。 也 就 是 任 何<br />

文 件 的 数 据 块 都 有 可 能 被 缓 冲 。 数 据 库 的 任 何 修 改 都 在 该 缓 冲 里 完 成 , 并 由 DBWR 进 程 将 修<br />

改 后 的 数 据 写 入 磁 盘 。<br />

这 个 缓 冲 区 的 块 基 本 上 在 两 个 不 同 的 列 表 中 管 理 。 一 个 是 块 的 “ 脏 ” 表 (Dirty List), 需 要 用 数<br />

据 库 块 的<br />

书 写 器 (DBWR) 来 写 入 , 另 外 一 个 是 不 脏 的 块 的 列 表 (Free List), 一 般 的 情 况 下 , 是 使 用 最<br />

近 最 少 使 用 (Least Recently Used,LRU) 算 法 来 管 理 。 块 缓 冲 区 高 速 缓 存 又 可 以 细 分 为 以 下 三<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


个 部 分 (Default pool,Keep pool,Recycle pool)。 如 果 不 是 人 为 设 置 初 始 化 参 数 (Init.ora),<br />

ORACLE 将 默 认 为 Default pool。 由 于 操 作 系 统 寻 址 能 力 的 限 制 , 不 通 过 特 殊 设 置 , 在 32 位<br />

的 系 统 上 , 块 缓 冲 区 高 速 缓 存 最 大 可 以 达 到 1.7G, 在 64 位 系 统 上 , 块 缓 冲 区 高 速 缓 存 最 大 可<br />

以 达 到 10G。<br />

c、 重 做 日 志 缓 冲 区 (Redo log buffer)<br />

重 做 日 志 文 件 的 缓 冲 区 , 对 数 据 库 的 任 何 修 改 都 按 顺 序 被 记 录 在 该 缓 冲 , 然 后 由 LGWR<br />

进 程 将 它 写 入 磁 盘 。 这 些 修 改 信 息 可 能 是 DML 语 句 , 如 (Insert,Update,Delete), 或 DDL 语 句 ,<br />

如 (Create,Alter,Drop 等 )。 重 做 日 志 缓 冲 区 的 存 在 是 因 为 内 存 到 内 存 的 操 作 比 较 内 存 到 硬 盘 的<br />

速 度 快 很 多 , 所 以 重 作 日 志 缓 冲 区 可 以 加 快 数 据 库 的 操 作 速 度 , 但 是 考 虑 的 数 据 库 的 一 致 性 与<br />

可 恢 复 性 , 数 据 在 重 做 日 志 缓 冲 区 中 的 滞 留 时 间 不 会 很 长 。 所 以 重 作 日 志 缓 冲 区 一 般 都 很 小 ,<br />

大 于 3M 之 后 的 重 作 日 志 缓 冲 区 已 经 没 有 太 大 的 实 际 意 义 。<br />

d、Java 程 序 缓 冲 区 (Java Pool)<br />

Java 的 程 序 区 ,Oracle 8I 以 后 ,Oracle 在 内 核 中 加 入 了 对 Java 的 支 持 。 该 程 序 缓 冲 区<br />

就 是 为 Java 程 序 保 留 的 。 如 果 不 用 Java 程 序 没 有 必 要 改 变 该 缓 冲 区 的 默 认 大 小 。<br />

e、 大 池 (Large Pool)<br />

大 池 的 得 名 不 是 因 为 大 , 而 是 因 为 它 用 来 分 配 大 块 的 内 存 , 处 理 比 共 享 池 更 大 的 内 存 , 在<br />

8.0 开 始 引 入 。<br />

下 面 对 象 使 用 大 池 :<br />

MTS—— 在 SGA 的 Large Pool 中 分 配 UGA<br />

语 句 的 并 行 查 询 (Parallel Executeion of Statements)—— 允 许 进 程 间 消 息 缓 冲 区 的 分 配 ,<br />

用 来 协 调 并 行 查 询 服 务 器<br />

备 份 (Backup)—— 用 于 RMAN 磁 盘 I/O 缓 存<br />

4、 后 台 进 程 (Background process)<br />

oracle 的 基 本 进 程<br />

后 台 进 程 是 Oracle 的 程 序 , 用 来 管 理 数 据 库 的 读 写 , 恢 复 和 监 视 等 工 作 。Server Process<br />

主 要 是 通 过 他 和 user process 进 行 联 系 和 沟 通 , 并 由 他 和 user process 进 行 数 据 的 交 换 。 在<br />

Unix 机 器 上 ,Oracle 后 台 进 程 相 对 于 操 作 系 统 进 程 , 也 就 是 说 , 一 个 Oracle 后 台 进 程 将 启 动<br />

一 个 操 作 系 统 进 程 ; 在 Windows 机 器 上 , Oracle 后 台 进 程 相 对 于 操 作 系 统 线 程 , 打 开 任 务 管<br />

理 器 , 我 们 只 能 看 到 一 个 ORACLE.EXE 的 进 程 , 但 是 通 过 另 外 的 工 具 , 就 可 以 看 到 包 含 在 这<br />

里 进 程 中 的 线 程 。<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


在 Unix 上 可 以 通 过 如 下 方 法 查 看 后 台 进 程 :<br />

ps –ef | grep ora_<br />

# ps -ef | grep ora_ | grep XCLUAT<br />

oracle 29431 1 0 Sep 02 2:02 ora_dbwr_SID<br />

oracle 29444 1 0 Sep 02 0:03 ora_ckpt_SID<br />

oracle 29448 1 0 Sep 02 2:42 ora_smon_SID<br />

oracle 29442 1 0 Sep 02 3:25 ora_lgwr_SID<br />

oracle 29427 1 0 Sep 02 0:01 ora_pmon_SID<br />

a、Oracle 系 统 有 5 个 基 本 进 程 他 们 是<br />

DBWR( 数 据 文 件 写 入 进 程 )<br />

LGWR( 日 志 文 件 写 入 进 程 )<br />

SMON( 系 统 监 护 进 程 )<br />

PMON( 用 户 进 程 监 护 进 程 )<br />

CKPT( 检 查 点 进 程 , 同 步 数 据 文 件 , 日 志 文 件 , 控 制 文 件 )<br />

b、DBWR<br />

将 修 改 过 的 数 据 缓 冲 区 的 数 据 写 入 对 应 数 据 文 件<br />

维 护 系 统 内 的 空 缓 冲 区<br />

这 里 指 出 几 个 容 易 错 误 的 概 念 :<br />

当 一 个 更 新 提 交 后 ,DBWR 把 数 据 写 到 磁 盘 并 返 回 给 用 户 提 交 完 成 .<br />

DBWR 会 触 发 CKPT 后 台 进 程<br />

DBWR 不 会 触 发 LGWR 进 程<br />

上 面 的 概 念 都 是 错 误 的 .<br />

DBWR 是 一 个 很 底 层 的 工 作 进 程 , 他 批 量 的 把 缓 冲 区 的 数 据 写 入 磁 盘 。 和 任 何 前 台 用 户 的<br />

进 程 几 乎 没 有 什 么 关 系 , 也 不 受 他 们 的 控 制 。 至 于 DBWR 会 不 会 触 发 LGWR 和 CKPT 进 程 ,<br />

我 们 将 在 下 面 几 节 里 讨 论 。<br />

DBWR 工 作 的 主 要 条 件 如 下<br />

DBWR 超 时<br />

系 统 中 没 有 多 的 空 缓 冲 区 用 来 存 放 数 据<br />

CKPT 进 程 触 发 DBWR 等<br />

c、LGWR<br />

将 重 做 日 志 缓 冲 区 的 数 据 写 入 重 做 日 志 文 件 ,LGWR 是 一 个 必 须 和 前 台 用 户 进 程 通 信 的 进<br />

程 。 当 数 据 被 修 改 的 时 候 , 系 统 会 产 生 一 个 重 做 日 志 并 记 录 在 重 做 日 志 缓 冲 区 内 。 这 个 重 做 日<br />

志 可 以 类 似 的 认 为 是 以 下 的 一 个 结 构 :<br />

SCN=000000001000<br />

数 据 块 ID<br />

对 象 ID=0801<br />

数 据 行 =02<br />

修 改 后 的 数 据 =0011<br />

提 交 的 时 候 ,LGWR 必 须 将 被 修 改 的 数 据 的 重 做 日 志 缓 冲 区 内 数 据 写 入 日 志 数 据 文 件 , 然<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


后 再 通 知 前 台 进 程 提 交 成 功 , 并 由 前 台 进 程 通 知 用 户 。 从 这 点 可 以 看 出 LGWR 承 担 了 维 护 系<br />

统 数 据 完 整 性 的 任 务 。<br />

LGWR 工 作 的 主 要 条 件 如 下<br />

用 户 提 交<br />

有 1/3 重 做 日 志 缓 冲 区 未 被 写 入 磁 盘<br />

有 大 于 1M 重 做 日 志 缓 冲 区 未 被 写 入 磁 盘<br />

超 时<br />

DBWR 需 要 写 入 的 数 据 的 SCN 号 大 于 LGWR 记 录 的 SCN 号 ,DBWR 触 发 LGWR 写<br />

入<br />

d、SMON<br />

工 作 主 要 包 含<br />

清 除 临 时 空 间<br />

在 系 统 启 动 时 , 完 成 系 统 实 例 恢 复<br />

聚 结 空 闲 空 间<br />

从 不 可 用 的 文 件 中 恢 复 事 务 的 活 动<br />

OPS 中 失 败 节 点 的 实 例 恢 复<br />

清 除 OBJ$ 表<br />

缩 减 回 滚 段<br />

使 回 滚 段 脱 机<br />

e、PMON<br />

主 要 用 于 清 除 失 效 的 用 户 进 程 , 释 放 用 户 进 程 所 用 的 资 源 。 如 PMON 将 回 滚 未 提 交 的 工<br />

作 , 释 放 锁 , 释 放 分 配 给 失 败 进 程 的 SGA 资 源 。<br />

f、CKPT<br />

同 步 数 据 文 件 , 日 志 文 件 和 控 制 文 件 , 由 于 DBWR/LGWR 的 工 作 原 理 , 造 成 了 数 据 文 件 ,<br />

日 志 文 件 , 控 制 文 件 的 不 一 至 , 这 就 需 要 CKPT 进 程 来 同 步 。CKPT 会 更 新 数 据 文 件 / 控 制 文<br />

件 的 头 信 息 。<br />

CKPT 工 作 的 主 要 条 件 如 下<br />

在 日 志 切 换 的 时 候<br />

数 据 库 用 immediate ,transaction , normal 选 项 shutdown 数 据 库 的 时 候<br />

根 据 初 始 话 文 件 LOG_CHECKPOINT_INTERVAL、LOG_CHECKPOINT_TIMEOUT、<br />

FAST_START_IO_TARGET 的 设 置 的 数 值 来 确 定<br />

用 户 触 发<br />

以 下 进 程 的 启 动 需 要 手 工 配 置<br />

g、ARCH<br />

当 数 据 库 以 归 档 方 式 运 行 的 时 候 ,Oracle 会 启 动 ARCH 进 程 , 当 重 做 日 志 文 件 被 写 满 时 ,<br />

日 志 文 件 进 行 切 换 , 旧 的 重 做 日 志 文 件 就 被 ARCH 进 程 复 制 到 一 个 / 多 个 特 定 的 目 录 / 远 程 机 器 。<br />

这 些 被 复 制 的 重 做 日 志 文 件 被 叫 做 归 档 日 志 文 件 。<br />

h、RECO<br />

负 责 解 决 分 布 事 物 中 的 故 障 。Oracle 可 以 连 接 远 程 的 多 个 数 据 库 , 当 由 于 网 络 问 题 , 有 些<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


事 物 处 于 悬 而 未 决 的 状 态 。RECO 进 程 试 图 建 立 与 远 程 服 务 器 的 通 信 , 当 故 障 消 除 后 ,RECO<br />

进 程 自 动 解 决 所 有 悬 而 未 决 的 会 话 。<br />

i、 服 务 进 程 Server Process<br />

服 务 进 程 的 分 类<br />

专 用 服 务 进 程 (Dedicated Server Process)<br />

一 个 服 务 进 程 对 应 一 个 用 户 进 程<br />

共 享 服 务 进 程 (MultiTreaded Server Process)<br />

一 个 服 务 进 程 对 应 多 个 用 户 进 程 , 轮 流 为 用 户 进 程 服 务 。<br />

PGA & UGA<br />

PGA = Process Global Area<br />

UGA = User Global Area<br />

他 保 存 了 用 户 的 变 量 、 权 限 、 堆 栈 、 排 序 空 间 等 用 户 信 息 , 对 于 专 用 服 务 器 进 程 ,UGA<br />

在 PGA 中 分 配 。 对 于 多 线 程 进 程 ,UGA 在 Large pool 中 分 配 。<br />

j、 用 户 进 程 User Process<br />

在 客 户 端 , 将 用 户 的 SQL 语 句 传 递 给 服 务 进 程<br />

5、 一 个 贯 穿 数 据 库 全 局 的 概 念 ---- 系 统 改 变 号 SCN(System Change Number)<br />

系 统 改 变 号 , 一 个 由 系 统 内 部 维 护 的 序 列 号 。 当 系 统 需 要 更 新 的 时 候 自 动 增 加 , 他 是 系 统<br />

中 维 持 数 据 的 一 致 性 和 顺 序 恢 复 的 重 要 标 志 。<br />

a. 查 询 语 句 不 会 使 SCN 增 加 , 就 算 是 同 时 发 生 的 更 新 , 数 据 库 内 部 对 应 的 SCN 也 是 不<br />

同 的 。 这 样 一 来 就 保 证 了 数 据 恢 复 时 候 的 顺 序 。<br />

b. 维 持 数 据 的 一 致 性 , 当 一<br />

ORACLE 数 据 库 文 件<br />

ORACLE 数 据 库 的 组 成 —— 物 理 操 作 系 统 文 件 的 集 合 。 主 要 包 括 以 下 几 种 。<br />

1、 控 制 文 件 ( 参 数 文 件 init.ora 记 录 了 控 制 文 件 的 位 置 )<br />

控 制 文 件 包 括 如 下 主 要 信 息<br />

数 据 库 的 名 字 , 检 查 点 信 息 , 数 据 库 创 建 的 时 间 戳<br />

所 有 的 数 据 文 件 , 联 机 日 志 文 件 , 归 档 日 志 文 件 信 息<br />

备 份 信 息 等<br />

有 了 这 些 信 息 ,Oracle 就 知 道 那 些 文 件 是 数 据 文 件 , 现 在 的 重 做 日 志 文 件 是 哪 些 , 这 些 都<br />

是 系 统 启 动 和 运 行 的 基 本 条 件 , 所 以 他 是 Oracle 运 行 的 根 本 。 如 果 没 有 控 制 文 件 系 统 是 不 可<br />

能 启 动 的 。 控 制 文 件 是 非 常 重 要 的 , 一 般 采 用 多 个 镜 相 复 制 来 保 护 控 制 文 件 , 或 采 用 RAID 来<br />

保 护 控 制 文 件 。 控 制 文 件 的 丢 失 , 将 使 数 据 库 的 恢 复 变 的 很 复 杂 。<br />

控 制 文 件 信 息 可 以 从 V$Controlfile 中 查 询 获 得<br />

2、 数 据 文 件 ( 数 据 文 件 的 详 细 信 息 记 载 在 控 制 文 件 中 )<br />

可 以 通 过 如 下 方 式 查 看 数 据 文 件<br />

SQL> select name from v$datafile;<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


NAME<br />

---------------------------------------------<br />

/u05/dbf/PROD/system_01.dbf<br />

/u06/dbf/PROD/temp_01.dbf<br />

/u04/dbf/PROD/users_01.dbf<br />

/u09/dbf/PROD/rbs_01.dbf<br />

/u06/dbf/PROD/applsys_indx_01.dbf<br />

/u05/dbf/PROD/applsys_data_01.dbf<br />

从 以 上 可 以 看 出 , 数 据 文 件 大 致 可 以 分 为 以 下 几 类 :<br />

i. 系 统 数 据 文 件 (system_01.dbf)<br />

存 放 系 统 表 和 数 据 字 典 , 一 般 不 放 用 户 的 数 据 , 但 是 用 户 脚 本 , 如 过 程 , 函 数 , 包 等 却 是<br />

保 存 在 数 据 字 典 中 的 。<br />

名 词 解 释 : 数 据 字 典 数 据 字 典 是 一 些 系 统 表 或 视 图 , 他 存 放 系 统 的 信 息 , 他 包 括 数 据 库<br />

版 本 , 数 据 文 件 信 息 , 表 与 索 引 等 段 信 息 , 系 统 的 运 行 状 态 等 各 种 和 系 统 有 关 的 信 息 和 用 户 脚<br />

本 信 息 。 数 据 库 管 理 员 可 以 通 过 对 数 据 字 典 的 查 询 , 就 可 以 了 解 到 Oracle 的 运 行 状 态 。<br />

ii. 回 滚 段 文 件 (rbs_01.dbf)<br />

如 果 数 据 库 进 行 对 数 据 的 修 改 , 那 么 就 必 须 使 用 回 滚 段 , 回 滚 段 是 用 来 临 时 存 放 修 改 前 的<br />

数 据 (Before Image)。 回 滚 段 通 常 都 放 在 一 个 单 独 的 表 空 间 上 ( 回 滚 表 空 间 ), 避 免 表 空 间 碎 片<br />

化 , 这 个 表 空 间 包 含 的 数 据 文 件 就 是 回 滚 数 据 文 件 。<br />

iii. 临 时 数 据 文 件 (temp_01.dbf)<br />

主 要 存 放 用 户 的 排 序 等 临 时 数 据 , 与 回 滚 段 相 似 , 临 时 段 也 容 易 引 起 表 空 间 碎 片 化 , 而 且<br />

没 有 办 法 在 一 个 永 久 表 空 间 上 开 辟 临 时 段 , 所 以 就 必 须 有 一 个 临 时 表 空 间 , 它 所 包 含 的 数 据 文<br />

件 就 是 临 时 数 据 文 件 , 主 要 用 于 不 能 在 内 存 上 进 行 的 排 序 操 作 。 我 们 必 须 为 用 户 指 定 一 个 临 时<br />

表 空 间 。<br />

iv. 用 户 数 据 文 件 (/applsys_data_01.dbf ,applsys_indx_01.dbf)<br />

存 放 用 户 数 据 , 这 里 列 举 了 两 类 常 见 的 用 户 型 数 据 , 一 般 数 据 和 索 引 数 据 , 一 般 来 说 , 如<br />

果 条 件 许 可 的 话 , 可 以 考 虑 放 在 不 同 的 磁 盘 上 。<br />

3、 重 做 日 志 文 件 ( 联 机 重 做 日 志 )<br />

用 户 对 数 据 库 进 行 的 任 何 操 作 都 会 记 录 在 重 做 日 志 文 件 。 在 了 解 重 做 日 志 之 前 必 须 了 解 重<br />

做 日 志 的 两 个 概 念 , 重 做 日 志 组 和 重 做 日 志 组 成 员 (Member), 一 个 数 据 库 中 至 少 要 有 两 个 日<br />

志 组 文 件 , 一 组 写 完 后 再 写 另 一 组 , 即 轮 流 写 。 每 个 日 志 组 中 至 少 有 一 个 日 志 成 员 , 一 个 日 志<br />

组 中 的 多 个 日 志 成 员 是 镜 相 关 系 , 有 利 于 日 志 文 件 的 保 护 , 因 为 日 志 文 件 的 损 坏 , 特 别 是 当 前<br />

联 机 日 志 的 损 坏 , 对 数 据 库 的 影 响 是 巨 大 的 。<br />

联 机 日 志 组 的 交 换 过 程 叫 做 切 换 , 需 要 特 别 注 意 的 是 , 日 志 切 换 在 一 个 优 化 效 果 不 好 的 数<br />

据 库 中 会 引 起 临 时 的 “ 挂 起 ”。 挂 起 大 致 有 两 种 情 况 :<br />

在 归 档 情 况 下 , 需 要 归 档 的 日 志 来 不 及 归 档 , 而 联 机 日 志 又 需 要 被 重 新 利 用<br />

检 查 点 事 件 还 没 有 完 成 ( 日 志 切 换 引 起 检 查 点 ), 而 联 机 日 志 需 要 被 重 新 利 用<br />

解 决 这 种 问 题 的 常 用 手 段 是 :<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


i. 增 加 日 志 组<br />

ii. 增 大 日 志 文 件 成 员 大 小<br />

通 过 v$log 可 以 查 看 日 志 组 ,v$logfile 可 以 查 看 具 体 的 成 员 文 件 。<br />

4、 归 档 日 志 文 件<br />

Oracle 可 以 运 行 在 两 种 模 式 之 中 , 归 档 模 式 和 不 归 档 模 式 。 如 果 不 用 归 档 模 式 , 当 然 , 你<br />

就 不 会 有 归 档 日 志 , 但 是 , 你 的 系 统 将 不 会 是 一 个 实 用 系 统 , 特 别 是 不 能 用 于 生 产 系 统 , 因 为<br />

你 可 能 会 丢 失 数 据 。 但 是 在 归 档 模 式 中 , 为 了 保 存 用 户 的 所 有 修 改 , 在 重 做 日 志 文 件 切 换 后 和<br />

被 覆 盖 之 间 系 统 将 他 们 另 外 保 存 成 一 组 连 续 的 文 件 系 列 , 该 文 件 系 列 就 是 归 档 日 志 文 件 。<br />

有 人 或 许 会 说 , 归 档 日 志 文 件 占 领 我 大 量 的 硬 盘 空 间 , 其 实 , 具 体 想 一 想 , 你 是 愿 意 浪 费<br />

一 点 磁 盘 空 间 来 保 护 你 的 数 据 , 还 是 愿 意 丢 失 你 的 数 据 呢 ? 显 而 义 见 , 我 们 需 要 保 证 我 们 的 数<br />

据 的 安 全 性 。 其 实 , 归 档 并 不 是 一 直 占 领 你 的 磁 盘 空 间 , 你 可 以 把 她 备 份 到 磁 带 上 , 或 则 删 除<br />

上 一 次 完 整 备 份 前 的 所 有 日 志 文 件 。<br />

5、 初 始 化 参 数 文 件<br />

initSID.ora 或 init.ora 文 件 , 因 为 版 本 的 不 一 样 , 其 位 置 也 可 能 会 不 一 样 。 在 8i 中 , 通 常<br />

位 于 $ORACLE_HOME/admin//Pfile 下 , 初 始 化 文 件 记 载 了 许 多 数 据 库 的 启 动 参 数 , 如 内 存 ,<br />

控 制 文 件 , 进 程 数 等 , 在 数 据 库 启 动 的 时 候 加 载 (Nomount 时 加 载 ), 初 始 化 文 件 记 录 了 很 多<br />

重 要 参 数 , 对 数 据 库 的 性 能 影 响 很 大 , 如 果 不 是 很 了 解 , 不 要 轻 易 乱 改 写 , 否 则 会 引 起 数 据 库<br />

性 能 下 降 。<br />

6、 其 他 文 件<br />

i . 密 码 文 件<br />

用 于 Oracle 的 具 有 sysdba 权 限 用 户 的 认 证 .<br />

ii. 日 志 文 件<br />

报 警 日 志 文 件 (alert.log 或 alrt.ora)<br />

记 录 数 据 库 启 动 , 关 闭 和 一 些 重 要 的 出 错 信 息 。 数 据 库 管 理 员 应 该 经 常 检 查 这 个 文 件 , 并<br />

对 出 现 的 问 题 作 出 即 使 的 反 应 。 你 可 以 通 过 以 下 SQL 找 到 他 的 路 径 select value from<br />

v$PARAMETER where name ="background_dump_dest";<br />

后 台 或 用 户 跟 踪 文 件<br />

系 统 进 程 或 用 户 进 程 出 错 前 写 入 的 信 息 , 一 般 不 可 能 读 懂 , 可 以 通 过 ORACLE 的 TKPROF<br />

工 具 转 化 为 可 以 读 懂 的 格 式 。 对 于 系 统 进 程 产 生 的 跟 踪 文 件 与 报 警 日 志 文 件 的 路 径 一 样 , 用 户<br />

跟 踪 文 件 的 路 径 , 你 可 以 通 过 以 下 SQL 找 到 他 的 路 径 select value from v$PARAMETER where<br />

name ="user_dump_dest";<br />

第 四 节 ORACLE 逻 辑 结 构<br />

1、 表 空 间 (tablespace)<br />

表 空 间 是 数 据 库 中 的 基 本 逻 辑 结 构 , 一 系 列 数 据 文 件 的 集 合 。 一 个 表 空 间 可 以 包 含 多 个 数<br />

据 文 件 , 但 是 一 个 数 据 文 件 只 能 属 于 一 个 表 空 间 。<br />

2、 段 (Segment)<br />

段 是 对 象 在 数 据 库 中 占 用 的 空 间 , 虽 然 段 和 数 据 库 对 象 是 一 一 对 应 的 , 但 段 是 从 数 据 库 存<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


储 的 角 度 来 看 的 。 一 个 段 只 能 属 于 一 个 表 空 间 , 当 然 一 个 表 空 间 可 以 有 多 个 段 。<br />

表 空 间 和 数 据 文 件 是 物 理 存 储 上 的 一 对 多 的 关 系 , 表 空 间 和 段 是 逻 辑 存 储 上 的 一 对 多 的 关<br />

系 , 段 不 直 接 和 数 据 文 件 发 生 关 系 。 一 个 段 可 以 属 于 多 个 数 据 文 件 , 关 于 段 可 以 指 定 扩 展 到 哪<br />

个 数 据 文 件 上 面 。<br />

段 基 本 可 以 分 为 以 下 四 种<br />

数 据 段 (Data Segment)<br />

索 引 段 (Index Segment)<br />

回 滚 段 (Rollback Segment)<br />

临 时 段 (Temporary Segment)<br />

3、 区 间 (Extent)<br />

关 于 Extent 的 翻 译 有 多 种 解 释 , 有 的 译 作 扩 展 , 有 的 译 作 盘 区 , 我 这 里 通 常 译 为 区 间 。<br />

在 一 个 段 中 可 以 存 在 多 个 区 间 , 区 间 是 为 数 据 一 次 性 预 留 的 一 个 较 大 的 存 储 空 间 , 直 到 那 个 区<br />

间 被 用 满 , 数 据 库 会 继 续 申 请 一 个 新 的 预 留 存 储 空 间 , 即 新 的 区 间 , 一 直 到 段 的 最 大 区 间 数 (Max<br />

Extent) 或 没 有 可 用 的 磁 盘 空 间 可 以 申 请 。 在 ORACLE8i 以 上 版 本 , 理 论 上 一 个 段 可 以 无 穷 个<br />

区 间 , 但 是 多 个 区 间 对 ORACLE 却 是 有 性 能 影 响 的 ,ORACLE 建 议 把 数 据 分 布 在 尽 量 少 的 区<br />

间 上 , 以 减 少 ORACLE 的 管 理 与 磁 头 的 移 动 。<br />

4、Oracle 数 据 块 (Block)<br />

ORACLE 最 基 本 的 存 储 单 位 , 他 是 OS 数 据 块 的 整 数 倍 。ORACLE 的 操 作 都 是 以 块 为 基<br />

本 单 位 , 一 个 区 间 可 以 包 含 多 个 块 ( 如 果 区 间 大 小 不 是 块 大 小 的 整 数 倍 ,ORACLE 实 际 也 扩<br />

展 到 块 的 整 数 倍 )。<br />

5、 基 本 表 空 间 介 绍<br />

a. 系 统 表 空 间<br />

主 要 存 放 数 据 字 典 和 内 部 系 统 表 基 表<br />

查 看 数 据 数 据 字 典 的 SQL<br />

select * from dict<br />

查 看 内 部 系 统 表 的 SQL<br />

select * from v$fixed_view_definition<br />

DBA 对 系 统 的 系 统 表 中 的 数 据 字 典 必 须 有 一 个 很 深 刻 的 了 解 , 他 们 必 须 准 备 一 些 基 础 的<br />

SQL 语 句 , 通 过 这 些 SQL 可 以 立 即 了 解 系 统 的 状 况 和 数 据 库 的 状 态 , 这 些 基 本 的 SQL 包 括<br />

系 统 的 剩 余 空 间<br />

系 统 的 SGA<br />

状 态 系 统 的 等 待<br />

用 户 的 权 限<br />

当 前 的 用 户 锁<br />

缓 冲 区 的 使 用 状 况 等<br />

在 成 为 DBA 的 道 路 上 我 们 不 建 议 你 过 分 的 依 赖 于 OEM/Quest 等 优 秀 的 数 据 库 管 理 工<br />

具 , 因 为 他 们 不 利 于 你 对 数 据 数 据 字 典 的 理 解 ,SQL 语 句 可 以 完 成 几 乎 全 部 的 数 据 库 管 理 工 作 。<br />

大 量 的 读 少 量 的 写 是 该 表 空 间 的 一 个 显 著 的 特 点 。<br />

b. 临 时 表 空 间 .<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


临 时 表 空 间 顾 名 思 义 是 用 来 存 放 临 时 数 据 的 , 例 如 排 序 操 作 的 临 时 空 间 , 他 的 空 间 会 在 下<br />

次 系 统 启 动 的 时 候 全 部 被 释 放 。<br />

c. 回 滚 段 表 空 间<br />

i. 回 滚 段 在 系 统 中 的 作 用<br />

当 数 据 库 进 行 更 新 插 入 删 除 等 操 作 的 时 候 , 新 的 数 据 被 更 新 到 原 来 的 数 据 文 件 , 而 旧 的 数<br />

据 (Before Image) 就 被 放 到 回 滚 段 中 , 如 果 数 据 需 要 回 滚 , 那 么 可 以 从 回 滚 段 将 数 据 再 复 制 到<br />

数 据 文 件 中 。 来 完 成 数 据 的 回 滚 。 在 系 统 恢 复 的 时 候 , 回 滚 段 可 以 用 来 回 滚 没 有 被 commit 的<br />

数 据 , 解 决 系 统 的 一 至 性 。<br />

回 滚 段 在 什 么 情 况 下 都 是 大 量 的 写 , 一 般 是 少 量 读 , 因 此 建 议 把 回 滚 段 单 独 出 来 放 在 一 个<br />

单 独 的 设 备 ( 如 单 独 的 磁 盘 或 RAID), 以 减 少 磁 盘 的 IO 争 用 。<br />

ii. 回 滚 段 的 工 作 方 式<br />

一 个 回 滚 表 空 间 可 以 被 划 分 成 多 个 回 滚 段 .<br />

一 个 回 滚 段 可 以 保 存 多 个 会 话 的 数 据 .<br />

回 滚 段 是 一 个 圆 形 的 数 据 模 型<br />

假 设 回 滚 段 由 4 个 区 间 组 成 , 他 们 的 使 用 顺 序 就 是 区 间 1à 区 间 2à 区 间 3à 区 间 4à 区 间<br />

1。 也 就 是 说 , 区 间 是 可 以 循 环 使 用 的 , 当 区 间 4 到 区 间 1 的 时 候 , 区 间 1 里 面 的 会 话 还 没 有<br />

结 束 , 区 间 4 用 完 后 就 不 能 再 用 区 间 1, 这 时 系 统 必 须 分 配 区 间 5, 来 继 续 为 其 他 会 话 服 务 服 务 。<br />

我 们 分 析 一 个 Update 语 句 的 完 成<br />

1. 用 户 提 交 一 个 Update 语 句<br />

2. Server Process 检 查 内 存 缓 冲 .<br />

如 果 没 有 该 数 据 块 的 缓 冲 , 则 从 磁 盘 读 入<br />

i. 如 果 没 有 内 存 的 有 效 空 间 ,DBWR 被 启 动 将 未 写 入 磁 盘 的 脏 缓 冲 写 入 磁 盘<br />

ii. 如 果 有 有 效 空 间 , 则 读 入<br />

3. 在 缓 冲 内 更 新 数 据<br />

i. 申 请 一 个 回 滚 段 入 口 , 将 旧 数 据 写 如 回 滚 段<br />

ii. 加 锁 并 更 新 数 据<br />

iii. 并 在 同 时 将 修 改 记 录 在 Redo log buffer 中<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


第 二 节 Oracle 优 化 与 存 储 配 置 的 关 系<br />

决 定 应 该 赋 予 数 据 库 什 么 样 的 存 储 和 配 置 , 已 经 成 为 一 项 杂 乱 无 章 的 工 作 ,<br />

这 种 现 象 我 见 得 多 了 。 数 据 库 工 程 师 一 般 都 是 数 据 库 的 专 家 , 而 对 于 存 储 配 置<br />

的 低 层 细 节 几 乎 一 无 所 知 。 另 外 存 储 管 理 员 和 工 程 师 也 往 往 不 知 道 数 据 库 如 何<br />

利 用 下 层 的 存 储 , 以 及 数 据 库 、 索 引 文 件 、 记 录 文 件 , 当 然 还 有 文 件 系 统 和 卷<br />

管 理 器 的 需 求 和 最 佳 配 置 又 是 什 么 。<br />

这 往 往 造 成 了 存 储 资 源 利 用 率 低 , 增 加 了 整 体 成 本 , 导 致 性 能 降 低 甚 至 可<br />

能 无 法 满 足 你 的 需 求 , 此 外 预 算 也 总 是 很 紧 张 , 而 管 理 上 又 要 求 有 效 地 利 用 可<br />

获 得 的 预 算 。 本 文 将 解 决 数 据 库 管 理 员 和 存 储 工 程 师 在 解 决 架 构 问 题 而 进 行 协<br />

作 时 的 一 些 问 题 。<br />

数 据 库 与 存 储 架 构 配 置<br />

组 件<br />

大 部 分 数 据 库 的 端 到 端 存 储 架 构 所 需 硬 件 和 软 件 如 下 :<br />

数 据 库<br />

* 控 制 文 件 (Control file)<br />

* 表 空 间 (Table space)<br />

* 索 引 文 件 (Index file)<br />

* 重 做 日 志 ( 亦 称 在 线 日 志 ,Redo log)<br />

操 作 系 统<br />

文 件 系 统 和 卷 管 理 器 ( 如 果 数 据 库 运 行 在 裸 设 备 上 , 这 一 项 可 能 没 有 关 系 )<br />

主 机 总 线 适 配 器 (HBA)<br />

存 储 硬 件<br />

以 上 每 一 部 分 都 拥 有 多 个 组 件 , 具 有 多 种 特 性 和 功 能 , 对 整 体 性 能 影 响 显<br />

著 。<br />

数 据 库<br />

数 据 库 应 用 本 身 具 有 多 重 特 性 和 功 能 , 必 须 加 以 考 虑 。Oracle 的 组 件 如 下 :<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


控 制 文 件 ---- 记 录 数 据 库 的 物 理 结 构 , 用 于 激 活 数 据 库<br />

表 空 间 ---- 来 自 数 据 库 各 行 各 列 的 实 际 数 据<br />

索 引 文 件 / 空 间 ----Oracle 中 并 不 需 要 索 引 , 不 过 大 型 数 据 库 总 会 用 到 索<br />

引 , 因 为 在 数 据 库 中 进 行 查 找 时 , 索 引 可 以 大 幅 提 升 查 找 速 度<br />

重 做 日 志 ---- 被 激 活 的 数 据 库 请 求 , 允 许 你 在 数 据 库 崩 溃 后 进 行 重 建 并 重<br />

新 启 动 ( 这 些 日 志 本 质 上 类 似 于 文 件 系 统 日 志 )<br />

因 为 上 述 组 件 都 有 不 同 类 型 的 访 问 模 式 , 所 以 每 种 文 件 类 型 均 被 存 储 在 不<br />

同 的 文 件 系 统 中 , 并 有 调 节 选 项 。 其 它 数 据 库 也 拥 有 相 似 的 文 件 类 型 , 需 要 以<br />

相 似 的 方 式 考 虑 。<br />

控 制 文 件<br />

大 部 分 数 据 库 都 建 议 使 用 多 个 控 制 文 件 以 确 保 可 靠 性 。 控 制 文 件 并 不 需 要<br />

常 写 常 读 , 不 过 你 必 须 确 定 各 文 件 被 放 置 在 不 同 的 RAID 集 上 , 适 用 于 不 同 的<br />

RAID 控 制 器 。<br />

表 空 间<br />

表 空 间 一 般 是 数 据 库 中 量 最 大 的 数 据 。 当 读 取 列 上 的 大 表 时 , 表 空 间 可 以<br />

由 更 大 的 I/O 请 求 访 问 。 根 据 大 小 和 更 新 频 率 的 不 同 , 表 空 间 常 常 位 于 更 大 的<br />

数 据 条 带 化 RAID-5 上 , 以 便 获 得 较 RAID-1 更 高 的 密 度 和 提 升 的 性 能 。<br />

索 引 文 件 / 空 间<br />

在 许 多 数 据 库 中 , 索 引 文 件 是 被 访 问 频 率 最 高 的 数 据 。 查 找 索 引 文 件 有 可<br />

能 需 要 很 大 的 IOPS( 每 秒 I/O 操 作 )。 另 外 , 有 时 候 数 据 库 被 重 新 索 引 , 这 在 计<br />

算 上 非 常 密 集 , 并 且 需 要 大 量 的 I/O 带 宽 。 因 为 数 据 库 和 所 需 的 查 找 类 型 不 同 ,<br />

索 引 空 间 也 许 会 很 大 , 一 般 来 说 , 根 据 传 统 的 UNIX 文 件 尺 寸 , 索 引 文 件 的 大 小<br />

为 2 GB。<br />

重 做 日 志<br />

重 做 日 志 文 件 中 存 放 了 各 种 记 录 , 你 可 以 撤 销 对 数 据 库 的 各 种 操 作 , 这 些<br />

被 称 为 重 做 记 录 。 重 做 记 录 用 于 循 环 缓 冲 器 中 , 因 为 它 一 般 是 小 I/O, 所 以 用<br />

RAID-1 就 不 错 。 由 于 需 要 两 个 或 以 上 的 重 做 日 志 文 件 , 通 常 将 日 志 文 件 放 在 不<br />

同 的 RAID-1 卷 上 。<br />

操 作 系 统<br />

数 据 库 一 般 都 需 要 具 备 操 作 系 统 的 一 些 特 性 和 功 能 , 如 共 享 内 存 和 标 志 等 。<br />

另 外 , 数 据 库 也 经 常 利 用 计 算 机 内 大 量 的 内 存 , 这 通 常 由 改 变 数 据 库 中 的 可 调<br />

参 数 来 实 现 。<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


在 许 多 操 作 系 统 中 ,I/O 请 求 的 大 小 限 制 在 256 KB 或 128 KB, 不 能 改 变 ,<br />

所 以 如 果 必 须 对 存 储 和 操 作 系 统 完 成 更 多 的 请 求 , 就 会 影 响 到 I/O 性 能 。<br />

文 件 系 统 和 卷 管 理 器<br />

架 构 决 策 中 最 重 要 的 事 情 之 一 就 是 为 每 个 数 据 库 组 件 确 定 最 理 想 的 卷 管 理<br />

器 和 文 件 系 统 设 置 , 对 于 每 种 类 型 的 I/O, 你 可 能 希 望 进 行 不 同 的 设 置 , 请 考<br />

虑 以 下 的 I/O 类 型 :<br />

长 和 短 的 连 续 块<br />

长 和 短 的 随 机 块<br />

长 和 短 的 多 重 数 据 流 块<br />

所 有 的 读<br />

所 有 的 写<br />

多 线 程<br />

对 所 有 这 些 类 型 的 I/O 来 说 , 只 有 一 组 设 置 的 文 件 系 统 表 现 得 都 不 好 , 而<br />

且 我 敢 说 对 于 上 述 任 何 两 种 类 型 的 I/O 来 说 , 只 有 一 组 可 调 参 数 的 文 件 系 统 也<br />

无 法 做 好 , 也 不 可 能 通 过 改 变 参 数 来 提 升 性 能 。<br />

设 计 中 要 确 定 的 两 个 关 键 因 素 是 :<br />

1. 对 于 所 要 处 理 的 I/O 类 型 , 什 么 是 最 好 的 卷 管 理 器 和 文 件 系 统<br />

2. 对 于 该 文 件 系 统 和 卷 管 理 器 , 什 么 又 是 最 好 的 可 调 参 数<br />

几 年 前 我 曾 做 过 一 个 数 据 库 , 由 于 一 些 原 因 而 无 法 进 行 扩 展 , 不 过 我 认 为<br />

其 中 最 主 要 的 原 因 是 RAID 缓 存 在 进 行 索 引 查 找 时 未 得 到 有 效 利 用 。RAID 的 读<br />

访 问 率 小 于 20%, 而 且 我 认 为 大 部 分 是 不 规 则 的 连 续 读 ( 先 对 几 个 请 求 连 续 读 ,<br />

然 后 随 机 跳 过 几 个 , 又 开 始 连 续 读 )。<br />

检 查 卷 管 理 器 后 , 我 发 现 了 问 题 所 在 。 每 个 文 件 系 统 有 32 个 LUN( 逻 辑 单<br />

元 号 ), 每 个 LUN 为 8 GB。 文 件 系 统 上 的 数 据 条 设 置 为 32 KB, 与 RAID 分 配 相<br />

符 。 每 个 索 引 文 件 是 2 GB。<br />

考 虑 到 RAID 缓 存 的 工 作 方 式 , 你 必 须 先 读 两 个 连 续 块 再 读 第 三 个 块 , 这 是<br />

常 用 的 算 法 , 因 此 在 下 一 个 I/O 到 达 缓 存 之 前 , 需 要 32 KB*32 LUN*2, 即 2 MB<br />

的 连 续 读 数 据 。<br />

RAID 缓 存 利 用 率 如 此 低 下 并 不 奇 怪 。 客 户 被 告 知 他 们 有 两 个 办 法 提 升 性<br />

能 , 一 是 为 卷 管 理 器 数 据 条 分 配 2 GB, 这 样 每 个 索 引 文 件 均 被 连 续 分 配 ; 二 是<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


使 用 另 一 种 文 件 系 统 , 可 以 使 数 据 进 行 循 环 而 不 是 条 带 化 。 循 环 状 态 下 , 每 个<br />

开 放 的 系 统 请 求 都 会 被 分 配 给 另 一 个 LUN, 并 且 被 打 开 的 文 件 中 所 有 数 据 也 都<br />

会 被 分 配 在 那 个 LUN 上 。<br />

当 我 们 使 用 循 环 分 配 方 法 和 读 缓 存 测 试 这 种 配 置 时 , 访 问 率 从 20% 上 升 到<br />

80%, 性 能 也 超 过 了 当 时 客 户 的 要 求 。<br />

主 机 总 线 适 配 器 (HBA)<br />

即 使 价 值 2,000 美 元 的 HBA 也 会 对 大 型 数 据 库 的 性 能 造 成 重 大 影 响 。 对 HBA<br />

要 考 虑 两 个 地 方 :<br />

1. 未 处 理 的 I/O 请 求 量<br />

2. 可 以 实 现 的 最 大 请 求 量<br />

大 多 数 HBA 在 驱 动 器 软 件 中 将 未 处 理 的 请 求 量 默 认 值 设 置 为 16, 这 就 限 制<br />

了 发 送 给 RAID 设 备 的 命 令 数 , 即 使 拥 有 很 多 的 磁 盘 驱 动 器 和 随 机 I/O, 这 个 数<br />

值 也 可 能 无 法 充 分 利 用 存 储 资 源 。<br />

许 多 操 作 系 统 和 设 备 驱 动 器 都 限 制 了 I/O 请 求 的 大 小 , 使 之 小 于 从 表 空 间<br />

读 或 向 表 空 间 写 所 需 的 请 求 量 。 应 该 将 设 备 驱 动 器 内 所 设 的 限 制 更 改 为 允 许 更<br />

大 的 请 求 量 。 当 然 , 对 每 个 设 备 驱 动 器 和 操 作 系 统 要 做 不 同 的 设 置 , 而 且 有 意<br />

思 的 是 , 这 些 设 置 常 常 改 变 。<br />

存 储 硬 件<br />

存 储 硬 件 很 可 能 是 为 数 据 库 构 建 系 统 时 最 重 要 的 部 分 之 一 。 你 也 许 希 望 拥<br />

有 许 多 不 同 的 LUN, 以 便 用 于 数 据 库 中 将 发 生 的 各 种 类 型 的 I/O。 举 例 来 说 , 一<br />

般 情 况 下 你 希 望 :<br />

重 做 日 志 文 件 拥 有 高 带 宽 需 求 (64 KB), 发 送 到 重 做 日 志 的 I/O 大 部 分 是 写<br />

索 引 查 找 拥 有 高 带 宽 小 块 随 机 I/O(8 KB), 并 且 多 数 情 况 下 对 索 引 的 I/O<br />

大 部 分 是 读<br />

读<br />

表 空 间 拥 有 大 块 I/O(256 KB), 并 且 一 般 情 况 下 对 表 空 间 的 I/O 大 部 分 是<br />

正 如 你 所 看 到 的 , 一 种 大 小 是 无 法 满 足 所 有 需 求 的 , 因 此 你 必 须 完 成 以 下<br />

几 组 匹 配 工 作 :<br />

1.RAID 级 别 与 典 型 的 读 / 写 访 问 类 型<br />

2. 数 据 条 宽 度 与 请 求 大 小<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


3. 带 宽 需 求 与 RAID 级 别 和 请 求 大 小<br />

4. 缓 存 策 略 与 所 处 理 的 I/O 类 型<br />

这 些 似 乎 都 不 太 容 易 , 不 过 如 果 你 从 最 基 本 的 问 题 着 手 , 解 决 起 来 也 不 难 。<br />

重 做 日 志<br />

根 据 重 做 日 志 的 大 小 和 带 宽 量 , 你 可 能 最 初 会 认 为 需 要 RAID-5 数 据 条 。 这<br />

其 实 要 看 情 况 而 定 , 因 为 大 多 数 10K RPM 磁 盘 的 数 据 传 送 速 度 为 外 磁 道 柱 面 每<br />

秒 69 MB, 内 磁 道 柱 面 每 秒 39 MB,15K RPM 的 磁 盘 则 更 快 。 另 外 再 加 上 RAID<br />

缓 存 的 大 小 , 你 就 无 须 使 用 RAID-5 了 。 真 正 的 决 定 因 素 在 于 :<br />

1. 带 宽 需 求 ---- 每 秒 多 少 MB 的 日 志 数 据<br />

2. 日 志 的 大 小 ---- 能 够 适 应 缓 存 吗 ?<br />

3. 你 的 RAID 速 度<br />

你 必 须 收 集 到 上 述 三 项 重 要 信 息 , 用 各 种 不 同 的 数 据 库 和 系 统 工 具 查 看 系<br />

统 , 确 定 重 做 日 志 的 表 现 是 否 会 限 制 数 据 库 的 性 能 和 扩 展 , 而 如 果 是 , 那 么 重<br />

做 日 志 的 I/O 需 求 又 是 什 么 。<br />

索 引 文 件<br />

索 引 文 件 的 结 构 相 当 简 单 。 如 果 你 需 要 速 度 快 一 些 , 就 使 用 数 据 条 带 化 值<br />

很 小 的 RAID-1 加 上 一 块 高 性 能 15K 磁 盘 。 因 为 索 引 文 件 是 小 块 读 文 件 , 并 且 常<br />

常 是 随 机 I/O, 所 以 这 是 目 前 最 快 的 方 式 。<br />

表 空 间<br />

根 据 表 的 大 小 及 其 被 访 问 和 查 找 的 方 式 ,RAID-1 有 时 是 更 好 的 方 法 , 不 过<br />

其 它 时 候 RAID-5 就 是 最 佳 选 择 了 。 关 键 是 决 定 表 空 间 的 I/O 请 求 大 小 是 多 少 ,<br />

请 求 的 大 小 常 常 取 决 于 数 据 库 中 的 可 调 参 数 。<br />

数 据 库 的 构 建 正 如 其 它 应 用 一 样 , 你 需 要 确 定 数 据 库 对 文 件 系 统 / 卷 管 理<br />

器 、HBA 和 RAID 的 I/O 模 式 , 同 时 牢 记 性 能 需 求 和 成 本 问 题 。 由 于 数 据 库 很 复<br />

杂 , 调 节 起 来 有 些 难 度 , 不 过 现 在 有 很 多 工 具 供 你 查 看 数 据 , 帮 助 你 理 解 潜 在<br />

的 I/O 问 题 。<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


第 三 节 Oracle 的 数 据 保 护<br />

我 们 都 知 道 oracle 的 备 份 有 几 钟 方 式 , 冷 备 , 热 备 ,rman,imp 等 , 我 们 注 意<br />

到 当 我 们 采 取 热 备 的 时 候 , 需 要 对 每 个 要 备 份 的 表 空 间 置 为 backup 模 式 。 通 常<br />

的 热 备 脚 本 都 是 这 样 的<br />

alter tablespace XXX begin backup;<br />

cp XXX ....<br />

alter tablespace XXX end backup;<br />

( 这 里 需 要 注 意 一 点 ,oracle 的 最 小 存 储 单 位 是 一 个 数 据 块 , 一 个 块 的 大<br />

小 通 常 设 置 为 8k, 而 操 作 系 统 的 块 通 常 是 512bytes, 这 样 的 话 一 个 oracle 的 数<br />

据 由 很 多 个 操 作 系 统 的 块 组 成 。 而 且 对 于 一 个 数 据 文 件 来 说 , 它 的 所 有 块 对 应 的<br />

操 作 系 统 的 块 并 不 是 按 顺 序 存 储 的 , 当 运 行 cp 等 操 作 系 统 命 令 时 并 不 能 指 定 从<br />

那 个 oracle 数 据 块 开 始 拷 贝 。)<br />

当 open 数 据 库 的 时 候 ,oracle 会 去 比 较 控 制 文 件 中 数 据 文 件 记 录 和 数 据 文<br />

件 头 的 checkpoint cnt, 如 果 两 者 相 同 , 则 判 断 不 需 要 介 质 恢 复 , 如 果 不 同 ,<br />

这 时 候 oracle 就 会 报 某 某 文 件 需 要 介 质 恢 复 。 然 后 拷 贝 回 数 据 文 件 备 份 我 们 开<br />

始 recover, 这 时 候 就 从 上 次 做 备 份 时 的 scn 开 始 恢 复 , 运 用 日 志 , 直 到 恢 复 结<br />

束 。 当 cp 数 据 文 件 时 , 比 如 说 我 们 拷 贝 的 第 一 个 块 可 能 是 scn 为 100 的 数 据 块 ,<br />

当 我 们 完 成 这 个 块 的 拷 贝 后 , 这 个 块 有 可 能 被 别 的 进 程 多 次 修 改 ,scn 变 为 900。<br />

我 们 知 道 当 数 据 库 发 生 检 查 点 时 会 去 更 新 数 据 文 件 头 和 控 制 文 件 中 的<br />

checkpoint scn, 如 果 当 我 们 在 cp 数 据 文 件 的 同 时 发 生 了 n 次 checkpoint, 这<br />

时 候 数 据 文 件 头 的 scn 可 能 被 更 新 了 很 多 次 。 这 时 候 cp 的 进 程 去 拷 贝 数 据 文 件<br />

头 所 在 的 操 作 系 统 块 , 可 能 这 个 数 据 文 件 头 的 块 因 为 被 checkpoint 了 很 多 次 导<br />

致 它 的 scn 为 1000, 这 时 候 整 个 数 据 文 件 会 出 现 不 一 致 , 当 用 这 个 备 份 文 件 去<br />

恢 复 时 , 恢 复 进 程 会 从 scn=1000 开 始 恢 复 , 这 样 的 话 开 始 那 个 scn=100 的 块 将<br />

丢 失 从 scn100-scn1000 的 数 据 , 因 为 数 据 块 并 不 应 用 scn 在 1000 以 前 的 日 志 ,<br />

而 且 这 样 做 的 话 可 能 出 现 一 些 数 据 块 的 corruption, 所 以 不 置 成 backup 模 式 备<br />

份 的 话 并 不 可 取 。 当 然 , 如 果 你 能 确 保 当 cp 的 时 候 不 发 生 checkpoint, 或 者 你<br />

的 操 作 系 统 块 的 大 小 不 小 于 oracle 的 数 据 块 大 小 , 这 些 情 况 下 不 置 backup mode<br />

拷 贝 出 来 的 文 件 也 是 有 效 的 。<br />

现 在 我 们 知 道 了 为 什 么 不 能 不 设 置 backup 模 式 , 下 面 来 讲 讲 alter tablespace<br />

XXX begin backup 做 了 什 么 ?<br />

当 数 据 文 件 置 于 backup 模 式 时 ,oracle 会 去 锁 定 数 据 文 件 头 , 这 时 候 数 据<br />

库 发 生 检 查 点 的 话 将 不 会 修 改 文 件 头 的 checkpoint scn, 而 只 是 增 加 checkpoint<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


cnt, 所 以 不 管 执 行 cp 的 时 候 操 作 系 统 块 的 拷 贝 顺 序 是 如 何 ,oracle 总 会 从 文<br />

件 头 的 scn 开 始 恢 复 , 这 样 的 话 也 就 避 免 了 数 据 丢 失 和 数 据 块 corruption. 如 果<br />

大 家 用 的 是 rman 来 备 份 , 那 么 就 不 会 有 这 个 问 题 , 因 为 rman 备 份 的 时 候 rman<br />

会 去 对 比 数 据 块 的 头 尾 标 志 , 如 果 发 现 不 一 致 , 那 么 它 将 会 再 去 读 这 个 块 , 直 到<br />

读 到 一 致 的 块 才 往 备 份 集 里 写 。<br />

但 是 alter tablespace XXX begin backup 带 来 的 另 一 个 问 题 是 会 导 致 产 生<br />

多 余 的 日 志 , 通 过 一 个 小 小 的 试 验 就 可 以 证 明 这 一 点 。<br />

SQL> select name,value from v$sysstat where name='redo size';<br />

NAME VALUE<br />

----------------------------------------------------------------<br />

----------<br />

redo size 43408<br />

SQL> update test set a=a;<br />

1 row updated.<br />

SQL> commit;<br />

Commit complete.<br />

SQL> select name,value from v$sysstat where name='redo size';<br />

NAME VALUE<br />

----------------------------------------------------------------<br />

----------<br />

redo size 44060<br />

SQL> ALTER SYSTEM DUMP LOGFILE '/netappredo/redo05.log';<br />

System altered.<br />

一 个 update 的 动 作 产 生 44060-43408=652bytes 的 redo 把 表 空 间 置 为<br />

backup mode<br />

SQL> alter tablespace test begin backup;<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


Tablespace altered.<br />

SQL> select name,value from v$sysstat where name='redo size';<br />

NAME VALUE<br />

----------------------------------------------------------------<br />

----------<br />

redo size 44732<br />

SQL> update test set a=a;<br />

1 row updated.<br />

SQL> commit;<br />

Commit complete.<br />

SQL> select name,value from v$sysstat where name='redo size';<br />

NAME VALUE<br />

----------------------------------------------------------------<br />

----------<br />

redo size 53560<br />

SQL> alter tablespace test end backup;<br />

Tablespace altered.<br />

一 个 update 的 动 作 产 生 53560-44732=8828bytes 的 redo 看 看 到 底 是 记 了<br />

些 什 么 ?<br />

SQL> ALTER SYSTEM DUMP LOGFILE '/netappredo/redo05.log';<br />

System altered.<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


0x01<br />

REDO RECORD - Thread:2 RBA: 0x00004e.000000b0.0128 LEN: 0x01b0 VLD:<br />

SCN: 0x0000.19ed24f7 SUBSCN: 1 06/29/2004 15:05:32<br />

SEQ: 1 OP:5.2<br />

CHANGE #1 TYP:0 CLS:29 AFN:33 DBA:0x08400029 SCN:0x0000.19ed24f2<br />

...... ( 改 动 向 量 1, 记 载 对 undo header 事 务 表 的 修 改 )<br />

CHANGE #2 TYP:0 CLS:30 AFN:33 DBA:0x0840002e SCN:0x0000.19ed24f0<br />

SEQ: 1 OP:5.1<br />

...... ( 改 动 向 量 2, 记 载 对 undo block 的 修 改 )<br />

CHANGE #3 TYP:2 CLS: 1 AFN:51 DBA:0x0cc0000f SCN:0x0000.19ed24e8 SEQ:<br />

1 OP:11.5<br />

KTB Redo ( 改 动 向 量 3, 记 载 对 数 据 块 的 修 改 , 也 就 是 在 数 据 块 上 执 行 update<br />

test set a=a)<br />

op: 0x11 ver: 0x01<br />

op: F xid: 0x0007.001.00014ece uba: 0x0840002e.0859.38<br />

Block cleanout record, scn: 0x0000.19ed24f7 ver: 0x01 opt: 0x02,<br />

entries follow...<br />

itli: 1 flg: 2 scn: 0x0000.19ed24e8<br />

KDO Op code: URP row dependencies Disabled<br />

xtype: XA bdba: 0x0cc0000f hdba: 0x0cc0000b<br />

itli: 2 ispac: 0 maxfr: 4858<br />

tabn: 0 slot: 0(0x0) flag: 0x2c lock: 2 ckix: 0<br />

ncol: 1 nnew: 1 size: 0<br />

col 0: [ 2] c1 02<br />

CHANGE #4 MEDIA RECOVERY MARKER SCN:0x0000.00000000 SEQ: 0 OP:5.20<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


......( 改 动 向 量 4, 一 些 标 记 )<br />

我 们 看 到 了 正 常 的 日 志 记 录 , 此 外 还 有 些 block cleanout 及 回 滚 段 改 变 的<br />

日 志 记 录 , 但 是 相 比 较 不 是 backup 模 式 的 日 志 来 说 多 了 这 一 部 分 。<br />

Log block image redo entry<br />

Dump of memory from 0x0AE48820 to 0x0AE4A808<br />

AE48820 00280001 00002C32 19ED24E6 1FE80000 [..(.2,...$......]<br />

AE48830 00321F02 0CC00009 00210005 000307F1 [..2.......!.....]<br />

AE48840 0840000E 0021100C 00002001 19ED24E8 [..@...!.. ...$..]<br />

AE48850 001F0016 0001A94C 0840007C 000D0C08 [....L...|.@.....]<br />

AE48860 00008000 19ED2468 00000000 00000000 [....h$..........]<br />

AE48870 00020100 00160001 1F791F8C 00001F79 [..........y.y...]<br />

AE48880 1F920002 0F88FFFF 0ED00F2C 0E180E74 [........,...t...]<br />

AE48890 0D600DBC 0CA80D04 0BF00C4C 0B380B94 [..`.....L.....8.]<br />

AE488A0 0A800ADC 09C80A24 0910096C 085808B4 [....$...l.....X.]<br />

AE488B0 07A007FC 06E40744 06240684 056405C4 [....D.....$...d.]<br />

......<br />

这 一 部 分 是 对 更 改 的 数 据 块 做 的 一 个 镜 像 , 把 这 个 块 完 全 记 录 到 redo 里 面<br />

去 了 , 但 是 为 什 么 要 这 么 做 呢 。<br />

这 就 又 牵 扯 到 一 个 概 念 ,'block split', 当 数 据 文 件 在 备 份 cp 时 , 因 为<br />

oracle 数 据 块 和 操 作 系 统 块 的 差 异 , 一 个 数 据 块 可 能 由 16 个 操 作 系 统 块 组 成 (8k<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


数 据 块 ,512bytes 系 统 块 ), 这 样 的 话 可 能 出 现 一 个 数 据 块 包 含 了 几 个 不 同 版 本<br />

的 操 作 系 统 块 , 会 导 致 数 据 块 的 不 一 致 , 所 以 在 备 份 模 式 下 如 果 有 语 句 对 备 份 块<br />

产 生 更 新 , 那 么 oracle 会 先 把 当 前 块 复 制 一 份 到 redo, 当 恢 复 的 时 候 如 果 碰 到<br />

数 据 块 不 一 致 就 从 redo 把 这 个 镜 像 拷 贝 回 去 , 然 后 在 这 个 一 致 性 的 镜 像 开 始 恢<br />

复 。 如 果 使 用 rman 来 备 份 可 以 避 免 产 生 过 多 的 块 , 就 像 上 面 所 说 的 ,rman 会<br />

去 建 议 块 的 一 致 性 , 所 以 不 用 复 制 镜 像 块 到 日 志 。<br />

第 四 节 恢 复 oracle 数 据 库<br />

要 损 坏 Oracle 数 据 是 不 可 能 的 。 环 境 恢 复 的 机 制 保 证 了 这 一 点 , 就 是 使 用 redo<br />

和 undo 来 将 数 据 库 返 回 到 环 境 失 败 之 前 的 一 个 一 致 性 状 态 中 去 。 然 而 , 在 媒 介<br />

失 败 之 后 丢 失 数 据 是 可 能 的 —— 如 果 数 据 库 管 理 员 没 有 予 以 适 当 的 警 惕 。<br />

预 先 防 范 是 简 单 的 : 在 归 档 日 志 模 式 下 运 行 数 据 库 ; 多 路 传 送 控 制 文 件 , 在 线<br />

日 志 文 件 , 以 及 文 档 日 志 文 件 ; 支 持 数 据 文 件 和 文 档 日 志 文 件 。 在 媒 介 失 败 之 后 ,<br />

备 份 和 文 档 日 志 可 以 用 于 恢 复 数 据 库 到 失 败 前 的 点 , 不 丢 失 任 意 一 行 已 经 被 提 交<br />

的 数 据 。 但 是 , 尽 管 环 境 恢 复 的 确 是 自 动 化 的 , 不 可 避 免 的 —— 媒 介 恢 复 是 一 个<br />

手 工 的 过 程 。<br />

恢 复 结 构 和 处 理 过 程<br />

在 媒 介 失 败 之 后 , 有 不 同 的 技 术 用 于 恢 复 , 根 据 哪 个 文 件 被 损 坏 的 情 况 。 数<br />

据 库 由 3 种 文 件 类 型 组 成 : 控 制 文 件 、 在 线 redo 日 志 文 件 , 以 及 数 据 文 件 。 恢 复<br />

控 制 文 件 和 在 线 redo 日 志 文 件 的 过 程 是 一 个 繁 琐 的 过 程 , 它 们 是 通 过 多 路 传 送<br />

的 。 恢 复 一 个 或 者 多 个 数 据 文 件 的 过 程 是 比 较 复 杂 的 , 但 是 很 直 接 。 损 坏 的 控 制<br />

文 件 可 以 通 过 多 路 传 送 的 拷 贝 或 者 用 CREATE CONTROLFILE 命 令 重 新 创 建 的 控 制<br />

文 件 来 进 行 恢 复 。 在 极 端 的 情 况 下 , 它 可 以 从 备 份 中 重 新 存 储 , 但 是 这 一 点 在 媒<br />

介 失 败 之 后 是 从 来 不 需 要 的 , 如 果 你 遵 循 的 是 一 个 合 适 的 多 路 策 略 。 损 坏 的 在 线<br />

redo 文 件 也 可 以 被 重 新 生 成 ,Oracle 提 供 了 一 条 ALTER DATABASE CLEAR LOGFILE<br />

GROUP #(# 是 损 坏 成 员 的 组 的 号 码 ) 命 令 , 它 可 以 删 除 并 且 重 新 创 建 日 志 文 件 组 的<br />

成 员 。 如 果 数 据 库 运 行 的 是 文 档 日 志 模 式 ( 也 应 该 是 这 样 的 ), 日 志 文 件 组 必 须 在<br />

Oracle 允 许 执 行 清 楚 日 志 文 件 命 令 之 前 进 行 归 档 。 这 是 因 为 , 清 除 一 个 没 有 归<br />

档 的 日 志 文 件 组 , 就 意 味 着 文 档 日 志 流 会 丢 失 一 个 日 志 文 件 , 因 此 恢 复 就 是 不 可<br />

能 的 了 。 这 样 的 命 令 还 可 以 有 一 些 变 化 ,ALTER DATABASE CLEAR UNARCHIVED<br />

LOGFILE GROUP #, 它 可 以 删 除 并 重 新 创 建 日 志 文 件 , 即 使 是 它 没 有 成 功 地 归 档 ,<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


但 是 在 执 行 了 这 条 命 令 之 后 , 它 绝 对 就 是 执 行 整 个 数 据 库 备 份 的 一 个 至 关 重 要 的<br />

部 分 。<br />

一 个 受 到 损 坏 的 日 志 文 件 需 要 使 用 备 份 和 文 档 日 志 。 在 媒 介 失 败 导 致 日 志 文<br />

件 的 损 坏 之 后 , 有 两 种 选 择 用 于 恢 复 : 完 全 恢 复 , 意 思 是 不 丢 失 数 据 ; 还 有 不 完 全<br />

恢 复 , 这 时 你 通 过 在 它 完 成 之 前 停 止 恢 复 过 程 故 意 丢 失 一 部 分 工 作 。 不 完 全 恢 复<br />

是 一 个 高 级 的 程 序 , 将 会 在 第 27 章 中 讲 述 。 完 全 恢 复 过 程 有 两 个 阶 段 。 首 先 ,<br />

被 损 坏 的 文 件 必 须 从 备 份 中 重 新 存 储 。 第 二 个 , 重 新 存 储 的 文 件 必 须 被 恢 复 , 通<br />

过 使 用 文 档 日 志 中 的 redo 信 息 来 把 它 及 时 地 向 前 推 进 , 直 到 它 与 数 据 库 的 其 它<br />

部 分 同 步 。<br />

测 验 贴 士 : 在 Oracle 环 境 中 ,“ 重 新 存 储 ” 的 意 思 是 用 备 份 替 换 掉 一 个 损 坏<br />

或 者 丢 失 的 文 件 ;“ 恢 复 ” 的 意 思 是 通 过 使 用 文 档 日 志 使 文 件 与 数 据 库 的 其 它 部<br />

分 同 步 。<br />

因 为 在 线 redo 日 志 从 来 没 有 被 RMAN 备 份 过 , 那 么 RMAN 就 不 能 用 来 恢 复 损<br />

坏 ; 修 理 由 于 媒 介 失 败 导 致 的 在 线 日 志 文 件 损 坏 可 以 通 过 SQL*Plus 完 成 , 或 者 是<br />

通 过 数 据 库 控 制 。 控 制 文 件 和 数 据 文 件 都 可 以 通 过 RMAN 来 重 新 存 储 或 者 恢 复 ;<br />

实 际 上 , 如 果 你 把 它 们 备 份 到 备 份 集 中 去 ,RMAN 就 是 你 惟 一 的 选 项 。<br />

要 打 开 一 个 数 据 库 , 所 有 的 控 制 文 件 拷 贝 , 至 少 是 每 个 在 线 日 志 文 件 组 中 的<br />

一 个 文 件 , 还 有 所 有 的 在 线 日 志 文 件 , 都 必 须 要 显 示 出 来 并 且 同 步 。 如 果 , 在 启<br />

动 过 程 中 ,SMON 发 现 情 况 不 对 劲 , 启 动 就 无 法 完 成 。 如 果 一 个 控 制 文 件 拷 贝 损<br />

坏 了 或 者 丢 失 了 , 启 动 就 用 NOMOUNT 模 式 来 终 止 。 一 条 描 述 哪 个 ( 或 者 哪 些 ) 拷 贝<br />

被 损 坏 了 的 消 息 就 会 发 送 给 警 报 日 志 。 假 设 控 制 文 件 是 好 的 ,SMON 就 继 续 打 开<br />

数 据 库 。 在 这 个 过 程 中 , 它 检 查 所 有 在 线 数 据 文 件 的 头 。 如 果 头 有 丢 失 或 者 损 坏 ,<br />

就 会 写 适 当 的 错 误 消 息 给 警 报 日 志 , 数 据 库 会 继 续 保 持 准 备 的 模 式 。 如 果 所 有 的<br />

在 线 文 件 都 显 示 出 来 , 并 且 没 有 损 坏 , 但 是 其 中 的 一 个 或 者 多 个 没 有 同 步 ,SMON<br />

会 尝 试 通 过 使 用 在 线 redo 日 志 来 对 它 们 进 行 同 步 。 这 个 过 程 是 自 动 进 行 的 。 如<br />

果 所 需 的 在 线 日 志 找 不 到 , 那 么 数 据 库 就 无 法 打 开 。 如 果 一 个 或 者 多 个 数 据 文 件<br />

从 备 份 中 重 新 存 储 了 , 那 么 它 们 可 能 会 非 常 过 时 , 在 线 redo 日 志 也 无 法 走 那 么<br />

远 的 时 间 去 恢 复 它 们 : 这 是 你 就 必 须 使 用 文 档 日 志 文 件 来 恢 复 了 , 这 是 一 个 必 须<br />

手 工 启 动 的 过 程 —— 从 SQL*Plus 中 , 如 果 你 用 的 是 操 作 系 统 的 命 令 备 份 的 话 ,<br />

或 者 使 用 RMAN, 如 果 ( 是 Oracle 强 烈 推 荐 的 ) 你 是 用 RMAN 来 提 交 备 份 的 。<br />

如 果 媒 介 损 坏 发 生 在 数 据 库 打 开 的 时 候 , 那 么 影 响 的 范 围 就 基 于 有 哪 些 文 件<br />

受 到 影 响 。 任 何 控 制 文 件 拷 贝 的 损 坏 都 会 导 致 数 据 库 环 境 立 即 终 止 。 如 果 受 到 损<br />

坏 的 数 据 文 件 是 SYSTEM 表 空 间 或 者 活 动 的 undo 表 空 间 , 那 么 影 响 是 一 样 的 。 但<br />

是 对 任 何 在 线 日 志 的 损 坏 都 不 会 导 致 环 境 的 终 止 , 只 要 还 有 部 分 日 志 文 件 组 存 在<br />

的 话 。 实 际 上 , 环 境 会 继 续 工 作 , 你 的 终 端 用 户 也 甚 至 不 会 注 意 到 。 但 是 错 误 消<br />

息 会 写 到 警 报 日 志 中 去 , 这 种 情 况 也 需 要 立 即 纠 正 ; 这 样 的 纠 正 能 够 并 且 应 该 是<br />

在 线 的 , 当 人 们 继 续 工 作 的 时 候 。<br />

如 果 损 坏 的 数 据 文 件 时 表 空 间 的 一 部 分 , 而 不 是 SYSTEM 或 者 其 他 活 动 的<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn


undo 表 空 间 , 也 不 会 导 致 环 境 的 失 败 , 但 是 很 明 显 , 终 端 用 户 可 能 会 有 问 题 ,<br />

因 为 数 据 库 的 部 分 内 容 消 失 了 。 你 的 应 用 程 序 如 何 应 对 这 种 情 况 是 不 可 预 期 的 —<br />

— 它 是 完 全 根 据 应 用 程 序 是 如 何 组 织 的 。 对 损 坏 数 据 文 件 的 重 新 存 储 或 者 恢 复 都<br />

可 以 在 线 完 成 , 假 如 它 们 不 是 属 于 SYSTEM 或 者 undo 表 空 间 的 数 据 文 件 。 最 后 ,<br />

如 果 是 组 成 你 的 临 时 表 空 间 的 临 时 文 件 受 到 损 坏 , 终 端 用 户 也 完 全 不 会 注 意 到 。<br />

Oracle 不 会 去 验 证 临 时 文 件 的 存 在 , 除 非 要 使 用 它 们 了 , 并 且 一 个 经 过 良 好 调<br />

整 的 数 据 库 也 许 永 远 也 不 会 用 到 它 们 。 这 就 是 说 , 临 时 文 件 可 以 在 它 们 受 到 注 意<br />

之 前 消 失 一 阵 子 。 同 样 也 意 味 着 损 坏 的 临 时 文 件 可 以 被 删 除 或 者 重 新 创 建 , 在 任<br />

何 时 间 , 除 非 正 好 在 那 个 时 候 要 用 到 它 。<br />

在 备 份 中 重 新 存 储 可 以 通 过 RMAN 或 者 操 作 系 统 工 具 来 完 成 。 但 是 如 果 你 的<br />

RMAN 备 份 是 备 份 集 合 , 而 不 是 映 像 的 拷 贝 , 重 新 存 储 就 只 能 通 过 RMAN 来 完 成 了 :<br />

没 有 其 他 的 方 法 从 数 据 集 中 解 压 缩 数 据 文 件 。 重 新 存 储 后 的 恢 复 也 可 以 通 过<br />

SQL*Plus 命 令 , 或 者 用 RMAN 来 完 成 , 但 是 也 有 同 样 的 约 束 条 件 : 只 有 RMAN 可 以<br />

从 备 份 集 中 解 压 缩 文 档 日 志 。<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!