亚马逊 S3 文件网关文档已移至什么是亚马逊 S3 文件网关?
亚马逊 FSx 文件网关文档已移至什么是亚马逊 FSx 文件网关?
Volume Gateway 文档已移至什么是卷网关?
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
连接 iSCSI 启动程序
在管理网关时,您将使用作为 Internet 小型计算机系统接口 (iSCSI) 目标公开的卷或虚拟磁带库 (VTL) 设备。对于卷网关,iSCSI 目标是卷。对于磁带网关,目标是 VTL 设备。作为此工作的一部分,您将执行以下任务:连接到这些目标、自定义 iSCSI 设置、从 Red Hat Linux 客户端进行连接以及配置质询握手身份验证协议 (CHAP)。
iSCSI 标准是基于互联网协议 (IP) 的存储网络标准,用于启动和管理基于 IP 的存储设备与客户端之间的连接。以下列表定义了用来描述 iSCSI 连接和相关组件的一些术语。
- iSCSI 启动程序
-
iSCSI 网络的客户端组件。启动程序向 iSCSI 目标发送请求。启动器可以在软件或硬件中实现。Storage Gateway 仅支持软件启动器。
- iSCSI 目标
-
iSCSI 网络的服务器组件,接收并响应来自启动程序的请求。每个卷均作为一个 iSCSI 目标公开。仅对每个 iSCSI 目标连接一个 iSCSI 启动程序。
- Microsoft iSCSI 启动程序
-
Microsoft Windows 计算机上的软件程序,它允许您将客户端计算机(即运行要将其数据写入网关的应用程序的计算机)连接到基于 iSCSI 的外部阵列(即网关)。使用主机的以太网网络适配卡建立此连接。微软 iSCSI 启动程序已通过 Windows Server 2012 R2、Windows Server 2012 R2、Windows Server 2016 和 Windows Server 2019。启动器内置于这些操作系统中。
- Red Hat iSCSI 启动程序
-
iscsi-initiator-utils
资源Package 管理器 (RPM) 软件包为您提供了在红帽 Linux 软件中实现的 iSCSI 启动器。该包含有用于 iSCSI 协议的服务器守护进程。
每种类型的网关都可以连接到 iSCSI 设备,而您可以自定义这些连接,如下所述。
将 VTL 设备连接到 Windows 客户端
磁带网关将多个磁带驱动器和一个媒体转换器(统称为 VTL 设备)公开作为 iSCSI 目标。有关更多信息,请参阅要求:
注意
您向每个 iSCSI 目标仅连接一个应用程序。
下图突出显示了Storage Gateway 架构大图中的 iSCSI 目标。有关Storage Gateway 架构的更多信息,请参阅磁带网关的工作原理(架构)。

