en to zh translation catalogue (336 entries)

note: type: Title ==
en: Basic administrative tasks / Setup
zh: 基本管理任务/设置

note: type: Plain text
en: LINSTOR is a configuration management system for storage on Linux systems.  It manages LVM logical volumes and/or ZFS ZVOLs on a cluster of nodes. It leverages DRBD for replication between different nodes and to provide block storage devices to users and applications. It manages snapshots, encryption and caching of HDD backed data in SSDs via bcache.
zh: LINSTOR是一个用于Linux系统上存储的配置管理系统。它管理节点集群上的LVM逻辑卷和/或ZFS ZVOLs。它利用DRBD在不同节点之间进行复制，并为用户和应用程序提供块存储设备。它通过bcache管理SSD中HDD备份数据的快照、加密和缓存。

note: Troubleshooting for LINSTOR guide? This chapter outlines typical administrative tasks encountered during day-to-day operations. It does not cover troubleshooting tasks, these are covered in detail in <<ch-troubleshooting>>. type: Title ===
en: Concepts and Terms
zh: 概念和术语

note: type: Plain text
en: This section goes over core concepts and terms that you will need to familiarize yourself with to understand how LINSTOR works and deploys storage. The section is laid out in a "ground up" approach.
zh: 本节将介绍一些核心概念和术语，您需要熟悉这些概念和术语才能理解LINSTOR是如何工作和部署存储的。这一部分是以 "ground up" 的方式布置的。

note: type: Title ====
en: Installable Components
zh: 可安装组件

note: type: Plain text
en: A LINSTOR setup requires at least one active controller and one or more satellites.
zh: LINSTOR设置至少需要一个活动的controller和一个或多个satellites。

note: Once the chapter on making your controller HA is done we need to link that here type: Plain text
en: The _linstor-controller_ contains the database that holds all configuration information for the whole cluster. It makes all decisions that need to have a view of the whole cluster. The controller is typically deployed as a HA service using Pacemaker and DRBD as it is a crucial part of the system. Multiple controllers can be used for LINSTOR but only one can be active.
zh: _linstor-controller_ 包含保存整个集群的所有配置信息的数据库。它做出所有需要查看整个集群的决策。由于控制器是系统的关键部分，因此通常使用Pacemaker和DRBD将其部署为HA服务。多个控制器可用于LINSTOR，但只能有一个处于活动状态。

note: type: Plain text
en: The _linstor-satellite_ runs on each node where LINSTOR consumes local storage or provides storage to services. It is stateless; it receives all the information it needs from the controller. It runs programs like `lvcreate` and `drbdadm`. It acts like a node agent.
zh: _linstor-satellite_ 运行在每个LINSTOR使用本地存储或为服务提供存储的节点上。它是无状态的；它从控制器接收所需的所有信息。它运行 `lvcreate` 和 `drbdadm` 等程序。它行为方式就像一个节点代理。

note: type: Plain text
en: The _linstor-client_ is a command line utility that you use to issue commands to the system and to investigate the status of the system.
zh: _linstor-client_ 是一个命令行实用程序，用于向系统发送命令并检查系统的状态。

note: type: Title ====
en: Objects
zh: 对象

note: type: Plain text
en: Objects are the end result which LINSTOR presents to the end-user or application, such as; Kubernetes/OpenShift, a replicated block device (DRBD), NVMeOF target, etc.
zh: 对象是LINSTOR呈现给最终用户或应用程序的最终结果，例如Kubernetes/OpenShift、复制块设备（DRBD）、NVMeOF目标等。

note: type: Plain text
en: Node
zh: 节点

note: type: Plain text
en: Node's are a server or container that participate in a LINSTOR cluster. The _Node_ attribute defines:
zh: 节点是参与LINSTOR集群的服务器或容器。 _Node_ 属性定义如下：

note: type: Plain text
en: Determines which LINSTOR cluster the node participates in
zh: 确定节点参与哪个LINSTOR集群

note: type: Plain text
en: Sets the role of the node: Controller, Satellite, Auxiliary
zh: 设置节点的角色：Controller, Satellite, Auxiliary

note: type: Plain text
en: *NetInterface* objects define the node's connectivity
zh: *网络接口* 对象定义了节点的网络连接

note: type: Title =====
en: NetInterface
zh: 网络接口

note: type: Plain text
en: As the name implies, this is how you define the interface/address of a node's network interface.
zh: 顾名思义，这就是定义节点网络接口的接口/地址的方式。

note: type: Plain text
en: Definitions define attributes of an object, they can be thought of as profile or template. Objects created will inherit the configuration defined in the definitions. A definition must be defined prior to creating the associated object.  For example; you must create a _ResourceDefinition_ prior to creating the _Resource_
zh: Definitions定义了一个对象的属性，它们可以被看作是概要文件或模板。创建的对象将继承definitions中定义的配置。必须在创建关联对象之前定义definitions。例如，在创建 _Resource_ 之前，必须先创建 _ResourceDefinition__

note: type: Plain text
en: Defines the name of a storage pool
zh: 定义存储池的名称

note: type: Plain text
en: Resource definitions define the following attributes of a resource:
zh: 资源 definitions定义资源的以下属性：

note: type: Plain text
en: The name of a DRBD resource
zh: DRBD资源的名称

note: type: Plain text
en: The TCP port for DRBD to use for the resource's connection
zh: 用于资源连接的DRBD的TCP端口

note: type: Plain text
en: Volume definitions define the following:
zh: Volume definitions 定义如下：

note: type: Plain text
en: A volume of a DRBD resource
zh: DRBD资源的卷

note: type: Plain text
en: The size of the volume
zh: 卷的大小

note: type: Plain text
en: The volume number of the DRBD resource's volume
zh: DRBD资源卷的卷号

note: type: Plain text
en: The meta data properties of the volume
zh: 卷的元数据属性

note: type: Plain text
en: The minor number to use for the DRBD device associated with the DRBD volume
zh: 用于与DRBD卷关联的DRBD设备的次要编号

note: type: Plain text
en: The _StoragePool_ identifies storage in the context of LINSTOR. It defines:
zh: _StoragePool_ 用于标识LINSTOR上下文中的存储。它定义了：

note: type: Plain text
en: The configuration of a storage pool on a specific node
zh: 特定节点上存储池的配置

note: type: Plain text
en: The storage back-end driver to use for the storage pool on the cluster node (LVM, ZFS, etc)
zh: 用于群集节点上的存储池的存储后端驱动程序（LVM、ZFS等）

note: type: Plain text
en: The parameters and configuration to pass to the storage backed driver
zh: 要传递给存储备份驱动程序的参数和配置

note: type: Plain text
en: LINSTOR has now has expanded its capabilities to manage a broader set of storage technologies outside of just DRBD. A _Resource_:
zh: LINSTOR现在已经扩展了它的能力，在DRBD之外管理更广泛的存储技术。 _Resource_ 包括：

note: type: Plain text
en: Represents the placement of a DRBD resource, as defined within the _ResourceDefinition_
zh: 表示在 _ResourceDefinition_ 中定义的DRBD资源的位置

note: type: Plain text
en: Places a resource on a node in the cluster
zh: 在群集中的节点上放置资源

note: type: Plain text
en: Defines the placement of a _ResourceDefinition_ on a node
zh: 定义节点上 _ResourceDefinition_ 的位置

note: type: Plain text
en: Volumes are a subset of a _Resource_. A _Resource_ could have multiple volumes, for example you may wish to have your database stored on slower storage than your logs in your MySQL cluster.  By keeping the _volumes_ under a single _resource_ you are essentially creating a consistency group.  The _Volume_ attribute can define also define attributes on a more granular level.
zh: Volumes是 _Resource_ 的子集。一个 _Resource_ 可能有多个volumes，例如，您可能希望将数据库存储在比MySQL集群中的日志慢的存储上。通过将 _volumes_ 保持在单个 _resource_ 下，实际上就是在创建一致性组。 _Volume_ 属性还可以定义更细粒度级别的属性。

note: type: Title ===
en: Broader Context
zh: 更广泛的背景

note: type: Plain text
en: While LINSTOR might be used to make the management of DRBD more convenient, it is often integrated with software stacks higher up.  Such integration exist already for Kubernetes, OpenStack, OpenNebula and Proxmox. Chapters specific to deploying LINSTOR in these environments are included in this guide.
zh: 虽然LINSTOR可以用来使DRBD的管理更加方便，但它通常与更高层次的软件栈集成。这种集成已经存在于Kubernetes、OpenStack、OpenNebula和Proxmox中。本指南中包含了在这些环境中部署LINSTOR的特定章节。

note: type: Plain text
en: The southbound drivers used by LINSTOR are LVM, thinLVM and ZFS.
zh: LINSTOR使用的南向驱动程序是LVM、thinLVM和ZFS。

note: type: Title ===
en: Packages
zh: 包

note: type: Plain text
en: LINSTOR is packaged in both the .rpm and the .deb variants:
zh: LINSTOR以.rpm和.deb两种包分发：

note: type: Plain text
en: _linstor-client_ contains the command line client program. It depends on python which is usually already installed. In RHEL 8 systems you will need to symlink python
zh: _linstor-client_ 包含命令行客户端程序。这取决于通常已经安装的python。在RHEL8系统中，需要创建python符号链接

note: type: Plain text
en: _linstor-controller_ and _linstor-satellite_ Both contain systemd unit files for the services. They depend on Java runtime environment (JRE) version 1.8 (headless) or higher.
zh: _linstor-controller_ 和 _linstor-satellite_ 都包含服务的系统单元文件。它们依赖于Java runtime environment（JRE）1.8版（headless）或更高版本。

note: type: Plain text
en: For further detail about these packages see the <<Installable Components,Installable Components>> section above.
zh: 有关这些软件包的更多详细信息，请参见上面的<<Installable Components,Installable Components>>部分。

note: type: Plain text
en: If you have a support subscription to LINBIT, you will have access to our certified binaries via our repositories.
zh: 如果您订阅了LINBIT的支持，那么您将可以通过我们的官方仓库访问我们经过认证的二进制文件。

note: type: Title ===
en: Installation
zh: 安装

note: type: Plain text
en: If you want to use LINSTOR in containers skip this Topic and use the "Containers" section below for the installation.
zh: 如果要在容器中使用LINSTOR，请跳过此主题并使用下面的 "容器" 部分进行安装。

