Manpages

NAME

mkswap - 建 立 一 个 linux交 换 区

总 览

mkswap [-c] [-vN] [-f] device [size]

描 述

mkswap 在 一 个 设 备 上 或 者 在 一 个 文 件 里 创 建 一 个 linux交 换 区 。

(该 交 换 区 创 建 后 , 必 须 使 用 swapon 命 令 来 启 用 它 。 通 常 交 换 区 被 列 在 /etc/fstab 中 , 从 而 使 得 在 启 动 时 可 通 过 某 些 启 动 脚 本 中 的 swapon -a 命 令 来 启 用 。 ) 参 数 device 通 常 是 一 个 磁 盘 分 区 ( 类 似 于 /dev/hda4 或 者 /dev/sdb7 ) , 但 也 可 以 是 一 个 文 件 。 Linux内 核 不 会 着 眼 于 分 区 号 , 但 是 一 些 安 装 脚 本 会 假 定 类 型 为 16进 制 的 82(LINUX_SWAP)的 分 区 意 味 着 交 换 分 区 。 参 数 size 是 多 余 的 , 但 为 了 向 兼 容 性 而 被 保 留 。 (它 指 定 期 望 的 以 1024 字 节 为 单 位 的 交 换 区 大 小 。 如 果 它 未 被 指 定 , mkswap 将 使 用 整 个 分 区 或 者 文 件 。 错 误 地 使 用 "-a"选 项 将 会 损 坏 您 的 磁 盘 。 )

Linux能 理 解 两 种 类 型 的 交 换 区 : 旧 类 型 和 新 类 型 。 交 换 区 第 一 页 的 最 后 10个 字 节 区 分 两 种 类 型 : 旧 类 型 以 "SWAP_SPACE", 新 类 型 以 "SWAPSPACE2" 作 标 识 。 在 旧 类 型 里 , 第 一 页 的 其 它 部 分 是 一 个 位 图 , 每 一 位 指 出 交 换 区 中 的 可 用 页 面 。 因 为 第 一 页 保 存 位 图 , 所 以 第 一 位 为 0。 同 样 的 , 最 后 10位 保 存 标 识 。 所 以 , 如 果 页 面 大 小 为 S, 旧 类 型 交 换 区 可 以 描 述 最 多 8*(S-10)-1 个 可 用 于 交 换 的 页 面 。 对 于 S=4096( 象 i386上 ) , 最 大 可 用 区 域 是 133890048字 节 ( 如 果 1 MB=2^20 bytes, 则 差 不 多 为 128 MB) , 而 其 他 部 分 将 被 浪 费 。 在 alpha和 sparc64上 , S=8192,最 大 可 用 区 域 是 535560992字 节 ( 与 上 述 同 样 条 件 下 , 差 不 多 为 512 MB) 。 因 为 零 位 表 示 坏 的 块 或 者 超 过 交 换 区 末 尾 的 块 , 旧 的 设 置 浪 费 了 大 部 分 的 位 图 页 面 , 一 个 简 单 的 整 数 就 可 以 满 足 指 出 交 换 区 大 小 的 需 要 , 而 且 如 果 有 坏 的 块 , 也 可 以 简 单 的 列 出 来 。 没 有 人 想 使 用 有 许 多 坏 块 的 交 换 区 ( 我 甚 至 不 会 使 用 包 含 一 个 坏 块 的 交 换 空 间 ) 。 在 新 类 型 交 换 区 正 好 是 这 样 做 的 。 现 在 交 换 区 的 最 大 可 用 数 目 取 决 于 具 体 结 构 。 大 致 来 说 , 在 i386, PPC, m68k, ARM上 为 2GB, 在 sparc上 为 1GB, 在 mips上 为 512MB, 在 alpha 上 为 128GB, 在 sparc64上 为 3TB。 注 意 在 2.1.117内 核 之 前 , 每 一 页 分 配 一 个 字 节 , 而 现 在 为 两 个 字 节 , 所 以 为 了 获 得 2GB的 可 用 交 换 区 , 可 能 需 要 2MB的 核 心 内 存 。 目 前 , Linux允 许 8个 交 换 区 。 这 些 正 在 使 用 的 区 域 可 从 文 件 /proc/swaps ( 从 2.1.25起 ) 中 查 到 。

mkswap 不 允 许 小 于 10个 页 面 的 区 域 。 如 果 不 知 道 您 的 机 器 所 用 的 页 面 大 小 , 可 以 用 "cat /proc/cpuinfo"来 查 看 ( 或 者 不 能 查 看 - 这 个 文 件 的 内 容 取 决 于 系 统 结 构 和 内 核 版 本 ) 。 为 了 设 置 一 个 交 换 文 件 , 需 要 在 执 行 mkswap , 前 创 建 这 个 文 件 , 例 如 , 象 如 下 命 令 :

# dd if=/dev/zero of=swapfile bs=1024 count=65536 注 意 一 个 交 换 文 件 必 须 不 包 括 任 何 空 洞 ( 所 以 , 不 能 使 用 cp(1) 来 创 建 该 文 件 ) 。

选 项

-c 在 创 建 交 换 区 之 前 检 查 设 备 ( 如 果 是 块 设 备 ) 的 坏 块 。 如 果 发 现 任 何 坏 块 , 坏 块 的 总 数 将 被 打 印 出 来 。

-f 强 行 向 前 执 行 , 即 使 该 命 令 是 愚 蠢 的 。 该 选 项 允 许 建 立 比 所 在 的 文 件 或 者 分 区 还 大 的 交 换 区 。 在

SPARC上 , 强 行 创 建 交 换 区 。 无 该 选 项 的 mkswap 将 拒 绝 在 包 含 有 效 的 SPARC超 级 块 的 设 备 上 创 建 vo交 换 区 , 因 为 那 样 可 能 意 味 着 将 删 除 分 区 表 。

-v0 创 建 一 个 旧 类 型 的 交 换 区 。

-v1 创 建 一 个 新 类 型 的 交 换 区 。 如 果 未 指 定

-v选 项 , 而 且 交 换 区 大 小 没 有 超 过 旧 类 型 交 换 区 的 最 大 值 , 同 时 当 前 内 核 比 2.1.117老 ( 且 PAGE_SIZE小 于 2048) , mkswap 将 默 认 创 建 旧 类 型 的 交 换 区 。 万 一 您 的 引 导 分 区 或 者 磁 盘 卷 标 在 第 一 块 , 新 类 型 的 头 部 将 不 接 触 那 些 部 分 , 所 以 可 能 更 好 ( 如 果 同 样 交 换 区 较 小 ) ,

参 考

fdisk(8), swapon(8)

本 页 面 中 文 版 由 中 文 man 手 册 页 计 划 提 供 。 中 文 man 手 册 页 计 划 : https://github.com/man-pages-zh/manpages-zh