diff --git a/Makefile.am b/Makefile.am index 4f647f4d..52ef23e2 100644 --- a/Makefile.am +++ b/Makefile.am @@ -33,4 +33,5 @@ EXTRA_DIST = \ man/8/rbd-replay-many.rst \ man/8/rbd-replay-prep.rst \ man/8/rbd-replay.rst \ - man/8/rbd.rst + man/8/rbd.rst \ + man/8/rbdmap.rst diff --git a/rados/configuration/mon-config-ref.rst b/rados/configuration/mon-config-ref.rst index 8a69d1ee..f8707ece 100644 --- a/rados/configuration/mon-config-ref.rst +++ b/rados/configuration/mon-config-ref.rst @@ -213,32 +213,39 @@ Ceph 监视器的最简配置必须包括一主机名及其监视器地址,这 ``mon initial members`` -:描述: 集群启动时初始监视器的 ID ,若指定, Ceph 需要奇数个监视器来确定最初\ - 法定人数(如 3 )。 +:描述: 集群启动时初始监视器的 ID ,若指定, Ceph 需要奇数个\ + 监视器来确定最初法定人数(如 3 )。 :类型: String :默认值: None -.. note:: 集群内的\ *大多数*\ 监视器必须能互通以建立法定人数,你可以用此选项减小初\ - 始监视器数量来形成。 +.. note:: 集群内的\ *大多数*\ 监视器必须能互通以建立法定人数,\ + 你可以用此选项减小初始监视器数量来形成。 + .. index:: Ceph Monitor; data path +.. _Data: + 数据 ---- -Ceph 监视器有存储数据的默认路径,生产集群为实现更高性能可把监视器部署到非 OSD 节点\ -的独立主机上。因为监视器会频繁 ``fsync()`` ,这可能影响 OSD 。 +Ceph 监视器有存储数据的默认路径。为优化性能,在生产集群上,\ +我们建议在独立主机上运行 Ceph 监视器,不要与运行 Ceph OSD 守\ +护进程的主机混用。因为 leveldb 靠 ``mmap()`` 写数据, Ceph +监视器会频繁地把数据从内存刷回磁盘,如果其数据与 OSD 守护进\ +程共用存储器,就会与 Ceph OSD 守护进程的载荷冲突。 -在 Ceph 0.58 及更早版本中,监视器数据以文件保存,这样人们可以用 ``ls`` 和 ``cat`` \ -这些普通工具检查监视器数据,然而它不能提供健壮的一致性。 +在 Ceph 0.58 及更早版本中,监视器数据以文件保存,这样人们可以\ +用 ``ls`` 和 ``cat`` 这些普通工具检查监视器数据,然而它不能提\ +供健壮的一致性。 -在 Ceph 0.59 及后续版本中,监视器以键/值对存储数据。监视器需要 `ACID`_ 事务,数据\ -存储的使用可防止监视器用损坏的版本进行恢复,除此之外,它允许在一个原子批量操作中进行\ -多个修改操作。 +在 Ceph 0.59 及后续版本中,监视器以键/值对存储数据。监视器需要 +`ACID`_ 事务,数据存储的使用可防止监视器用损坏的版本进行恢复,\ +除此之外,它允许在一个原子批量操作中进行多个修改操作。 -一般来说我们不建议更改默认数据位置,如果要改,我们建议所有监视器统一配置,加到配置文\ -件的 ``[mon]`` 下。 +一般来说我们不建议更改默认数据位置,如果要改,我们建议所有监\ +视器统一配置,加到配置文件的 ``[mon]`` 下。 ``mon data`` @@ -250,6 +257,8 @@ Ceph 监视器有存储数据的默认路径,生产集群为实现更高性能 .. index:: Ceph Storage Cluster; capacity planning, Ceph Monitor; capacity planning +.. _Storage Capacity: + 存储容量 -------- diff --git a/radosgw/config-ref.rst b/radosgw/config-ref.rst index 7ad378e7..ff177b86 100644 --- a/radosgw/config-ref.rst +++ b/radosgw/config-ref.rst @@ -640,10 +640,19 @@ Ceph 对象网关会把桶索引( ``index_pool`` )和桶数据( ``data_poo ``rgw region root pool`` :描述: 用于存储此 region 所有相关信息的存储池。 + ``Jewel`` 版起不再使用。 :类型: String :默认值: ``.rgw.root`` +.. versionadded:: Jewel + +``rgw zonegroup root pool`` + +:描述: 用于存储此 zonegroup 所有相关信息的存储池。 +:类型: String +:默认值: ``.rgw.root`` + .. versionadded:: v.67 diff --git a/radosgw/federated-config.rst b/radosgw/federated-config.rst index e574512a..25039793 100644 --- a/radosgw/federated-config.rst +++ b/radosgw/federated-config.rst @@ -289,16 +289,22 @@ Apache 、 FastCGI 、 Ceph 对象网关守护进程( ``radosgw`` ),还有 在二级域上重复以上步骤。 -.. note:: 按照以上步骤配置二级 region 时,需把 ``us-`` 替换为 ``eu-`` 。\ - 创建主 region 和二级 region **后**\ ,你一共会拥有四个 FastCGI 脚本。 +.. note:: 按照以上步骤配置二级 region 时,需把 ``us-`` 替换为 + ``eu-`` 。创建主 region 和二级 region **后**\ ,你一共会拥\ + 有四个 FastCGI 脚本。 + +.. _Add Instances to Ceph Config File: 把各例程加入 Ceph 配置文件 -------------------------- -在管理节点上,把各例程的配置写入 Ceph 存储集群的配置文件。例如: :: +在管理节点上,把各例程的配置写入 Ceph 存储集群的配置文件。\ +例如: :: - ... + [global] + rgw region root pool = .us.rgw.root # Deprecated in Jewel + rgw zonegroup root pool = .us.rgw.root # From Jewel [client.radosgw.us-east-1] rgw region = us @@ -312,7 +318,6 @@ Apache 、 FastCGI 、 Ceph 对象网关守护进程( ``radosgw`` ),还有 [client.radosgw.us-west-1] rgw region = us - rgw region root pool = .us.rgw.root rgw zone = us-west rgw zone root pool = .us-west.rgw.root keyring = /etc/ceph/ceph.client.radosgw.keyring @@ -320,25 +325,26 @@ Apache 、 FastCGI 、 Ceph 对象网关守护进程( ``radosgw`` ),还有 rgw socket path = /var/run/ceph/$name.sock host = {host-name} - 然后,把更新过的 Ceph 配置文件推送到各 :term:`Ceph 节点`\ 如: :: ceph-deploy --overwrite-conf config push {node1} {node2} {nodex} +.. note:: 按照以上步骤配置二级 region 时,需把 region 、存储池\ + 和域的名字都从 ``us`` 替换为 ``eu`` 。创建主 region 和二级 + region **后**\ ,你一共会有四条类似配置。 -.. note:: 按照以上步骤配置二级 region 时,需把 region 、存储池和域的名字都\ - 从 ``us`` 替换为 ``eu`` 。创建主 region 和二级 region **后**\ ,你一共\ - 会有四条类似配置。 +.. _Create a Region: 创建 region ----------- #. 为 ``us`` region 创建个 region 配置文件,名为 ``us.json`` 。 - 把下列实例的内容复制进文本编辑器,把 ``is_master`` 设置为 ``true`` ,用终\ - 结点的全资域名替换 ``{fqdn}`` 。这样,主域就是 ``us-east`` ,另外 \ - ``zones`` 列表中还会有 ``us-west`` 。详情见\ `配置参考——region`_ 。 :: + 把下列实例的内容复制进文本编辑器,把 ``is_master`` 设置为 + ``true`` ,用终结点的全资域名替换 ``{fqdn}`` 。这样,主域就\ + 是 ``us-east`` ,另外 ``zones`` 列表中还会有 ``us-west`` 。\ + 详情见\ `配置参考——region`_ 。 :: { "name": "us", "api_name": "us", @@ -365,7 +371,6 @@ Apache 、 FastCGI 、 Ceph 对象网关守护进程( ``radosgw`` ),还有 ], "default_placement": "default-placement"} - #. 用刚刚创建的 ``us.json`` 输入文件创建 ``us`` region 。 :: radosgw-admin region set --infile us.json --name client.radosgw.us-east-1 @@ -393,6 +398,8 @@ Apache 、 FastCGI 、 Ceph 对象网关守护进程( ``radosgw`` ),还有 创建主 region 和二级 region **后**\ ,你一共会有两个 region 。 +.. _Create Zones: + 创建域 ------ diff --git a/rbd/libvirt.rst b/rbd/libvirt.rst index 91c3129a..975df5f1 100644 --- a/rbd/libvirt.rst +++ b/rbd/libvirt.rst @@ -1,12 +1,13 @@ -================================= - 通过 ``libvirt`` 使用 Ceph RBD -================================= +============================ + 通过 libvirt 使用 Ceph RBD +============================ .. index:: Ceph Block Device; livirt -``libvirt`` 库是管理程序和软件应用间的一个虚拟机抽象层。有了 ``libvirt`` ,开发者\ -和系统管理员只需要关注这些管理器的一个通用管理框架、通用 API 、和通用 shell 接口\ -(即 ``virsh`` )就可以了,像: +``libvirt`` 库是管理程序和软件应用间的一个虚拟机抽象层。有了 +``libvirt`` ,开发者和系统管理员只需要关注这些管理器的一个通\ +用管理框架、通用 API 、和通用 shell 接口(即 ``virsh`` )就\ +可以了,像: - QEMU/KVM - XEN @@ -14,9 +15,9 @@ - VirtualBox - 等等 -Ceph 块设备支持 QEMU/KVM ,所以你可以在 Ceph 块设备之上运行能与 ``libvirt`` 交互\ -的软件。下面的堆栈图解释了 ``libvirt`` 和 QEMU 如何通过 ``librbd`` 使用 Ceph 块设\ -备。 +Ceph 块设备支持 QEMU/KVM ,所以你可以在 Ceph 块设备之上运行能\ +与 ``libvirt`` 交互的软件。下面的堆栈图解释了 ``libvirt`` 和 +QEMU 如何通过 ``librbd`` 使用 Ceph 块设备。 .. ditaa:: +---------------------------------------------------+ @@ -34,83 +35,85 @@ Ceph 块设备支持 QEMU/KVM ,所以你可以在 Ceph 块设备之上运行 +------------------------+ +------------------------+ -``libvirt`` 常见于为云解决方案提供 Ceph 块设备,像 OpenStack 、 ClouldStack ,它\ -们用 ``libvirt`` 和 QEMU/KVM 交互、 QEMU/KVM 再与 Ceph 块设备通过 ``librbd`` 交\ -互。详情见\ `块设备与 OpenStack`_ 和\ `块设备与 CloudStack`_ 。关于如何安装见\ \ -`安装`_\ 。 +``libvirt`` 常见于为云解决方案提供 Ceph 块设备,像 OpenStack 、\ +ClouldStack ,它们用 ``libvirt`` 和 QEMU/KVM 交互、 QEMU/KVM +再与 Ceph 块设备通过 ``librbd`` 交互。详情见\ +`块设备与 OpenStack`_ 和\ `块设备与 CloudStack`_ 。关于如何安\ +装见\ `安装`_\ 。 -你也可以通过 ``libvirt`` 、 ``virsh`` 和 ``libvirt`` API 使用 Ceph 块设备,详\ -情见 `libvirt 虚拟化 API`_ 。 +你也可以通过 ``libvirt`` 、 ``virsh`` 和 ``libvirt`` API 使用 +Ceph 块设备,详情见 `libvirt 虚拟化 API`_ 。 -要创建使用 Ceph 块设备的虚拟机,请看后面几段。具体应用时,我们用 ``libvirt-pool`` \ -作为存储池名、 ``client.libvirt`` 作为用户名、 ``new-libvirt-image`` 作为映像名,\ -你可以任意命名,确保在后续过程中用自己的名字替换掉对应名字即可。 +要创建使用 Ceph 块设备的虚拟机,请看后面几段。具体应用时,我\ +们用 ``libvirt-pool`` 作为存储池名、 ``client.libvirt`` 作为\ +用户名、 ``new-libvirt-image`` 作为映像名,你可以任意命名,确\ +保在后续过程中用自己的名字替换掉对应名字即可。 +.. _Configuring Ceph: + 配置 Ceph ========= 要把 Ceph 用于 ``libvirt`` ,执行下列步骤: -#. `创建一存储池`_\ (或者用默认的)。本例用 ``libvirt-pool`` 作存储池名,配备了 \ - 128 个归置组。 - :: +#. `创建一存储池`_\ (或者用默认的)。本例用 ``libvirt-pool`` + 作存储池名,配备了 128 个归置组。 :: ceph osd pool create libvirt-pool 128 128 - 验证存储池是否存在。 - :: + 验证存储池是否存在。 :: ceph osd lspools -#. `创建一 Ceph 用户`_\ ( 0.9.7 版之前的话用 ``client.admin`` ),本例用 \ - ``client.libvirt`` 、且权限限制到 ``libvirt-pool`` 。 - :: +#. `创建一 Ceph 用户`_\ ( 0.9.7 版之前的话用 ``client.admin`` + ),本例用 ``client.libvirt`` 、且权限限制到 + ``libvirt-pool`` 。 :: ceph auth get-or-create client.libvirt mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=libvirt-pool' - 验证名字是否存在。 - :: + 验证名字是否存在。 :: ceph auth list - **注:** ``libvirt`` 访问 Ceph 时将用 ``libvirt`` 作为 ID ,而不是 \ - ``client.libvirt`` 。关于 ID 和名字不同的详细解释请参考\ `用户管理——用户`_\ \ - 和\ `用户管理——命令行界面`_\ 。 + **注:** ``libvirt`` 访问 Ceph 时将用 ``libvirt`` 作为 ID ,\ + 而不是 ``client.libvirt`` 。关于 ID 和名字不同的详细解释请\ + 参考\ `用户管理——用户`_\ 和\ `用户管理——命令行界面`_\ 。 #. 用 QEMU 在 RBD 存储池中\ `创建一映像`_\ 。本例中映像名为 \ - ``new-libvirt-image`` 、存储池为 ``libvirt-pool`` 。 - :: + ``new-libvirt-image`` 、存储池为 ``libvirt-pool`` 。 :: qemu-img create -f rbd rbd:libvirt-pool/new-libvirt-image 2G - 验证映像是否存在。 - :: + 验证映像是否存在。 :: rbd -p libvirt-pool ls - **注:**\ 你也可以用 `rbd create`_ 创建映像,但我们建议顺便确认下 QEMU 可正常运\ - 行。 + **注:**\ 你也可以用 `rbd create`_ 创建映像,但我们建议顺\ + 便确认下 QEMU 可正常运行。 +.. _Preparing the VM Manager: + 准备虚拟机管理器 ================ -即使没 VM 管理器你也可以用 ``libvirt`` ,但是用 ``virt-manager`` 创建域更简单。 +即使没 VM 管理器你也可以用 ``libvirt`` ,但是用 ``virt-manager`` +创建域更简单。 -#. 安装个虚拟机管理器,详情见 `KVM/VirtManager`_ 。 - :: +#. 安装个虚拟机管理器,详情见 `KVM/VirtManager`_ 。 :: sudo apt-get install virt-manager #. 下载一 OS 映像。 -#. 启动虚拟机管理器。 - :: +#. 启动虚拟机管理器。 :: sudo virt-manager +.. _Creating a VM: + 新建虚拟机 ========== @@ -118,23 +121,22 @@ Ceph 块设备支持 QEMU/KVM ,所以你可以在 Ceph 块设备之上运行 #. 点击 **Create New Virtual Machine** 按钮。 -#. 为新虚拟机域命名,本例中我们用 ``libvirt-virtual-machine`` ,你可以任意命名,在\ - 后续命令行和配置实例中替换掉 ``libvirt-virtual-machine`` 即可。 - :: +#. 为新虚拟机域命名,本例中我们用 ``libvirt-virtual-machine`` ,\ + 你可以任意命名,在后续命令行和配置实例中替换掉 + ``libvirt-virtual-machine`` 即可。 :: libvirt-virtual-machine -#. 导入映像。 - :: +#. 导入映像。 :: /path/to/image/recent-linux.img - **注:**\ 导入一个近期映像,一些较老的映像未必能正确地重扫描虚拟设备。 + **注:**\ 导入一个近期映像,一些较老的映像未必能正确地重扫\ + 描虚拟设备。 #. 配置并启动 VM 。 -#. 用 ``virsh list`` 验证 VM 域存在。 - :: +#. 用 ``virsh list`` 验证 VM 域存在。 :: sudo virsh list @@ -143,12 +145,15 @@ Ceph 块设备支持 QEMU/KVM ,所以你可以在 Ceph 块设备之上运行 #. 改配置让它使用 Ceph 前停止 VM 。 +.. _Configuring the VM: + 配置 VM ======= -配置 VM 使用 Ceph 时,切记尽量用 ``virsh`` 。另外, ``virsh`` 命令通常需要 root \ -权限(如 ``sudo`` ),否则不会返回正确结果或提示你需要 root 权限, ``virsh`` 命令\ -参考见 `Virsh 命令参考`_\ 。 +配置 VM 使用 Ceph 时,切记尽量用 ``virsh`` 。另外, ``virsh`` +命令通常需要 root 权限(如 ``sudo`` ),否则不会返回正确结果\ +或提示你需要 root 权限, ``virsh`` 命令参考见 +`Virsh 命令参考`_\ 。 #. 用 ``virsh edit`` 打开配置文件。 :: @@ -167,16 +172,17 @@ Ceph 块设备支持 QEMU/KVM ,所以你可以在 Ceph 块设备之上运行
- 用你的 OS 映像路径取代 ``/path/to/image/recent-linux.img`` ,可利用较快的 \ - ``virtio`` 总线的最低内核版本是 2.6.25 ,参见 `Virtio`_ 。 + 用你的 OS 映像路径取代 ``/path/to/image/recent-linux.img`` ,\ + 可利用较快的 ``virtio`` 总线的最低内核版本是 2.6.25 ,参见 + `Virtio`_ 。 - **重要:**\ 要用 ``sudo virsh edit`` 而非文本编辑器,如果你用文本编辑器编辑了 \ - ``/etc/libvirt/qemu`` 下的配置文件, ``libvirt`` 未必能感知你做的更改。如果 \ - ``/etc/libvirt/qemu`` 下的 XML 文件和 ``sudo virsh dumpxml {vm-domain-name}`` \ + **重要:**\ 要用 ``sudo virsh edit`` 而非文本编辑器,如果\ + 你用文本编辑器编辑了 ``/etc/libvirt/qemu`` 下的配置文件, + ``libvirt`` 未必能感知你做的更改。如果 ``/etc/libvirt/qemu`` + 下的 XML 文件和 ``sudo virsh dumpxml {vm-domain-name}`` \ 输出结果内容不同, VM 可能会运行异常。 -#. 把你创建的 Ceph RBD 映像创建为 ``