note: type: Plain text
en: If you want to have the option of creating replicated storage using DRBD, you will need to install _drbd-dkms_ and _drbd-utils_. These packages will need to be installed on all nodes. You will also need to choose a volume manager, either ZFS or LVM, in this instance we're using LVM.
zh: 如果您想选择使用DRBD创建复制存储，则需要安装 _drbd-dkms_ 和  _drbd-utils_ 。这些包需要安装在所有节点上。您还需要选择一个卷管理器，ZFS或LVM，在本例中我们使用的是LVM。

note: type: Plain text
en: Depending on whether your node is a LINSTOR controller, satellite, or both (Combined) will determine what packages are required on that node. For combined type nodes, we'll need both the controller and satellite LINSTOR package.
zh: 根据节点是LINSTOR controller、satellite还是两者（组合）将确定该节点上需要哪些包。对于组合型节点，我们需要controller和satellite 的LINSTOR包。

note: type: Plain text
en: Combined node:
zh: 组合节点：

note: type: Plain text
en: That will make our remaining nodes our Satellites, so we'll need to install the following packages on them:
zh: 这将使我们剩余的节点成为我们的Satellites，因此我们需要在它们上安装以下软件包：

note: type: Title ====
en: SUSE Linux Enterprise Server
zh: SUSE Linux企业服务器

note: type: Plain text
en: SLES High Availability Extension (HAE) includes DRBD.
zh: SLES高可用性扩展（HAE）包括DRBD。

note: type: Plain text
en: On SLES, DRBD is normally installed via the software installation component of YaST2. It comes bundled with the High Availabilty package selection.
zh: 在SLES上，DRBD通常通过YaST2的软件安装组件安装。它与高可用性软件包捆绑在一起。

note: type: Plain text
en: As we download DRBD's newest module we can check if the LVM-tools are up to date as well. User who prefer a command line install may simply issue the following command to get the newest DRBD and LVM version:
zh: 当我们下载DRBD的最新模块时，我们可以检查LVM工具是否也是最新的。喜欢命令行安装的用户可用以下命令获得最新的DRBD和LVM版本：

note: type: Plain text
en: CentOS has had DRBD 8 since release 5. For DRBD 9 you'll need to look at EPEL and similar sources.  Alternatively, if you have an active support contract with LINBIT you can utilize our RHEL 8 repositories.  DRBD can be installed using `yum`. We can also check for the newest version of the LVM-tools as well.
zh: CentOS从第5版开始就有了DRBD 8。对于DRBD 9，您需要查看EPEL和类似的源代码。或者，如果您与LINBIT有签订支持合同，您可以利用我们的RHEL 8存储库。可以使用 `yum` 安装DRBD。我们也可以检查最新版本的LVM工具。

note: type: Plain text
en: LINSTOR *requires* DRBD 9 if you wish to have replicated storage. This requires an external repository to be configured, either LINBIT's or a 3rd parties.
zh: 如果要复制存储，LINSTOR *需要* DRBD 9。这需要配置外部存储库，可以是LINBIT的，也可以是第三方的。

note: type: Plain text
en: On RHEL 8 systems you will need to install python2 for the linstor-client to work.
zh: 在RHEL8系统上，需要安装python2才能让linstor客户端工作。

note: type: Title ===
en: Upgrading
zh: 升级

note: type: Plain text
en: LINSTOR doesn't support rolling upgrade, controller and satellites must have the same version, otherwise the controller with discard the satellite with a `VERSION_MISMATCH`.  But this isn't a problem, as the satellite won't do any actions as long it isn't connected to a controller and DRBD will not be disrupted by any means.
zh: LINSTOR不支持滚动升级，controller和satellites必须具有相同的版本，否则controller将丢弃具有 `版本不匹配` 的satellite。但这不是问题，因为satellite不会做任何动作，只要它没有连接到controller，DRBD就不会被任何方式中断。

note: type: Plain text
en: If you are using the embedded default H2 database and the linstor-controller package is upgraded an automatic backup file of the database will be created in the default `/var/lib/linstor` directory.  This file is a good restore point if for any reason a linstor-controller database migration should fail, than it is recommended to report the error to Linbit and restore the old database file and downgrade to your previous controller version.
zh: 如果您使用的是嵌入的H2数据库，并且升级了linstor-controller包，那么将在默认的 `/var/lib/linstor` 目录中创建数据库的自动备份文件。如果由于任何原因linstor-controller数据库迁移失败，则此文件是一个很好的还原点，建议将错误报告给Linbit并还原旧的数据库文件并降级到以前的controller版本。

note: type: Plain text
en: If you use any external database or etcd, it is recommended to do a manually backup of your current database to have a restore point.
zh: 如果使用任何外部数据库或etcd，建议手动备份当前数据库以获得还原点。

note: type: Plain text
en: So first upgrade the `linstor-controller`, `linstor-client` package on you controller host and restart the `linstor-controller`, the controller should start and all of it's client should show `OFFLINE(VERSION_MISMATCH)`.  After that you can continue upgrading `linstor-satellite` on all satellite nodes and restart them, after a short reconnection time they should all show `ONLINE` again and your upgrade is finished.
zh: 因此，首先升级controller主机上的 `linstor-controller` 和 `linstor-client` 包，然后重新启动 `linstor-controler`, controller应启动，其所有客户端应显示 `OFFLINE（VERSION_MISMATCH）`。之后，您可以继续升级所有卫星节点上的`linstor-satellite`, 并重新启动它们，在短时间重新连接后，它们都应再次显示 `ONLINE`，并且您的升级已完成。

note: type: Title ===
en: Containers
zh: 容器

note: type: Plain text
en: LINSTOR is also available as containers. The base images are available in LINBIT's container registry, `drbd.io`.
zh: LINSTOR也可用容器运行。基础镜像可以在LINBIT的容器registry仓库 `drbd.io` 中找到。

note: type: Plain text
en: In order to access the images, you first have to login to the registry (reach out to sales@linbit.com for credentials):
zh: 要访问这些镜像，首先必须登录registry（访问sales@linbit.com获取凭据）：

note: type: Plain text
en: The containers available in this repo are:
zh: 此repo中可用的容器包括：

note: type: Plain text
en: An up to date list of available images with versions can be retrieved by opening http://drbd.io in your browser. Make sure to access the host via "http", as the registry's images themselves are served via "https".
zh: 通过在浏览器中打开http://drbd.io，可以可用image的最新列表。确保通过 "http"访问主机，因为registry的image本身通过 "https"提供服务。

note: type: Plain text
en: To load the kernel module, needed only for LINSTOR satellites, you'll need to run a `drbd9` container in privileged mode. The kernel module containers either retrieve an official LINBIT package from a customer repository, or they try to build the kernel modules from source. If you intend to build from source, you need to have the according kernel headers (e.g., `kernel-devel`) installed on the host. There are 3 ways to execute such a module load container:
zh: 要加载仅用于LINSTOR satellites 的内核模块，需要在特权模式下运行 `drbd9` 容器。内核模块容器要么从客户存储库中检索正式的LINBIT包，要么尝试从源代码构建内核模块。如果要从源代码构建，则需要在主机上安装相应的内核头文件（例如， `kernel-devel`) 。执行这样的模块加载容器有三种方法：

note: type: Plain text
en: Specifying a LINBIT node hash and a distribution.
zh: 指定LINBIT节点哈希和容器版本。

note: type: Plain text
en: Bind-mounting an existing repository configuration.
zh: 绑定装入现有仓库配置。

note: type: Plain text
en: Not doing one of the above to trigger a build from source.
zh: 不执行上述操作之一, 直接从源代码触发生成。

note: type: Plain text
en: Example using a hash and a distribution:
zh: 使用哈希和容器版本的示例：

note: type: Plain text
en: Example using an existing repo config.
zh: 使用现有repo配置的示例。

note: type: Plain text
en: In both cases (hash + distribution, as well as bind-mounting) the hash or config has to be from a node that has a special property set. Feel free to contact our support, and we set this property.
zh: 在这两种情况下（哈系+版本以及绑定挂载），哈系或配置必须来自具有特殊属性集的节点。请随时与我们的支持联系，我们将设置此属性。

note: type: Plain text
en: Example building from shipped source (RHEL based):
zh: 从已分发代码生成的示例（基于RHEL）：

note: type: Plain text
en: Example building from shipped source (Debian based):
zh: 从已发代码构建的示例（基于Debian）：

note: type: Plain text
en: Do *not* bind-mount `/usr/lib` on RHEL based systems! And do *not* forget to bind-mount it on Debian based ones.
zh: *不要* bind-mount `/usr/lib` 到基于RHEL的系统上！也不要把它bind-mount到基于Debian的系统上。

note: type: Plain text
en: For now (i.e., pre DRBD 9 version "9.0.17"), you must use the containerized DRBD kernel module, as opposed to loading a kernel module onto the host system. If you intend to use the containers you should not install the DRBD kernel module on your host systems. For DRBD version 9.0.17 or greater, you can install the kernel module as usual on the host system, but you need to make sure to load the module with the `usermode_helper=disabled` parameter (e.g., `modprobe drbd usermode_helper=disabled`).
zh: 到现在为止（即，DRBD 9之前的版本 \9.0.17"），您必须使用容器化DRBD内核模块，而不是将内核模块加载到主机系统上。如果要使用容器，则不应在主机系统上安装DRBD内核模块。对于DRBD版本9.0.17或更高版本，可以像往常一样在主机系统上安装内核模块，但需要确保使用  `usermode_helper=disabled`参数（例如， `modprobe drbd usermode_helper=disabled` ）加载模块。

note: type: Plain text
en: Then run the LINSTOR satellite container, also privileged, as a daemon:
zh: 然后以守护进程的身份运行LINSTOR satellite容器, 也需具有特权：

note: type: Plain text
en: `net=host` is required for the containerized `drbd-utils` to be able to communicate with the host-kernel via netlink.
zh: `net=host` 是容器化的 `drbd-utils` 通过netlink与主机内核通信所必需的。

note: type: Plain text
en: To run the LINSTOR controller container as a daemon, mapping ports `3370`, `3376` and `3377` on the host to the container:
zh: 要将LINSTOR控制器容器作为守护进程运行，请将主机上的端口 `3370` 、 `3376` 和 `3377` 映射到该容器：

note: type: Plain text
en: To interact with the containerized LINSTOR cluster, you can either use a LINSTOR client installed on a system via packages, or via the containerized LINSTOR client. To use the LINSTOR client container:
zh: 要与容器化LINSTOR集群交互，可以使用通过包安装在系统上的LINSTOR客户端，也可以通过容器化LINSTOR客户端。要使用LINSTOR客户端容器，请执行以下操作：