将 Windows 客户端连接到 VTL 设备
-
在 Windows 客户端计算机的 “开始” 菜单上,
iscsicpl.exe
在 “搜索程序和文件” 框中输入,找到 iSCSI 启动器程序,然后运行它。注意
必须具有客户端计算机上的管理员权限才能运行 iSCSI 启动程序。
-
如果出现提示,则单击 Yes 以启动 Microsoft iSCSI 启动程序服务。
-
在 iSCSI Initiator Properties (iSCSI 发起程序属性) 对话框中,选择 Discovery (发现) 选项卡,然后选择 Discover Portal (发现门户)。
-
在 “发现目标门户” 对话框中,输入 Tape Gateway 的 IP 地址作为 IP 地址或 DNS 名称,然后选择 “确定”。要获取网关的 IP 地址,请检查Storage Gateway 控制台上的网关选项卡。如果您在 Amazon EC2 实例上部署了网关,则可以在 Amazon EC2 控制台的描述选项卡中找到公有 IP 或 DNS 地址。
警告
对于部署在 Amazon EC2 实例上的网关,不支持通过公共互联网连接访问网关。Amazon EC2 实例的弹性 IP 地址不能用作目标地址。
-
选择 Targets (目标) 选项卡,然后选择 Refresh (刷新)。所有 10 个磁带驱动器和媒体转换器都显示在 “已发现的目标” 框中。目标的状态为 Inactive (不活动)。
以下屏幕截图显示所发现的目标。
-
选择第一个设备,然后选择 Connect。一次连接一个设备。
-
在 Connect to Target 对话框中,选择 OK。
-
对每台设备重复步骤 6 和 7 以连接所有设备,然后在 iSCSI 启动器属性对话框中选择确定。
在 Windows 客户端上,磁带驱动器的驱动程序提供商必须为 Microsoft。按以下过程验证驱动程序提供商,并在必要时更新驱动程序和提供商。
在 Windows 客户端上验证驱动程序提供程序和(如有必要)更新提供程序和驱动程序
-
在 Windows 客户端上,启动“设备管理器”。
-
展开 Tape drives,选择磁带驱动器的上下文 (右键单击) 菜单,然后选择 Properties。
-
在 “设备属性” 对话框的 “驱动程序” 选项卡中,验证驱动程序提供商是 Microsoft。
-
如果驱动程序提供商不是 Microsoft,请按如下方式设置该值:
-
选择 Update Driver (更新驱动程序)。
-
在 Update Driver Software (更新驱动程序软件) 对话框中,选择 Browse my computer for driver software (浏览计算机以查找驱动程序软件)。
-
在 Update Driver Software (更新驱动程序软件) 对话框中,选择 Let me pick from a list of device drivers on my computer (从计算机的设备驱动程序列表中选取)。
-
选择 LTO Tape drive,然后选择 Next。
-
选择 “关闭” 关闭 “更新驱动程序软件” 窗口,并验证驱动程序提供程序的值现在是否设置为 Microsoft。
-
-
重复步骤 4.1 到 4.5 以更新所有磁带驱动器。
将卷或 VTL 设备连接到 Linux 客户端
主题
使用红帽企业 Linux (RHEL) 时,您可以使用iscsi-initiator-utils
RPM 软件包连接到网关 iSCSI 目标(卷或 VTL 设备)。
将 Linux 客户端连接到 iSCSI 目标
-
如果您的客户端上尚未安装
iscsi-initiator-utils
RPM 软件包,请安装。您可以使用下面的命令来安装该包。
sudo yum install iscsi-initiator-utils
-
确保 iSCSI 守护进程正在运行。
-
使用下以下命令之一验证 iSCSI 守护进程是否正在运行。
对于 RHEL 5 或 RHEL 6,请使用以下命令。
sudo /etc/init.d/iscsi status
对于 RHEL 7,请使用以下命令。
sudo service iscsid status
-
如果 status 命令未返回运行状态,请使用以下命令之一启动守护程序。
对于 RHEL 5 或 RHEL 6,请使用以下命令。
sudo /etc/init.d/iscsi start
对于 RHEL 7,请使用以下命令。对于 RHEL 7,通常不需要显式启动该
iscsid
服务。sudo service iscsid start
-
-
要发现为网关定义的卷目标或 VTL 设备目标,请使用以下发现命令。
sudo /sbin/iscsiadm --mode discovery --type sendtargets --portal
[GATEWAY_IP]
:3260用您网关的 IP 替代上一命令中的
[GATEWAY_IP]
变量。您可以在Storage Gateway 控制台上卷的 iSCSI 目标信息属性中找到网关 IP。发现命令的输出内容类似如下示例输出内容。
对于批量网关:
[GATEWAY_IP]
:3260, 1 iqn.1997-05.com.amazon:myvolume对于磁带网关:
iqn.1997-05.com.amazon:
[GATEWAY_IP]
-tapedrive-01您的 iSCSI 限定名称 (IQN) 与以上所示不同,因为每个组织的 IQN 值不同。目标名称是您创建卷时指定的名称。在 Storage Gateway 控制台上选择卷时,也可以在 iSCSI 目标信息属性窗格中找到此目标名称。
-
要连接到目标,请使用以下命令。
请注意,您需要在连接命令中指定正确的
[GATEWAY_IP]
和 IQN。警告
对于部署在 Amazon EC2 实例上的网关,不支持通过公共互联网连接访问网关。Amazon EC2 实例的弹性 IP 地址不能用作目标地址。
sudo /sbin/iscsiadm --mode node --targetname iqn.1997-05.com.amazon:
[ISCSI_TARGET_NAME]
--portal[GATEWAY_IP]
:3260,1 --login -
要确认卷已附加到客户端 (启动程序),请使用以下命令。
ls -l /dev/disk/by-path
命令的输出如下面的示例输出所示。
lrwxrwxrwx. 1 root root 9 Apr 16 19:31 ip-
[GATEWAY_IP]
:3260-iscsi-iqn.1997-05.com.amazon:myvolume-lun-0 -> ../../sda我们强烈建议您在设置启动器后,按中所述自定义 iSCSI 设置自定义您的 Linux iSCSI 设置。
自定义 iSCSI 设置
我们强烈建议您在设置启动程序后,自定义 iSCSI 设置以防止启动程序从目标断开。
通过增大下列步骤中所示的 iSCSI 超时值,您可以提高应用程序对需要较长时间的写入操作以及网络中断等其他瞬态问题的处理能力。
注意
修改注册表前,您应该制作一份该注册表的备份副本。有关制作备份副本以及使用注册表时应遵循的其他最佳做法的信息,请参阅 Microsoft TechNet 资源库中的注册表最佳实践
自定义您的 Windows iSCSI 设置
对于磁带网关设置,使用 Microsoft iSCSI 启动器连接到 VTL 设备分为两个步骤:
-
将您的磁带网关设备Connect 到 Windows 客户端。
-
如果要使用备份应用程序,则将该应用程序配置为使用这些设备。
本入门示例设置提供对这两个步骤的说明。它使用赛门铁克 NetBackup 备份应用程序。有关更多信息,请参阅 连接 VTL 设备 和 配置 NetBackup 存储设备。
如需自定义您的 Windows iSCSI 设置
-
提高请求排队的最长时间。
-
启动注册表编辑器 (
Regedit.exe
). -
导航到设备类别的全局唯一标识符 (GUID) 密钥,其中包含 iSCSI 控制器设置,如下所示。
警告
确保您正在使用CurrentControlSet子密钥而不是其他控制集,例如 00 ControlSet1 或 ControlSet002。
HKEY_Local_Machine\SYSTEM\CurrentControlSet\Control\Class\{4D36E97B-E325-11CE-BFC1-08002BE10318}
-
查找 Microsoft iSCSI 启动程序的子项,在下面显示为
[<实例编号]
。该项由四位数字表示,如
0000
。HKEY_Local_Machine\SYSTEM\CurrentControlSet\Control\Class\{4D36E97B-E325-11CE-BFC1-08002BE10318}\
[<Instance Number]
根据计算机上安装的内容,Microsoft iSCSI 启动程序可能不是子项
0000
。可通过验证字符串DriverDesc
是否具有以下示例所示的Microsoft iSCSI Initiator
值来确保选择了纠正的子项。 -
要显示 iSCSI 设置,请选择 Parameters (参数) 子项。
-
打开 MaxRequestHoldTimeDWORD (32-位) 值的上下文(右键单击)菜单,选择修改,然后将值更改为
600
。该值表示 600 秒的保持时间。以下示例显示了值为 600 的 MaxRequestHoldTimeDWORD 值。
-
-
通过修改以下参数,可以提高可在 iSCSI 数据包中发送的最大数据量:
-
FirstBurstLength控制在未经请求的写入请求中可以传输的最大数据量。将此值设置为
262144
或 Windows 操作系统的默认值,以较高者为准。 -
MaxBurstLength类似于 FirstBurstLength,但它设置了可在请求写入序列中传输的最大数据量。将此值设置为
1048576
或 Windows 操作系统的默认值,以较高者为准。 -
MaxRecvDataSegmentLength控制与单个协议数据单元 (PDU) 关联的最大数据段大小。将此值设置为
262144
或 Windows 操作系统的默认值,以较高者为准。
注意
不同的备份软件可使用不同的 iSCSI 设置进行优化来达到最佳效果。要确认如何设置这些参数的值才能提供最佳性能,请参阅备份软件的文档。
-
-
增大磁盘超时值,如下所示:
-
如果您尚未启动注册表编辑器 (
Regedit.exe
),请将其启动。 -
导航到的服务子键中的磁盘子密钥 CurrentControlSet,如下所示。
HKEY_Local_Machine\SYSTEM\CurrentControlSet\Services\Disk
-
打开 TimeOutValueDWORD (32-位) 值的上下文(右键单击)菜单,选择修改,然后将值更改为
600
。该值表示 600 秒的超时值。以下示例显示了值为 600 的 TimeOutValueDWORD 值。
-
-
要确保新配置的值生效,请重新启动系统。
重新启动之前,必须确保刷新了对卷进行的所有写入操作的结果。要这样做,请在重启前将任何映射的存储卷磁盘脱机。
自定义您的 Linux iSCSI 设置
为网关设置启动器后,我们强烈建议您自定义 iSCSI 设置,以防止启动器与目标断开连接。通过增大下面所示的 iSCSI 超时值,您可以提高应用程序对需要较长时间的写入操作以及网络中断等其他瞬态问题的处理能力。
注意
命令可能与 Linux 的其他命令类型略有不同。以下示例基于 Red Hat Linux。
如需自定义您的 Linux iSCSI 设置
-
提高请求排队的最长时间。
-
打开
/etc/iscsi/iscsid.conf
文件,然后找到以下各行。node.session.timeo.replacement_timeout =
[replacement_timeout_value]
node.conn[0].timeo.noop_out_interval =[noop_out_interval_value]
node.conn[0].timeo.noop_out_timeout =[noop_out_timeout_value]
-
将
[replacement_timeout_value]
值设置为600
。将
[noop_out_interval_value]
值设置为60
。将
[noop_out_timeout_value]
值设置为600
。这三种值的单位均为秒。
注意
必须在发现网关之前进行
iscsid.conf
设置。如果已发现网关和/或已登录到目标,则可使用以下命令从发现数据库中删除该项。然后可以重新发现或登录,从而使新设置生效。iscsiadm -m discoverydb -t sendtargets -p
[GATEWAY_IP]
:3260 -o delete
-
-
提高可在每个响应中传输的最大数据量。
-
打开
/etc/iscsi/iscsid.conf
文件,然后找到以下各行。node.session.iscsi.FirstBurstLength =
[replacement_first_burst_length_value]
node.session.iscsi.MaxBurstLength =[replacement_max_burst_length_value]
node.conn[0].iscsi.MaxRecvDataSegmentLength =[replacement_segment_length_value]
-
我们建议使用以下值,以实现更佳性能。您的备份软件可以使用不同的值进行优化,因此请参阅备份软件文档了解最佳效果。
将
[replacement_first_burst_length_value] 值
设置为262144
或 Linux 操作系统的默认值,以较高者为准。将
[replacement_max_burst_length_value]
值设置为1048576
或 Linux 操作系统的默认值,以较高者为准。将
[replacement_segment_length_value] 值
设置为262144
或 Linux 操作系统的默认值,以较高者为准。注意
不同的备份软件可使用不同的 iSCSI 设置进行优化来达到最佳效果。要确认如何设置这些参数的值才能提供最佳性能,请参阅备份软件的文档。
-
-
重启系统以确保新配置的值生效。
在重新启动之前,请确保刷新所有对磁带的写入操作的结果。为此,请在重新启动之前卸载磁带。
为批量网关定制 Linux 磁盘超时设置
如果您使用的是卷网关,则除了上一节中描述的 iSCSI 设置外,还可以自定义以下 Linux 磁盘超时设置。
自定义 Linux 磁盘超时设置
-
在规则文件中增大磁盘超时值。
-
如果您使用的是 RHEL 5 启动器,请打开
/etc/udev/rules.d/50-udev.rules
文件并找到以下行。ACTION=="add", SUBSYSTEM=="scsi" , SYSFS{type}=="0|7|14", \ RUN+="/bin/sh -c 'echo
[timeout]
> /sys$$DEVPATH/timeout'"此规则文件在 RHEL 6 或 RHEL 7 启动程序中不存在,因此您必须使用以下规则创建它。
ACTION=="add", SUBSYSTEMS=="scsi" , ATTRS{model}=="Storage Gateway", RUN+="/bin/sh -c 'echo
[timeout]
> /sys$$DEVPATH/timeout'"要修改 RHEL 6 中的超时值,请使用以下命令,然后添加前面显示的代码行。
sudo vim /etc/udev/rules.d/50-udev.rules
要修改 RHEL 7 中的超时值,请使用以下命令,然后添加前面显示的代码行。
sudo su -c "echo 600 > /sys/block/[device name]/device/
timeout
" -
将
[超时]
值设置为600
。该值表示 600 秒的超时值。
-
-
重启系统以确保新配置的值生效。
在重新启动之前,请确保刷新所有对卷的写入操作的结果。要这样做,请在重启前卸载存储卷。
-
您可以使用以下命令测试配置。
udevadm test
[PATH_TO_ISCSI_DEVICE]
此命令显示了应用到 iSCSI 设备的 udev 规则。
为 iSCSI 目标配置 CHAP 身份验证
Storage Gateway 支持使用质询协议 (iSCSI AAP)。 CHAP 通过定期验证 iSCSI 启动器的身份是否经过身份验证,可以访问音量和 VTL 设备目标,从而防止播放攻击。
注意
CHAP 配置是可选的,但强烈推荐。
要设置 CHAP,必须在Storage Gateway 控制台和用于连接目标的 iSCSI 启动器软件中对其进行配置。Storage Gateway 使用双方 CHAP,即启动器对目标进行身份验证,目标对启动器进行身份验证。
为目标设置双向 CHAP
-
在Storage Gateway 控制台上配置 CHAP,如中所述在Storage Gateway 控制台上为 VTL 设备目标配置 CHAP。
-
在客户端启动程序软件中,完成 CHAP 配置:
-
要在 Windows 客户端上配置双向 CHAP,请参阅 在 Windows 客户端上配置双向 CHAP。。
-
要在 Red Hat Linux 客户端上配置双向 CHAP,请参阅 如需在 Red Hat Linux 客户端上配置双向 CHAP。
-
在Storage Gateway 控制台上为 VTL 设备目标配置 CHAP
在本步骤中,您指定两个用来读取和写入虚拟磁带的私有密钥。这两个密钥也用来在本步骤中配置客户端启动程序。
-
在导航窗格中,选择 Gateways。
-
选择您的网关,然后选择 VTL Devices 选项卡以显示您的所有 VTL 设备。
-
选择要为其配置 CAP。
-
在 “配置 CHAP 身份验证” 对话框中提供所需的信息。
-
在启动器名称中,输入 iSCSI 启动器的名称。此名称是 Amazon iSCSI 限定名称 (IQN),前
iqn.1997-05.com.amazon:
面是目标名称。以下是示例。iqn.1997-05.com.amazon:
your-tape-device-name
您可以使用 iSCSI 启动程序软件找到启动程序名称。例如,对于 Windows 客户端,该名称为 iSCSI 启动程序的 Configuration (配置) 选项卡上的值。有关更多信息,请参阅在 Windows 客户端上配置双向 CHAP。:
注意
要更改启动器名称,必须先停用 CHAP,在 iSCSI 启动器软件中更改启动器名称,然后使用新名称激活 CHAP。
-
对于用于对启动器进行身份验证的密钥,输入请求的密钥。
此私有密钥的长度最少为 12 个字符,最多为 16 个字符。此值是私有密钥,启动程序 (即 Windows 客户端) 必须知道该私有密钥才能参与到与目标的 CHAP 中。
-
对于用于对目标进行身份验证的密钥(双方 CHAP),输入请求的密码。
此私有密钥的长度最少为 12 个字符,最多为 16 个字符。目标必须知道此值才能参与到与启动程序的 CHAP 中。
注意
用来验证目标身份的私有密钥必须不同于用来验证启动程序的私有密钥。
-
选择 Save(保存)。
-
-
在 VTL Devices 选项卡上,确认 iSCSI CHAP 身份验证字段设置为 true。
在 Windows 客户端上配置双向 CHAP。
在此过程中,您使用在控制台中为卷配置 CHAP 所用的同一密钥在 Microsoft iSCSI 启动程序中配置 CHAP。
-
如果 iSCSI 启动器尚未启动,请在 Windows 客户端计算机的 “开始” 菜单上,选择 “运行”
iscsicpl.exe
,输入,然后选择 “确定” 以运行该程序。 -
为启动程序 (即 Windows 客户端) 配置双向 CHAP 配置:
-
选择 Configuration 选项卡。
注意
Initiator Name 值对于您的启动程序和公司是唯一的。前面显示的名称是您在Storage Gateway 控制台的配置 CHAP 身份验证对话框中使用的值。
示例图像中所示名称仅作示范用途。
-
选择 CHAP。
-
在 iSCSI 启动器双方 CHAP 密码对话框中,输入双方 CHAP 密码值。
在此对话框中,输入启动程序 (Windows 客户端) 用来对目标 (存储卷) 进行身份验证的私有密钥。该私有密钥允许目标读取并写入启动程序。此密钥与在 “配置 CHAP 身份验证” 对话框的 “用于验证目标的密码(双方 CHAP)” 框中输入的密码相同。有关更多信息,请参阅为 iSCSI 目标配置 CHAP 身份验证:
-
如果您输入的密钥少于 12 个字符或长度超过 16 个字符,则会出现启动器 CHAP 密码错误对话框。
选择 OK,然后再次输入密钥。
-
-
使用启动程序的密钥进行配置,完成双向 CHAP 配置。
-
选择 Targets (目标) 选项卡。
-
如果当前连接了要为 CHAP 配置的目标,则通过选择该目标并选择 Disconnect 来断开该目标。
-
选择要为 CHAP 配置的目标,然后选择 Connect。
-
在 Connect to Target 对话框中,选择 Advanced。
-
在“Advanced Settings”对话框中,配置 CHAP。
-
选择激活 CHAP 登录。
-
输入对启动器进行身份验证所需的密钥。此密钥与在 “配置 CHAP 身份验证” 对话框的 “用于对启动器进行身份验证的密码” 框中输入的密码相同。有关更多信息,请参阅为 iSCSI 目标配置 CHAP 身份验证:
-
选择“Perform mutual authentication”。
-
要应用更改,请选择 OK。
-
-
在 Connect to Target 对话框中,选择 OK。
-
-
如果提供的私有密钥正确无误,则目标将显示 Connected (已连接) 状态。
如需在 Red Hat Linux 客户端上配置双向 CHAP
在此过程中,您在 Linux iSCSI 启动器中配置 CHAP 的密钥与在 Storage Gateway 控制台上为该卷配置 CHAP 时使用的密钥相同。
-
确保 iSCSI 守护进程正在运行并且您已连接到目标。如果您尚未完成这两个任务,请参阅连接到 Linux 客户端。
-
断开并移除您即将为其配置 CHAP 的目标的任何现有配置。
-
要查找目标名称并确保其为定义的配置,请使用以下命令列出保存的配置。
sudo /sbin/iscsiadm --mode node
-
从目标断开。
以下命令从 Amazon iSCSI 限定名称 (IQN) 中定义的名为
myvolume
的目标断开连接。按您的需求情况更改目标名称和 IQN。sudo /sbin/iscsiadm --mode node --logout
GATEWAY_IP
:3260,1 iqn.1997-05.com.amazon:myvolume -
移除目标的配置。
下面的命令移除
myvolume
目标的配置。sudo /sbin/iscsiadm --mode node --op delete --targetname iqn.1997-05.com.amazon:myvolume
-
-
编辑 iSCSI 配置文件以激活 CHAP。
-
获取启动程序 (即您正在使用的客户端) 的名称。
以下命令从文件
/etc/iscsi/initiatorname.iscsi
获取发起程序名称。sudo cat /etc/iscsi/initiatorname.iscsi
该命令的输出内容类似于以下内容:
InitiatorName=iqn.1994-05.com.redhat:8e89b27b5b8
-
打开
/etc/iscsi/iscsid.conf
文件。 -
取消文件中下列各行的注释,并为
username
、password
、username_in
和password_in
指定正确的值。node.session.auth.authmethod = CHAP node.session.auth.username =
username
node.session.auth.password =password
node.session.auth.username_in =username_in
node.session.auth.password_in =password_in
有关要指定的值的指南,请参阅下表。
配置设置 值 username
您在此过程中的上一步中找到的启动程序名称。该值以 iqn 开头。例如,
iqn.1994-05.com.redhat:8e89b27b5b8
是有效的username
值。密码
用于在启动程序 (您正在使用的客户端) 与卷通信时对启动程序进行身份验证的私有密钥。 username_in
目标卷的 IQN。该值以 iqn 开头,以目标名称结尾。例如,
iqn.1997-05.com.amazon:myvolume
是有效的username_in
值。password_in
用于在目标 (卷) 与启动程序通信时对目标进行身份验证的私有密钥。
-
保存配置文件中的更改,然后关闭该文件。
-
-
发现并登录到目标。为此,请按照连接中的步骤进行操作。