note: type: Plain text
en: From this point you would use the LINSTOR client to initialize your cluster and begin creating resources using the typical LINSTOR patterns.
zh: 从这里开始，您可以使用LINSTOR客户端初始化集群，并开始使用典型的LINSTOR模式创建资源。

note: type: Plain text
en: To stop and remove a daemonized container and image:
zh: 要停止并删除守护的容器和映像，请执行以下操作：

note: type: Title ===
en: Initializing your cluster
zh: 初始化集群

note: type: Plain text
en: We assume that the following steps are accomplished on *all* cluster nodes:
zh: 我们假设在 *所有* 集群节点上已完成以下步骤：

note: type: Plain text
en: The DRBD9 kernel module is installed and loaded
zh: DRBD9内核模块已安装并加载

note: type: Plain text
en: `drbd-utils` are installed
zh: 已安装 `drbd-utils`

note: type: Plain text
en: `LVM` tools are installed
zh: `LVM` 工具已安装

note: type: Plain text
en: `linstor-controller` and/or `linstor-satellite` its dependencies are installed
zh: `linstor-controller` 和/或 `linstor-satellite` 的依赖项已安装

note: type: Plain text
en: The `linstor-client` is installed on the `linstor-controller` node
zh: `linstor-client` 已安装在 `linstor-controller` 节点上

note: type: Plain text
en: Start and enable the linstor-controller service on the host where it has been installed:
zh: 在已安装linstor-controller的主机上启动并启用该服务：

note: type: Plain text
en: If you are sure the linstor-controller service gets automatically enabled on installation you can use the following command as well:
zh: 如果您确定linstor控制器服务在安装时自动启用，则还可以使用以下命令：

note: type: Title ===
en: Using the LINSTOR client
zh: 使用LINSTOR客户端

note: type: Plain text
en: Whenever you run the LINSTOR command line client, it needs to know where your linstor-controller runs. If you do not specify it, it will try to reach a locally running linstor-controller listening on IP `127.0.0.1` port `3376`. Therefore we will use the `linstor-client` on the same host as the `linstor-controller`.
zh: 无论何时运行LINSTOR命令行客户端，它都需要知道listor-controller的运行位置。如果不指定它，它将尝试访问本地运行的linstor-controller，该控制器侦听IP `127.0.0.1` 端口是 `3376` 。这样，我们可以在与 `linstor-controller` 相同的主机上使用 `linstor-client` 。

note: type: Plain text
en: The `linstor-satellite` requires ports 3366 and 3367. The `linstor-controller` requires ports 3376 and 3377. Make sure you have these ports allowed on your firewall.
zh: `linstor-satellite` 需要端口3366和3367。 `linstor-controller` 需要端口3376和3377。确保防火墙上允许这些端口。

note: type: Plain text
en: should give you an empty list and not an error message.
zh: 应该输出一个空列表，而不是一条错误信息。

note: type: Plain text
en: You can use the `linstor` command on any other machine, but then you need to tell the client how to find the linstor-controller. As shown, this can be specified as a command line option, an environment variable, or in a global file:
zh: 您可以在任何其他机器上使用 `linstor` 命令，但随后您需要告诉客户端如何找到linstor-controller。如下所示，可以将其指定为命令行选项、环境变量或全局文件：

note: type: Plain text
en: Alternatively you can create the `/etc/linstor/linstor-client.conf` file and populate it like below.
zh: 或者，您可以创建 `/etc/linstor/linstor-client.conf` 文件，并按如下方式填充它。

note: type: Plain text
en: If you have multiple linstor-controllers configured you can simply specify them all in a comma separated list. The linstor-client will simply try them in the order listed.
zh: 如果配置了多个linstor控制器，只需在逗号分隔的列表中指定它们即可。linstor客户机会按照列出的顺序进行尝试。

note: type: Plain text
en: The linstor-client commands can also be used in a much faster and convenient way by only writing the starting letters of the parameters e.g.: `linstor node list` -> `linstor n l`
zh: linstor-client命令也可以通过只写参数的起始字母来快速方便地使用，例如： `linstor node list` -> `linstor n l`

note: type: Title ===
en: Adding nodes to your cluster
zh: 向集群添加节点

note: type: Plain text
en: The next step is to add nodes to your LINSTOR cluster. You need to provide:
zh: 下一步是将节点添加到LINSTOR集群。您需要提供：

note: type: Plain text
en: A node name which *must* match the output of `uname -n`
zh: 一个节点名，*必须* 匹配 `uname -n` 的输出`

note: type: Plain text
en: The IP address of the node.
zh: 节点的IP地址。

note: type: Plain text
en: When you use `linstor node list` you will see that the new node is marked as offline. Now start and enable the linstor-satellite on that node so that the service comes up on reboot as well:
zh: 使用 `linstor node list`时，将看到新节点标记为脱机。现在启动并启用该节点上的 linstor-satellite，以便服务在重新启动时也启动：

note: type: Plain text
en: You can also use `systemctl start linstor-satellite` if you are sure that the service is already enabled as default and comes up on reboot.
zh: 如果您确定该服务已默认启用并在重新启动时启动，则还可以使用  `systemctl start linstor-satellite` 。

note: type: Plain text
en: About 10 seconds later you will see the status in `linstor node list` becoming online. Of course the satellite process may be started before the controller knows about the existence of the satellite node.
zh: 大约10秒后，您将看到 `linstor node list` 中的状态变为联机。当然，在controller知道satellite节点的存在之前，satellite进程已经启动完毕。

note: type: Plain text
en: In case the node which hosts your controller should also contribute storage to the LINSTOR cluster, you have to add it as a node and start the linstor-satellite as well.
zh: 如果承载controller的节点也应该为LINSTOR集群提供存储空间，则必须将其添加为节点并启动linstor-satellite。

note: type: Title ===
en: Storage pools
zh: 存储池

note: type: Plain text
en: <<StoragePool,StoragePools>> identify storage in the context of LINSTOR.  To group storage pools from multiple nodes, simply use the same name on each node.  For example, one valid approach is to give all SSDs one name and all HDDs another.
zh: <<StoragePool,StoragePools>>在LINSTOR上下文中用于标识存储。要对多个节点的存储池进行分组，只需在每个节点上使用相同的名称。例如，一种有效的方法是给所有的ssd取一个名字，给所有的hdd取另一个名字。

note: type: Plain text
en: On each host contributing storage, you need to create either an LVM VG or a ZFS zPool. The VGs and zPools identified with one LINSTOR storage pool name may have different VG or zPool names on the hosts, but do yourself a favor and use the same VG or zPool name on all nodes.
zh: 在每个提供存储的主机上，您需要创建LVM VG或ZFS zPool。使用一个LINSTOR存储池名称标识的VG和zPool在主机上可能有不同的VG或zPool名称，但请您自己考虑，是否在所有节点上使用相同的VG或zPool名称。

note: type: Plain text
en: These then need to be registered with LINSTOR:
zh: 然后需要向LINSTOR注册：

note: type: Plain text
en: The storage pool name and common metadata is referred to as a _storage pool definition_.  The listed commands create a storage pool definition implicitly.  You can see that by using `linstor storage-pool-definition list`.  Creating storage pool definitions explicitly is possible but not necessary.
zh: 存储池名称和公共元数据称为 _存储池定义_ 。上面列出的命令隐式创建了存储池定义。使用 `linstor storage-pool-definition list` 可以看到这一点。也可以显式创建存储池定义，但不是必需的。

note: type: Plain text
en: To list your storage-pools you can use:
zh: 要列出您可以使用的存储池，请执行以下操作：

note: type: Plain text
en: or using the short version
zh: 或者使用短版本

note: type: Plain text
en: In case anything goes wrong with the storage pool's VG/zPool, e.g. the VG having been renamed or somehow became invalid you can delete the storage pool in LINSTOR with the following command, given that only resources with all their volumes in the so-called 'lost' storage pool are attached. This feature is available since LINSTOR v0.9.13.
zh: 如果存储池的VG/zPool出现任何问题，例如VG已被重命名或以某种方式变得无效，您可以使用以下命令删除LINSTOR中的存储池，前提是只有资源及其所有卷都位于所谓的 `lost` 存储池中。此功能自LINSTOR v0.9.13起可用。

note: type: Plain text
en: Should the deletion of the storage pool be prevented due to attached resources or snapshots with some of its volumes in another still functional storage pool, hints will be given in the 'status' column of the corresponding list-command (e.g. `linstor resource list`). After deleting the LINSTOR-objects in the lost storage pool manually, the lost-command can be executed again to ensure a complete deletion of the storage pool and its remaining objects.
zh: 如果由于附加的资源或快照（其中一些卷位于另一个仍在运行的存储池中）而阻止删除存储池，则会在相应list命令的 `status` 列中给出提示（例如 `linstor resource list` )   手动删除丢失的存储池中的LINSTOR对象后，可以再次执行lost命令，以确保完全删除了存储池及其剩余对象。

note: type: Title ====
en: A storage pool per backend device
zh: 每个后端设备的存储池

note: type: Plain text
en: In clusters where you have only one kind of storage and the capability to hot-repair storage devices, you may choose a model where you create one storage pool per physical backing device. The advantage of this model is to confine failure domains to a single storage device.
zh: 在仅只有一种存储和热修复存储设备功能的集群中，可以选择一种模型，在该模型中为每个物理备份设备创建一个存储池。此模型的优点是将故障域限制在单个存储设备上。

note: type: Title ===
en: Resource groups
zh: 资源组

note: type: Plain text
en: A resource group is a parent object of a resource definition where all property changes made on a resource group will be inherited by it's resource definition children. The resource group also stores settings for automatic placement rules and can spawn a resource definition depending on the stored rules.
zh: 资源组是资源定义的父对象，其中对资源组所做的所有属性更改都将由其资源定义的子级继承。资源组还存储自动放置规则的设置，并可以根据存储的规则生成资源定义。

note: type: Plain text
en: In simpler terms, resource groups are like templates that define characteristics of resources created from them. Changes to these pseudo templates will be applied to all resources that were created from the resource group, retroactively.
zh: 简单地说，资源组就像模板，定义从它们创建的资源的特性。对这些伪模板的更改将应用于从资源组中创建的所有资源，并具有追溯性。

note: type: Plain text
en: Using resource groups to define how you'd like your resources provisioned should be considered the de facto method for deploying volumes provisioned by LINSTOR. Chapters that follow which describe creating each _resource_ from a _resource-definition_ and _volume-definition_ should only be used in special scenarios.
zh: 使用资源组定义资源配置方式应被视为部署由LINSTOR配置的卷的典型方法。后面描述从 _资源定义_ 和 _卷定义_ 创建每个 _资源_ 的章节应仅在特殊情况下使用。

note: type: Plain text
en: Even if you choose not to create and use _resource-groups_ in your LINSTOR cluster, all resources created from _resource-definitions_ and _volume-definitions_ will exist in the 'DfltRscGrp' _resource-group_.
zh: 即使您选择不在LINSTOR集群中创建和使用 _资源组_ ，从 _资源定义_ 和 _卷定义_ 创建的所有资源都将存在于 `DfltRscGrp`  _资源组_ 中。

note: type: Plain text
en: A simple pattern for deploying resources using resource groups would look like this:
zh: 使用资源组部署资源的简单模式如下：

note: type: Plain text
en: The commands above would result in a resource named 'my_ssd_res' with a 20GB volume replicated twice being automatically provisioned from nodes who participate in the storage pool named 'pool_ssd'.
zh: 上述命令创建出一个名为 `my_ssd_res` 的资源，其中一个定义了双副本数的20GB卷将从名为 `pool_ssd` 的存储池的节点自动配置。

note: type: Plain text
en: A more useful pattern could be to create a resource group with settings you've determined are optimal for your use case. Perhaps you have to run nightly online verifications of your volumes' consistency, in that case, you could create a resource group with the 'verify-alg' of your choice already set so that resources spawned from the group are pre-configured with 'verify-alg' set:
zh: 一个更有用的模式可能是创建一个资源组，其中的设置是您确定的最适合您的用例的。也许您必须对卷的一致性进行夜间联机验证，在这种情况下，您可以创建一个资源组，其中已经设置了您选择的 `verify-alg`  ，以便从该组生成的资源预先配置为 `verify-alg` 集：

note: type: Plain text
en: The commands above result in twenty 10GiB resources being created each with the 'crc32c' 'verify-alg' pre-configured.
zh: 上述命令创建出20个10GiB资源，每个资源都预先配置了 `crc32c` 和 `verify alg`。

note: type: Plain text
en: You can tune the settings of individual resources or volumes spawned from resource groups by setting options on the respective _resource-definition_ or _volume-definition_. For example, if 'res11' from the example above is used by a very active database receiving lots of small random writes, you might want to increase the 'al-extents' for that specific resource:
zh: 您可以通过在相应的 _资源定义_ 或 _卷定义_ 上设置选项来优化从资源组派生的单个资源或卷的设置。例如，如果上面示例中的 `res11` 被一个接收大量小的随机写入的、非常活跃的数据库使用，则可能需要增加该特定资源的 `al-extents` :

note: type: Plain text
en: If you configure a setting in a _resource-definition_ that is already configured on the _resource-group_ it was spawned from, the value set in the _resource-definition_ will override the value set on the parent _resource-group_. For example, if the same 'res11' was required to use the slower but more secure 'sha256' hash algorithm in it's verifications, setting the 'verify-alg' on the _resource-definition_ for 'res11' would override the value set on the _resource-group_:
zh: 如果在 _资源定义_ 中配置的设置已在其派生的 _资源组_ 上配置，则 _资源定义_ 中设置的值将覆盖父 _资源组_ 上设置的值。例如，如果要求相同的 `res11` 在其验证中使用较慢但更安全的 `sha256` 哈希算法，则在 `res11` 的 _资源定义_ 上设置的 `verify-alg` 值将覆盖其在 _资源组_ 中设置的值:

note: type: Plain text
en: A rule of thumb for the hierarchy in which settings are inherited is the value "closer" to the resource or volume wins: _volume-definition_ settings take precedence over _volume-group_ settings, and _resource-definition_ settings take precedence over _resource-group_ settings.
zh: 继承设置的层次结构的一个经验法则是 "更接近" 资源或卷的值: _卷定义_ 设置优先于 _卷组_ 设置， _资源定义_ 设置优先于 _资源组_ 设置。

note: type: Title ===
en: Cluster configuration
zh: 集群配置

note: type: Title ====
en: Available storage plugins
zh: 可用的存储插件

note: type: Plain text
en: LINSTOR has the following supported storage plugins as of writing:
zh: LINSTOR支持如下的存储插件：

note: type: Title ===
en: Creating and deploying resources/volumes
zh: 创建和部署资源/卷

note: type: Plain text
en: In the following scenario we assume that the goal is to create a resource 'backups' with a size of '500 GB' that is replicated among three cluster nodes.
zh: 在下面的场景中，我们假设目标是创建一个大小为 `500 GB` 的资源 `备份`，该资源在三个集群节点之间复制。

note: type: Plain text
en: First, we create a new resource definition:
zh: 首先，我们创建一个新的资源定义：

note: type: Plain text
en: Second, we create a new volume definition within that resource definition:
zh: 其次，我们在该资源定义中创建一个新的卷定义：

note: type: Plain text
en: If you want to change the size of the volume-definition you can simply do that by:
zh: 如果要更改卷定义的大小，只需执行以下操作：

note: type: Plain text
en: The parameter `0` is the number of the volume in the resource `backups`. You have to provide this parameter , because resources can have multiple volumes and they are identified by a so called volume-number. This number can be found by listing the volume-definitions.
zh: 参数 `0` 是资源 `backups` 中的卷数。必须提供此参数，因为资源可以有多个卷，并且它们由所谓的卷号标识。这个数字可以通过列出卷定义来找到。

note: type: Plain text
en: The size of a volume-definition can only be decreased if it has no resource. Despite of that the size can be increased even with an deployed resource.
zh: 只有在没有资源的情况下，才能减小卷定义的大小。尽管如此，即使部署了资源，也可以增加大小。

note: type: Plain text
en: So far we have only created objects in LINSTOR's database, not a single LV was created on the storage nodes. Now you have the choice of delegating the task of placement to LINSTOR or doing it yourself.
zh: 到目前为止，我们只在LINSTOR的数据库中创建了对象，没有在存储节点上创建一个LV。现在你可以选择将安置任务派发给LINSTOR，或者自己做。

note: type: Title ====
en: Manual placement
zh: 手动放置

note: type: Plain text
en: With the `resource create` command you may assign a resource definition to named nodes explicitly.
zh: 使用 `resource create` 命令，可以将资源定义显式分配给命名节点。

note: type: Title ====
en: Autoplace
zh: 自动放置

note: type: Plain text
en: The value after autoplace tells LINSTOR how many replicas you want to have.  The storage-pool option should be obvious.
zh: autoplace之后的值告诉LINSTOR您想要多少个副本。storage-pool 选项应该很明显。

note: type: Plain text
en: Maybe not so obvious is that you may omit the `--storage-pool` option, then LINSTOR may select a storage pool on its own. The selection follows these rules:
zh: 可能不太明显的是，您可以省略 `--storage-pool` 选项，然后LINSTOR可以自己选择一个存储池。选择遵循以下规则：

note: type: Plain text
en: Ignore all nodes and storage pools the current user has no access to
zh: 忽略当前用户无权访问的所有节点和存储池

note: type: Plain text
en: Ignore all diskless storage pools
zh: 忽略所有无磁盘存储池

note: type: Plain text
en: Ignore all storage pools not having enough free space
zh: 忽略没有足够可用空间的所有存储池

note: type: Plain text
en: From the remaining storage pools, LINSTOR currently chooses the one with the most available free space.
zh: 从剩余的存储池中，LINSTOR会选择可用空间最多的存储池。

note: type: Plain text
en: If everything went right the DRBD-resource has now been created by LINSTOR.  This can be checked by looking for the DRBD block device with the `lsblk` command which should look like `drbd0000` or similar.
zh: 如果一切顺利，DRBD资源现在已经由LINSTOR创建。这时可以通过使用 `lsblk` 命令查找DRBD块设备来检查，设备名应该类似于 `drbd0000` 。

note: type: Plain text
en: Now we should be able to mount the block device of our resource and start using LINSTOR.
zh: 现在我们应该可以加载我们资源的块设备并开始使用LINSTOR。

note: type: Title ==
en: Further LINSTOR tasks
zh: 高阶LINSTOR任务

note: type: Title ===
en: DRBD clients
zh: DRBD客户端

note: type: Plain text
en: By using the `--drbd-diskless` option instead of `--storage-pool` you can have a permanently diskless DRBD device on a node. This means that the resource will appear as block device and can be mounted to the filesystem without an existing storage-device. The data of the resource is accessed over the network on another nodes with the same resource.
zh: 通过使用 `--drbd-diskless` 选项而不是 `--storage-pool` ，可以在节点上拥有永久无盘drbd设备。这意味着资源将显示为块设备，并且可以在没有现有存储设备的情况下装载到文件系统。资源的数据通过网络在具有相同资源的其他节点上访问。

note: type: Plain text
en: The option `--diskless` was deprecated. Please use `--drbd-diskless` or `--nvme-initiator` instead.
zh: 不推荐使用选项 `--diskless`, 因为已过时。请改用 `--drbd-diskless` 或  `--nvme-initiator` 。

note: type: Title ===
en: LINSTOR - DRBD consistency group/multiple volumes
zh: LINSTOR - DRBD一致性组/多个卷

note: type: Plain text
en: The so called consistency group is a feature from DRBD. It is mentioned in this user-guide, due to the fact that one of LINSTOR's main functions is to manage storage-clusters with DRBD. Multiple volumes in one resource are a consistency group.
zh: 所谓的一致性组是DRBD的一个特性。由于LINSTOR的主要功能之一是使用DRBD管理存储集群，因此本用户指南中提到了这一点。 单个资源中的多个卷是一个一致性组。

note: type: Plain text
en: This means that changes on different volumes from one resource are getting replicated in the same chronological order on the other Satellites.
zh: 这意味着一个资源的不同卷上的更改在其他Satellites上以相同的时间顺序复制。

note: type: Plain text
en: Therefore you don't have to worry about the timing if you have interdependent data on different volumes in a resource.
zh: 因此，如果资源中的不同卷上有相互依赖的数据，也不必担心时间问题。

note: type: Plain text
en: To deploy more than one volume in a LINSTOR-resource you have to create two volume-definitions with the same name.
zh: 要在LINSTOR资源中部署多个卷，必须创建两个同名的卷定义。

note: type: Title ===
en: Volumes of one resource to different Storage-Pools
zh: 一个资源到不同存储池的卷

note: type: Plain text
en: This can be achieved by setting the `StorPoolName` property to the volume definitions before the resource is deployed to the nodes:
zh: 这可以通过在将资源部署到节点之前将 `StorPoolName` 属性设置为卷定义来实现：

note: type: Plain text
en: Since the `volume-definition create` command is used without the `--vlmnr` option LINSTOR assigned the volume numbers starting at 0. In the following two lines the 0 and 1 refer to these automatically assigned volume numbers.
zh: 由于使用 `volume-definition create` 命令时没有使用 `--vlmnr` 选项，因此LINSTOR将从0开始分配卷号。在以下两行中，0和1表示这些自动分配的卷号。

note: type: Plain text
en: Here the 'resource create' commands do not need a `--storage-pool` option.  In this case LINSTOR uses a 'fallback' storage pool. Finding that storage pool, LINSTOR queries the properties of the following objects in the following order:
zh: 这里的 `resource create` 命令不需要 `--storage-pool` 选项。在这种情况下，LINSTOR使用 `fallback` 存储池。找到该存储池后，LINSTOR按以下顺序查询以下对象的属性：

note: type: Plain text
en: Volume definition
zh: 卷定义

note: type: Plain text
en: Resource definition
zh: 资源定义

note: type: Plain text
en: If none of those objects contain a `StorPoolName` property, the controller falls back to a hard-coded 'DfltStorPool' string as a storage pool.
zh: 如果这些对象都不包含 `StorPoolName` 属性，则controller将返回硬编码的 `DfltStorPool` 字符串作为存储池。

note: type: Plain text
en: This also means that if you forgot to define a storage pool prior deploying a resource, you will get an error message that LINSTOR could not find the storage pool named 'DfltStorPool'.
zh: 这还意味着，如果在部署资源之前忘记定义存储池，则会收到一条错误消息，即LINSTOR找不到名为 `DfltStorPool` 的存储池。

note: type: Title ===
en: LINSTOR without DRBD
zh: 无DRBD的LINSTOR

note: type: Plain text
en: LINSTOR can be used without DRBD as well. Without DRBD, LINSTOR is able to provision volumes from LVM and ZFS backed storage pools, and create those volumes on individual nodes in your LINSTOR cluster.
zh: LINSTOR也可以在没有DRBD的情况下使用。没有DRBD，LINSTOR能够从LVM和ZFS支持的存储池中配置卷，并在LINSTOR集群中的各个节点上创建这些卷。

note: type: Plain text
en: Currently LINSTOR supports the creation of LVM and ZFS volumes with the option of layering some combinations of LUKS, DRBD, and/or NVMe-oF/NVMe-TCP on top of those volumes.
zh: 目前，LINSTOR支持创建LVM和ZFS卷，可以选择在这些卷上分层luk、DRBD和/或/NVMe-TCP的NVMe的某些组合。

note: type: Plain text
en: For example, assume we have a Thin LVM backed storage pool defined in our LINSTOR cluster named, `thin-lvm`:
zh: 例如，我们在LINSTOR集群中定义了一个Thin LVM支持的存储池，名为 `thin-lvm`:

note: type: Plain text
en: We could use LINSTOR to create a Thin LVM on `linstor-d` that's 100GiB in size using the following commands:
zh: 我们可以使用LINSTOR在 `linstor-d` 上创建一个100GiB大小的精简LVM，使用以下命令：

note: type: Plain text
en: You should then see you have a new Thin LVM on `linstor-d`. You can extract the device path from LINSTOR by listing your linstor resources with the `--machine-readable` flag set:
zh: 你应该看到 `linstor-d` 上有一个新的瘦LVM。通过使用 `--machine-readable` 标志集列出LINSTOR资源，可以从LINSTOR提取设备路径：

note: type: Plain text
en: If you wanted to layer DRBD on top of this volume, which is the default `--layer-list` option in LINSTOR for ZFS or LVM backed volumes, you would use the following resource creation pattern instead:
zh: 如果要将DRBD放置在此卷上（这是LINSTOR中ZFS或LVM支持的卷的默认 `--layer-list` 选项），可以使用以下资源创建模式：

note: type: Plain text
en: You would then see that you have a new Thin LVM backing a DRBD volume on `linstor-d`:
zh: 然后，您将看到有一个新的 Thin LVM被创建出来用于支撑 `linstor-d` 上的DRBD卷：

note: type: Plain text
en: The following table shows which layer can be followed by which child-layer:
zh: 下表显示了哪个层可以后跟哪个子层：

note: type: Plain text
en: One layer can only occur once in the layer-list
zh: 一个层只能在层列表中出现一次

note: type: Plain text
en: For information about the prerequisites for the `luks` layer, refer to the Encrypted Volumes section of this User's Guide.
zh: 有关 `luks`层的先决条件的信息，请参阅本用户指南的加密卷部分。

note: type: Title ====
en: NVMe-oF/NVMe-TCP LINSTOR Layer
zh: NVME-OF/NVME-TCP Linstor Layer

note: type: Plain text
en: NVMe-oF/NVMe-TCP allows LINSTOR to connect diskless resources to a node with the same resource where the data is stored over NVMe fabrics. This leads to the advantage that resources can be mounted without using local storage by accessing the data over the network.  LINSTOR is not using DRBD in this case, and therefore NVMe resources provisioned by LINSTOR are not replicated, the data is stored on one node.
zh: NVMe-oF/NVMe-TCP允许LINSTOR将无盘资源连接到具有相同资源的节点，数据存储在NVMe结构上。这就带来了这样一个优势：通过网络访问数据，无需使用本地存储就可以装载资源。在这种情况下，LINSTOR不使用DRBD，因此不会复制LINSTOR提供的NVMe资源，数据存储在一个节点上。

note: type: Plain text
en: NVMe-oF only works on RDMA-capable networks and NVMe-TCP on every network that can carry IP traffic. If you want to know more about NVMe-oF/NVMe-TCP visit https://www.linbit.com/en/nvme-linstor-swordfish/ for more information.
zh: NVMe-oF仅在支持RDMA的网络上工作，NVMe-TCP在每个可以承载IP流量的网络上工作。如果您想了解有关NVMe-oF/NVMe-TCP的NVMe的更多信息，请访问https://www.linbit.com/en/nvme-linstor-swordfish/。

note: type: Plain text
en: To use NVMe-oF/NVMe-TCP with LINSTOR the package `nvme-cli` needs to be installed on every Node which acts as a Satellite and will use NVMe-oF/NVMe-TCP for a resource:
zh: 要将NVMe-oF/NVMe-TCP与LINSTOR一起使用，需要在充当Satellite的每个节点上安装包 `nvme-cli`，并将NVMe-oF/NVMe-TCP用于资源：

note: type: Plain text
en: If you are not using Ubuntu use the suitable command for installing packages on your OS - SLES: zypper - CentOS: yum
zh: 如果不使用Ubuntu，请使用合适的命令在OS安装软件包 - SLES: zypper - CentOS: yum

note: type: Plain text
en: To make a resource which uses NVMe-oF/NVMe-TCP an additional parameter has to be given as you create the resource-definition:
zh: 要使资源使用NVMe-oF/NVMe-TCP，必须在创建资源定义时提供一个附加参数：

note: type: Plain text
en: As default the -l (layer-stack) parameter is set to `drbd, storage` when DRBD is used. If you want to create LINSTOR resources with neither NVMe nor DRBD you have to set the `-l` parameter to only `storage`.
zh: 默认情况下，使用DRBD时-l（layer-stack）参数设置为 `drbd, storage`。如果要创建既不使用NVMe也不使用DRBD的LINSTOR资源，则必须将 `-l` 参数设置为仅使用 `storage`。

note: type: Plain text
en: Create the volume-definition for our resource:
zh: 为我们的资源创建卷定义：

note: type: Plain text
en: Before you create the resource on your nodes you have to know where the data will be stored locally and which node accesses it over the network.
zh: 在节点上创建资源之前，必须知道数据将在本地存储在哪里，以及哪个节点通过网络访问它。

note: type: Plain text
en: First we create the resource on the node where our data will be stored:
zh: 首先，我们在存储数据的节点上创建资源：

note: type: Plain text
en: On the nodes where the resource-data will be accessed over the network, the resource has to be defined as diskless:
zh: 在将通过网络访问资源数据的节点上，必须将资源定义为无盘：

note: type: Plain text
en: The `-d` parameter creates the resource on this node as diskless.
zh: `-d` 参数将此节点上的资源创建为无盘。

note: type: Plain text
en: Now you can mount the resource `nvmedata` on one of your nodes.
zh: 现在，您可以在一个节点上装载资源 `nvmedata`。

note: type: Plain text
en: If your nodes have more than one NIC you should force the route between them for NVMe-of/NVME-TCP, otherwise multiple NIC's could cause troubles.
zh: 如果您的节点有多个NIC，您应该为NVMe-of/NVME-TCP指定它们之间的路由，否则多个NIC可能会导致问题。

note: type: Title ====
en: Writecache Layer
zh: 写入缓存层

note: type: Plain text
en: A https://www.kernel.org/doc/html/latest/admin-guide/device-mapper/writecache.html[DM-Writecache] device is composed by two devices, one storage device and one cache device.  LINSTOR can setup such a writecache device, but needs some additional information, like the storage pool and the size of the cache device.
zh: 一个 https://www.kernel.org/doc/html/latest/admin-guide/device-mapper/writecache.html[DM writecache] 设备由两个设备、即一个存储设备和一个缓存设备组成。LINSTOR可以设置这样一个writecache设备，但是需要一些额外的信息，比如存储池和缓存设备的大小。

note: type: Plain text
en: The two properties set in the examples are mandatory, but can also be set on controller level which would act as a default for all resources with `WRITECACHE` in their `--layer-list`. However, please note that the `Writecache/PoolName` referes to the corresponding node. If the node does not have a storge-pool named `pmempool` you will get an error message.
zh: 示例中设置的两个属性是必需的，但也可以在controller级别上设置，这将作为其 `层列表` 中包含 `WRITECACHE` 的所有资源的默认值。但是，请注意， `Writecache/PoolName` 指的是相应的节点。如果节点没有名为 `pmempool` 的存储池，则会收到错误消息。

note: type: Plain text
en: The 4 mandatory parameters required by https://www.kernel.org/doc/html/latest/admin-guide/device-mapper/writecache.html[DM-Writecache] are either configured via property or figured out by LINSTOR.  The optional properties listed in the mentioned link can also be set via property.  Please see `linstor controller set-property --help` for a list of `Writecache/*` property-keys.
zh: 在 https://www.kernel.org/doc/html/latest/admin-guide/device-mapper/writecache.html[DM writecache] 中所需的4个必需参数要么通过属性配置，要么由LINSTOR计算。上述链接中列出的可选属性也可以通过属性进行设置。有关 `Writecache/*` 属性键的列表，请参见 `linstor controller set property--help` 。

note: type: Plain text
en: Using `--layer-list DRBD,WRITECACHE,STORAGE` while having DRBD configured to use external metadata, only the backing device will use a writecache, not the device holding the external metadata.
zh: 使用 `--layer-list DRBD,WRITECACHE,STORAGE` 将DRBD配置为使用外部元数据时，只有备份设备将使用writecache，而不是保存外部元数据的设备。

note: type: Title ===
en: Managing Network Interface Cards
zh: 管理网络接口卡

note: type: Plain text
en: LINSTOR can deal with multiple network interface cards (NICs) in a machine, they are called `netif` in LINSTOR speak.
zh: LINSTOR可以在一台机器上处理多个网络接口卡（NICs），在LINSTOR中称为 `netif`。

note: type: Plain text
en: When a satellite node is created a first `netif` gets created implicitly with the name `default`. Using the `--interface-name` option of the `node create` command you can give it a different name.
zh: 创建附属节点时，将隐式创建第一个名为 `default` 的 `netif` 。使用 `node create` 命令的 `--interface name` 选项，可以给它一个不同的名称。

note: type: Plain text
en: Additional NICs are created like this:
zh: 其他NIC的创建方式如下：

note: type: Plain text
en: NICs are identified by the IP address only, the name is arbitrary and is *not* related to the interface name used by Linux. The NICs can be assigned to storage pools so that whenever a resource is created in such a storage pool, the DRBD traffic will be routed through the specified NIC.
zh: NIC仅由IP地址标识，名称是任意的，与Linux使用的接口名称 *无关* 。可以将NIC分配给存储池，以便每当在这样的存储池中创建资源时，DRBD通信通过其指定的NIC路由。

note: type: Plain text
en: FIXME describe how to route the controller +<->+ client communication through a specific `netif`.
zh: FIXME 描述了如何通过特定的 `netif` 路由controller +<->+ 客户端通信。

note: type: Title ===
en: Encrypted volumes
zh: 加密卷

note: type: Plain text
en: LINSTOR can handle transparent encryption of drbd volumes. dm-crypt is used to encrypt the provided storage from the storage device.
zh: LINSTOR可以处理drbd卷的透明加密。dm-crypt用于对存储设备中提供的存储进行加密。

note: type: Plain text
en: Basic steps to use encryption:
zh: 使用加密的基本步骤：

note: type: Plain text
en: Disable user security on the controller (this will be obsolete once authentication works)
zh: 在控制器上禁用用户安全性（一旦身份验证生效，这将被废弃）

note: type: Plain text
en: Create a master passphrase
zh: 创建主密码

note: type: Plain text
en: Add `luks` to the layer-list
zh: 将 `luks` 添加到层列表

note: type: Plain text
en: Don't forget to re-enter the master passphrase after a controller restart.
zh: 不要忘记在controller重新启动后重新输入主密码。

note: type: Title ====
en: Disable user security
zh: 禁用用户安全

note: type: Plain text
en: Disabling the user security on the `Linstor` controller is a one time operation and is afterwards persisted.
zh: 在 `Linstor` controller上禁用用户安全性是一次操作，之后会被持久化。

note: type: Plain text
en: Stop the running linstor-controller via systemd: `systemctl stop linstor-controller`
zh: 通过 `systemctl stop linstor-controller` 停止正在运行的linstor控制器`

note: type: Plain text
en: Start a linstor-controller in debug mode: `/usr/share/linstor-server/bin/Controller -c /etc/linstor -d`
zh: 在调试模式下启动linstor控制器： `/usr/share/linstor-server/bin/Controller -c /etc/linstor -d`

note: type: Plain text
en: In the debug console enter: `setSecLvl secLvl(NO_SECURITY)`
zh: 在调试控制台中输入：`setSecLvl secLvl(NO_SECURITY)`

note: type: Plain text
en: Stop linstor-controller with the debug shutdown command: `shutdown`
zh: 使用调试关闭命令停止linstor控制器： `shutdown`

note: type: Plain text
en: Start the controller again with systemd: `systemctl start linstor-controller`
zh: 使用systemd重新启动控制器：`systemctl start linstor-controller`

note: type: Title ====
en: Encrypt commands
zh: 加密命令

note: type: Plain text
en: Below are details about the commands.
zh: 下面是有关命令的详细信息。

note: type: Plain text
en: Before LINSTOR can encrypt any volume a master passphrase needs to be created.  This can be done with the linstor-client.
zh: 在LINSTOR可以加密任何卷之前，需要创建主密码。这可以通过linstor客户端完成。

note: type: Plain text
en: `crypt-create-passphrase` will wait for the user to input the initial master passphrase (as all other crypt commands will with no arguments).
zh: `crypt create-passphrase`将等待用户输入初始主密码（因为所有其他crypt命令都没有参数）。

note: type: Plain text
en: If you ever want to change the master passphrase this can be done with:
zh: 如果您想更改主密码，可以使用以下方法：

note: type: Plain text
en: The `luks` layer can be added when creating the resource-definition or the resource itself, whereas the former method is recommended since it will be automatically applied to all resource created from that resource-definition.
zh: `luks` 层可以在创建资源定义或资源本身时添加，而建议使用前一种方法，因为它将自动应用于从该资源定义创建的所有资源。

note: type: Plain text
en: To enter the master passphrase (after controller restart) use the following command:
zh: 要输入主密码（在controller重新启动后），请使用以下命令：

note: type: Plain text
en: Whenever the linstor-controller is restarted, the user has to send the master passphrase to the controller, otherwise LINSTOR is unable to reopen or create encrypted volumes.
zh: 无论何时重新启动linstor controller，用户都必须向控制器发送主密码，否则linstor无法重新打开或创建加密卷。

note: type: Title ===
en: Checking the state of your cluster
zh: 检查集群状态

note: type: Plain text
en: LINSTOR provides various commands to check the state of your cluster.  These commands start with a 'list-' prefix and provide various filtering and sorting options. The '--groupby' option can be used to group and sort the output in multiple dimensions.
zh: LINSTOR提供各种命令来检查集群的状态。这些命令以 `list-` 前缀开头，并提供各种筛选和排序选项。`--groupby` 选项可用于按多个维度对输出进行分组和排序。

note: type: Title ===
en: Managing snapshots
zh: 管理快照

note: type: Plain text
en: Snapshots are supported with thin LVM and ZFS storage pools.
zh: 精简LVM和ZFS存储池支持快照。

note: type: Title ====
en: Creating a snapshot
zh: 创建快照

note: type: Plain text
en: Assuming a resource definition named 'resource1' which has been placed on some nodes, a snapshot can be created as follows:
zh: 假设在某些节点上放置了名为 `resource1` 的资源定义，则可以按如下方式创建快照：

note: type: Plain text
en: This will create snapshots on all nodes where the resource is present.  LINSTOR will ensure that consistent snapshots are taken even when the resource is in active use.
zh: 这将在资源所在的所有节点上创建快照。LINSTOR将确保即使在资源处于活动使用状态时也创建一致的快照。

note: type: Title ====
en: Restoring a snapshot
zh: 还原快照

note: type: Plain text
en: The following steps restore a snapshot to a new resource.  This is possible even when the original resource has been removed from the nodes where the snapshots were taken.
zh: 以下步骤将快照还原到新资源。即使原始资源已从创建快照的节点中删除，也可能发生这种情况。

note: type: Plain text
en: First define the new resource with volumes matching those from the snapshot:
zh: 首先使用与快照中的卷匹配的卷定义新资源：

note: type: Plain text
en: At this point, additional configuration can be applied if necessary.  Then, when ready, create resources based on the snapshots:
zh: 此时，如果需要，可以应用其他配置。然后，准备好后，根据快照创建资源：

note: type: Plain text
en: This will place the new resource on all nodes where the snapshot is present.  The nodes on which to place the resource can also be selected explicitly; see the help (`linstor snapshot resource restore -h`).
zh: 这将在快照所在的所有节点上放置新资源。也可以显式选择放置资源的节点；请参阅帮助（ `linstor snapshot resource restore -h` ).

note: type: Title ====
en: Rolling back to a snapshot
zh: 回滚快照

note: type: Plain text
en: LINSTOR can roll a resource back to a snapshot state.  The resource must not be in use.  That is, it may not be mounted on any nodes.  If the resource is in use, consider whether you can achieve your goal by <<s-restoring_a_snapshot-linstor,restoring the snapshot>> instead.
zh: LINSTOR可以将资源回滚到快照状态。回滚时资源不能被使用。也就是说，它不能安装在任何节点上。如果资源正在使用中，请考虑是否可以通过<<s-restoring_a_snapshot-linstor,restoring the snapshot>>来实现您的目标。

note: type: Plain text
en: Rollback is performed as follows:
zh: 回滚执行如下：

note: type: Plain text
en: A resource can only be rolled back to the most recent snapshot.  To roll back to an older snapshot, first delete the intermediate snapshots.
zh: 资源只能回滚到最近的快照。要回滚到旧快照，请首先删除中间快照。

note: type: Title ====
en: Removing a snapshot
zh: 删除快照

note: type: Plain text
en: An existing snapshot can be removed as follows:
zh: 可以按如下方式删除现有快照：

note: type: Title ===
en: Setting options for resources
zh: 设置资源选项

note: type: Plain text
en: DRBD options are set using LINSTOR commands.  Configuration in files such as `/etc/drbd.d/global_common.conf` that are not managed by LINSTOR will be ignored.  The following commands show the usage and available options:
zh: DRBD选项是使用LINSTOR命令设置的。将忽略诸如 `/etc/drbd.d/global_common.conf` 文件中未由LINSTOR管理的配置。以下命令显示用法和可用选项：

note: type: Plain text
en: For instance, it is easy to set the DRBD protocol for a resource named `backups`:
zh: 例如，很容易为名为 `backups` 的资源设置DRBD协议：

note: type: Title ===
en: Adding and removing disks
zh: 添加和删除磁盘

note: type: Plain text
en: LINSTOR can convert resources between diskless and having a disk.  This is achieved with the `resource toggle-disk` command, which has syntax similar to `resource create`.
zh: LINSTOR可以在无盘和有盘之间转换资源。这是通过 `resource toggle disk` 命令实现的，该命令的语法类似于 `resource create` 。

note: type: Plain text
en: For instance, add a disk to the diskless resource `backups` on 'alpha':
zh: 例如，将磁盘添加到 `alpha` 上的无盘资源 `backups`：

note: type: Plain text
en: Remove this disk again:
zh: 再次删除此磁盘：

note: type: Title ====
en: Migrating disks
zh: 迁移磁盘

note: type: Plain text
en: In order to move a resource between nodes without reducing redundancy at any point, LINSTOR's disk migrate feature can be used.  First create a diskless resource on the target node, and then add a disk using the `--migrate-from` option.  This will wait until the data has been synced to the new disk and then remove the source disk.
zh: 为了在节点之间移动资源而不减少任何点的冗余，可以使用LINSTOR的磁盘迁移功能。首先在目标节点上创建一个无盘资源，然后使用 `--migrate from` 选项添加一个磁盘。这将等到数据已同步到新磁盘，然后删除源磁盘。

note: type: Plain text
en: For example, to migrate a resource `backups` from 'alpha' to 'bravo':
zh: 例如，要将资源 `backups` 从 `alpha` 迁移到 `bravo` ：

note: type: Title ===
en: DRBD Proxy with LINSTOR
zh: LINSTOR的DRBD代理

note: type: Plain text
en: LINSTOR expects DRBD Proxy to be running on the nodes which are involved in the relevant connections. It does not currently support connections via DRBD Proxy on a separate node.
zh: LINSTOR希望DRBD代理在相关连接所涉及的节点上运行。它目前不支持通过单独节点上的DRBD代理进行连接。

note: type: Plain text
en: Suppose our cluster consists of nodes 'alpha' and 'bravo' in a local network and 'charlie' at a remote site, with a resource definition named `backups` deployed to each of the nodes. Then DRBD Proxy can be enabled for the connections to 'charlie' as follows:
zh: 假设我们的集群由本地网络中的节点 `alpha` 和 `bravo` 以及远程站点上的节点 `charlie` 组成，每个节点都部署了名为 `backups` 的资源定义。然后，可以为 `charlie` 的连接启用DRBD Proxy，如下所示：

note: type: Plain text
en: The DRBD Proxy configuration can be tailored with commands such as:
zh: DRBD代理配置可以通过以下命令定制：

note: type: Plain text
en: LINSTOR does not automatically optimize the DRBD configuration for long-distance replication, so you will probably want to set some configuration options such as the protocol:
zh: LINSTOR不会自动优化远程复制的DRBD配置，因此您可能需要设置一些配置选项，例如协议：

note: type: Plain text
en: Please contact LINBIT for assistance optimizing your configuration.
zh: 请与LINBIT联系以获得优化配置的帮助。

note: type: Title ===
en: External database
zh: 外部数据库

note: type: Plain text
en: It is possible to have LINSTOR working with an external database provider like Postgresql, MariaDB and since version 1.1.0 even ETCD key value store is supported.
zh: 可以让LINSTOR与外部数据库提供程序（如Postgresql、MariaDB）一起工作，从版本1.1.0开始支持ETCD键值存储。

note: type: Plain text
en: To use an external database there are a few additional steps to configure.  External-SQL database need to download their JDBC-driver and copy it to the lib folder, ETCD just needs to correctly configure the LINSTOR.
zh: 要使用外部数据库，还有几个额外的配置步骤。外部SQL数据库需要下载其JDBC驱动程序并将其复制到lib文件夹，ETCD只需要正确配置LINSTOR即可。

note: type: Plain text
en: Postgresql JDBC driver can be downloaded here:
zh: Postgresql JDBC驱动程序可以下载到：

note: type: Plain text
en: And afterwards copied to: `/usr/share/linstor-server/lib/`
zh: 然后复制到： `/usr/share/linstor server/lib/`

note: type: Plain text
en: A sample Postgresql `linstor.toml` looks like this:
zh: Postgresql `linstor.toml` 示例如下：

note: type: Plain text
en: MariaDB JDBC driver can be downloaded here:
zh: MariaDB JDBC驱动程序可在以下位置下载：

note: type: Plain text
en: A sample MariaDB `linstor.toml` looks like this:
zh: MariaDB `linstor.toml` 示例如下：

note: type: Plain text
en: The LINSTOR schema/database is created as `LINSTOR` so make sure the mariadb connection string refers to the `LINSTOR` schema, as in the example above.
zh: LINSTOR schema/数据库被创建为 `LINSTOR`，因此请确保mariadb连接字符串引用了 `LINSTOR` schema，如上面的示例所示。

note: type: Plain text
en: ETCD is a distributed key-value store that makes it easy to keep your LINSTOR database distributed in a HA-setup.  The ETCD driver is already included in the LINSTOR-controller package and only needs to be configured in the `linstor.toml`.
zh: ETCD是一个分布式键值存储，它使得在HA设置中保持LINSTOR数据库的分布式变得容易。ETCD驱动程序已经包含在LINSTOR控制器包中，只需要在 `LINSTOR.toml` 中进行配置。

note: type: Plain text
en: More information on how to install and configure ETCD can be found here: https://etcd.io/docs[ETCD docs]
zh: 有关如何安装和配置ETCD的更多信息，请访问：https://etcd.io/docs[ETCD docs]

note: type: Plain text
en: And here is a sample [db] section from the `linstor.toml`:
zh: 下面是 `linstor.toml` 中的[db]部分示例：

note: type: Plain text
en: To make LINSTOR's administrative tasks more accessible and also available for web-frontends a REST-API has been created. The REST-API is embedded in the linstor-controller and since LINSTOR 0.9.13 configured via the the `linstor.toml` configuration file.
zh: 为了使LINSTOR的管理任务更易于访问，并且也可用于web前端，创建了REST-API。REST-API嵌入到linstor controller中，从linstor 0.9.13开始通过 `linstor.toml` 配置文件配置。

note: type: Plain text
en: If you want to use the REST-API the current documentation can be found on the following link: https://app.swaggerhub.com/apis-docs/Linstor/Linstor/
zh: 如果您想使用REST-API，可以在以下链接中找到当前文档：https://app.swaggerhub.com/apis-docs/Linstor/Linstor/

note: type: Plain text
en: The HTTP REST-API can also run secured by HTTPS and is highly recommended if you use any features that require authorization. Todo so you have to create a java keystore file with a valid certificate that will be used to encrypt all HTTPS traffic.
zh: HTTP REST-API也可以通过HTTPS运行，如果您使用任何需要授权的功能，则强烈建议您使用它。所以你必须用一个有效的证书创建一个java密钥库文件，这个证书将用于加密所有的HTTPS通信。

note: type: Plain text
en: Here is a simple example on how you can create a self signed certificate with the `keytool` that is included in the java runtime:
zh: 下面是一个简单的示例，说明如何使用java运行时中包含的 `keytool` 创建自签名证书：

note: type: Plain text
en: `keytool` will ask for a password to secure the generated keystore file and is needed for the LINSTOR-controller configuration.  In your `linstor.toml` file you have to add the following section:
zh: `keytool` 将要求密码来保护生成的密钥库文件，这是LINSTOR controller配置所需的。在 `linstor.toml` 文件中，必须添加以下部分：

note: type: Plain text
en: Now (re)start the `linstor-controller` and the HTTPS REST-API should be available on port 3371.
zh: 现在（重新）启动 `linstor controller` ，端口3371上应该可以使用HTTPS REST-API。

note: type: Plain text
en: More information on how to import other certificates can be found here: https://docs.oracle.com/javase/8/docs/technotes/tools/unix/keytool.html
zh: 有关如何导入其他证书的更多信息，请访问：https://docs.oracle.com/javase/8/docs/technotes/tools/unix/keytool.html

note: type: Plain text
en: When HTTPS is enabled, all requests to the HTTP /v1/ REST-API will be redirected to the HTTPS redirect.
zh: 当启用HTTPS时，对HTTP/v1/ REST-API的所有请求都将重定向到HTTPS重定向。

note: type: Title =====
en: LINSTOR REST-API HTTPS restricted client access
zh: LINSTOR REST-API HTTPS受限客户端访问

note: type: Plain text
en: Client access can be restricted by using a SSL truststore on the Controller.  Basically you create a certificate for your client and add it to your truststore and the client then uses this certificate for authentication.
zh: 可以通过在控制器上使用SSL信任库来限制客户端访问。基本上，您为您的客户机创建一个证书并将其添加到信任库中，然后客户机使用该证书进行身份验证。

note: type: Plain text
en: First create a client certificate:
zh: 首先创建客户端证书：

note: type: Plain text
en: Then we import this certificate to our controller truststore:
zh: 然后我们将此证书导入controller信任库：

note: type: Plain text
en: And enable the truststore in the `linstor.toml` configuration file:
zh: 并在 `linstor.toml` 配置文件中启用信任库：

note: type: Plain text
en: Now restart the Controller and it will no longer be possible to access the controller API without a correct certificate.
zh: 现在重新启动controller，如果没有正确的证书，将无法再访问控制器API。

note: type: Plain text
en: The LINSTOR client needs the certificate in PEM format, so before we can use it we have to convert the java keystore certificate to the PEM format.
zh: LINSTOR客户机需要PEM格式的证书，因此在使用之前，我们必须将java密钥库证书转换为PEM格式。

note: type: Plain text
en: To avoid entering the PEM file password all the time it might be convenient to remove the password.
zh: 为了避免一直输入PEM文件密码，可以方便地删除密码。

note: type: Plain text
en: Now this PEM file can easily be used in the client:
zh: 现在，这个PEM文件可以很容易地在客户端使用：

note: type: Plain text
en: The `--certfile` parameter can also added to the client configuration file, see <<s-using_the_linstor_client>> for more details.
zh: `--certfile` 参数也可以添加到客户端配置文件中，有关详细信息，请参见<<s-using_the_linstor_client>>。

note: type: Plain text
en: Linstor uses https://www.slf4j.org/[SLF4J] with https://logback.qos.ch/[Logback] as binding. This gives Linstor the possibilty to distinguish between the log levels `ERROR`, `WARN`, `INFO`, `DEBUG` and `TRACE` (in order of increasing verbosity). In the current linstor version (1.1.2) the user has the following four methods to control the logging level, ordered by priority (first has highest priority):
zh: Linstor使用 https://www.slf4j.org/[SLF4J] 和 https://logback.qos.ch/[Logback] 作为绑定。这使Linstor能够区分日志级别 `ERROR`、 `WARN` 、 `INFO` 、 `DEBUG` 和 `TRACE` （为了增加详细程度）。在当前的linstor版本（1.1.2）中，用户有以下四种方法控制日志记录级别，按优先级排序（第一种方法具有最高优先级）：

note: type: Plain text
en: `TRACE` mode can be `enabled` or `disabled` using the debug console:
zh: `TRACE` mode可以使用调试控制台, 通过 `enabled` 或 `disabled` 分别指明:

note: type: Plain text
en: When starting the controller or satellite a command line argument can be passed:
zh: 启动controller或satellite时，可以传递命令行参数：

note: type: Plain text
en: The recommended place is the `logging` section in the `/etc/linstor/linstor.toml` file:
zh: 建议放在 `/etc/linstor/linstor.toml` 文件中的 `logging` 部分：

note: type: Plain text
en: As Linstor is using Logback as an implementation, `/usr/share/linstor-server/lib/logback.xml` can also be used. Currently only this approach supports different log levels for different components, like shown in the example below:
zh: 由于Linstor使用Logback作为实现，还可以使用 `/usr/share/Linstor server/lib/Logback.xml` 。目前只有这种方法支持不同组件的不同日志级别，如下例所示：

note: type: Plain text
en: See the https://logback.qos.ch/manual/index.html[Logback Manual] to find more details about `logback.xml`.
zh: 有关 `logback.xml` 的更多详细信息，请参见https://logback.qos.ch/manual/index.html[Logback Manual]。

note: type: Plain text
en: When none of the configuration methods above is used Linstor will default to `INFO` log level.
zh: 如果没有使用上述任何配置方法，Linstor将默认为 `INFO` 日志级别。

note: type: Title ===
en: Secure Satellite connections
zh: 安全Satellite连接

note: type: Plain text
en: It is possible to have the LINSTOR use SSL secure TCP connection between controller and satellite connections.  Without going into further details on how java's SSL engine works we will give you command line snippets using the `keytool` from java's runtime environment on how to configure a 3 node setup using secure connections.  The node setup looks like this:
zh: 可以让LINSTOR在controller和satellites连接之间使用SSL安全TCP连接。在不深入讨论java的SSL引擎如何工作的情况下，我们将向您提供使用java运行时环境中的 `keytool` 的命令行片段，介绍如何使用安全连接配置3节点设置。节点设置如下所示：

note: type: Plain text
en: Node `alpha` is the just the controller.  Node `bravo` and node `charlie` are just satellites.
zh: 节点 `alpha` 只充当controller。节点 `bravo` 和节点 `charlie` 只充当卫星。

note: type: Plain text
en: Here are the commands to generate such a keystore setup, values should of course be edited for your environment.
zh: 下面是生成这样一个密钥库设置的命令，当然你应该根据您的环境编辑值。

note: type: Plain text
en: Now just start controller and satellites and add the nodes with `--communication-type SSL`.
zh: 现在只需启动controller和satellites，并添加带有 `--通信类型SSL` 的节点。

note: type: Title ===
en: AutoQuorum Policies
zh: 自动仲裁策略

note: type: Plain text
en: LINSTOR automatically configures quorum policies on resources *when quorum is achievable*. This means, whenever you have at least two diskful and one or more diskless resource assignments, or three or more diskful resource assignments, LINSTOR will enable quorum policies for your resources automatically.
zh: LINSTOR在资源上自动配置仲裁策略 *当仲裁可实现时* 。这意味着，每当您有至少两个磁盘和一个或多个无磁盘资源分配，或三个或多个磁盘资源分配时，LINSTOR将自动为您的资源启用仲裁策略。

note: type: Plain text
en: Inversely, LINSTOR will automatically disable quorum policies whenever there are less than the minimum required resource assignments to achieve quorum.
zh: 相反，当达到仲裁所需的资源分配少于最小值时，LINSTOR将自动禁用仲裁策略。

note: type: Plain text
en: This is controlled via the, `DrbdOptions/auto-quorum`, property which can be applied to the _linstor-controller_, _resource-group_, and _resource-definition_. Accepted values for the `DrbdOptions/auto-quorum` property are `disabled`, `suspend-io`, and `io-error`.
zh: 这是通过 `DrbdOptions/auto-quorum` 属性控制的，该属性可应用于 `linstor-controller` 、 `resource-group` 和 `resource-definition` 。 `DrbdOptions/auto-quorum`, 属性的接受值为 `disabled` 、 `suspend io` 和 `io error` 。

note: type: Plain text
en: Setting the `DrbdOptions/auto-quorum` property to `disabled` will allow you to manually, or more granularly, control the quorum policies of your resources should you so desire.
zh: 将 `DrbdOptions/auto-quorum` 属性设置为 `disabled` 将允许您手动或更细粒度地控制资源的仲裁策略（如果您愿意）。

note: type: Plain text
en: The default policies for `DrbdOptions/auto-quorum` are `quorum majority`, and `on-no-quorum io-error`. For more information on DRBD's quorum features and their behavior, please refer to the {url-drbd-ug}#s-feature-quorum[quorum section of the DRBD user's guide].
zh: `DrbdOptions/auto-quorum` 的默认策略是 `quorum-most` 和 `on-no-quorum io-error` 。有关DRBD的仲裁功能及其行为的更多信息，请参阅 {url-drbd-ug}#s-feature-quorum[quorum section of the DRBD user's guide].

note: type: Plain text
en: The `DrbdOptions/auto-quorum` policies will override any manually configured properties if `DrbdOptions/auto-quorum` is not disabled.
zh: 如果未禁用 `DrbdOptions/auto-quorum` ，则 `DrbdOptions/auto-quorum` 策略将覆盖任何手动配置的属性。

note: type: Plain text
en: For example, to manually set the quorum policies of a _resource-group_ named `my_ssd_group`, you would use the following commands:
zh: 例如，要手动设置名为 `my_ssd_group` 的 _resource-group_ 的仲裁策略，可以使用以下命令：

note: type: Plain text
en: You may wish to disable DRBD's quorum features completely. To do that, you would need to first disable `DrbdOptions/auto-quorum` on the appropriate LINSTOR object, and then set the DRBD quorum features accordingly. For example, use the following commands to disable quorum entirely on the `my_ssd_group` _resource-group_:
zh: 您可能希望完全禁用DRBD的仲裁功能。要做到这一点，首先需要在适当的LINSTOR对象上禁用'DrbdOptions/auto-quorum'，然后相应地设置DRBD quorum特性。例如，使用以下命令完全禁用 `my_ssd_group` 的 _resource-group_ 上的仲裁:

note: type: Plain text
en: Setting `DrbdOptions/Resource/on-no-quorum` to an empty value in the commands above deletes the property from the object entirely.
zh: 在上面的命令中将 `DrbdOptions/Resource/on-no-quorum` 设置为空值将完全从对象中删除该属性。

note: type: Title ===
en: QoS Settings
zh: QoS设置

note: type: Title ====
en: Sysfs
zh: 系统

note: type: Plain text
en: LINSTOR is able to set the following Sysfs settings:
zh: LINSTOR能够设置以下Sysfs设置：

note: type: Plain text
en: If a LINSTOR volume is composed of multiple "stacked" volume (for example DRBD with external metadata will have 3 devices: backing (storage) device, metadata device and the resulting DRBD device), setting a `sys/fs/\*` property for a Volume, **all** affected devices will receive the corresponding `/sys/fs/cgroup/...` setting
zh: 如果LINSTOR卷由多个 "堆叠" 卷组成（例如带有外部元数据的DRBD将有3个设备：备份（存储）设备、元数据设备和生成的DRBD设备），为卷设置 `sys/fs/\*` 属性，**所有** 受影响的设备将收到相应的 `/sys/fs/cgroup/...` 设置

note: type: Title ===
en: Getting help
zh: 得到帮助

note: type: Title ====
en: From the command line
zh: 从命令行

note: type: Plain text
en: A quick way to list available commands on the command line is to type `linstor`.
zh: 在命令行中列出可用命令的一种快速方法是键入 `linstor` 。

note: type: Plain text
en: Further information on subcommands (e.g., list-nodes) can be retrieved in two ways:
zh: 有关子命令（例如列表节点）的更多信息可以通过两种方式检索：

note: type: Plain text
en: Using the 'help' subcommand is especially helpful when LINSTOR is executed in interactive mode (`linstor interactive`).
zh: 当LINSTOR以交互模式（`LINSTOR interactive`）执行时，使用 `help` 子命令尤其有用。

note: type: Plain text
en: One of the most helpful features of LINSTOR is its rich tab-completion, which can be used to complete basically every object LINSTOR knows about (e.g., node names, IP addresses, resource names, ...).  In the following examples, we show some possible completions, and their results:
zh: LINSTOR最有用的特性之一是它丰富的tab-completion，它基本上可以用来完成LINSTOR所知道的每个对象（例如，节点名、IP地址、资源名等等）。在下面的示例中，我们将展示一些可能的完成及其结果：

note: type: Plain text
en: If tab-completion does not work out of the box, please try to source the appropriate file:
zh: 如果制表符完成不正常，请尝试获取相应的文件：

note: type: Plain text
en: For zsh shell users linstor-client can generate a zsh compilation file, that has basic support for command and argument completion.
zh: 对于zsh shell用户，linstor客户机可以生成一个zsh编译文件，该文件基本上支持命令和参数完成。

note: type: Title ====
en: From the community
zh: 来自社区

note: type: Plain text
en: For help from the community please subscribe to our mailing list located here: https://lists.linbit.com/listinfo/drbd-user
zh: 如需社区帮助，请订阅我们的邮件列表： https://lists.linbit.com/listinfo/drbd-user

note: type: Title ====
en: GitHub
zh: Github

note: type: Plain text
en: To file bug or feature request please check out our GitHub page https://github.com/linbit
zh: 要提交bug或功能请求，请查看我们的GitHub页面 https://GitHub.com/linbit

note: type: Title ====
en: Paid support and development
zh: 有偿支持和开发

note: type: Plain text
en: Alternatively, if you wish to purchase remote installation services, 24/7 support, access to certified repositories, or feature development please contact us: +1-877-454-6248 (1-877-4LINBIT) , International: +43-1-8178292-0 | sales@linbit.com
zh: 或者，如果您希望购买远程安装服务、24/7支持、访问认证存储库或功能开发，请联系我们：+1-877-454-6248（1-877-4LINBIT），国际电话：+43-1-8178292-0 | sales@linbit.com
