# FAQ

### 文件存储的使用有哪些限制吗？
文件存储对文件系统容量、文件最大长度、协议版本等方面有一定限制，请您参考『产品限制』章节获取详细信息。

### 文件存储支持哪些访问协议?
目前容量型文件存储产品新创建的实例都支持 NFS和SMB 协议，性能型文件存储产品新创建的实例仅支持NFS协议。

### 文件存储是否允许跨地域访问？
文件存储产品的网络是基于 VPC 的，在 UFS 控制台上您可以指定在文件系统实例所在同地域的多个 VPC 下的主机访问。如果需要在其他地域访问文件系统，您可以通过 UDPN 服务将需要访问文件系统的主机所在 VPC 和该文件系统挂载点所在的 VPC 打通即可。我们强烈建议您让文件系统和使用文件系统的主机位于同一地域，UDPN 服务可能会收取额外的费用并带来比同地域访问更高的延迟。

### 文件存储是否允许跨项目组访问？
文件存储产品的网络是基于 VPC 的，在 UFS 控制台上允许用户指定在文件系统实例所在项目组下的多个 VPC 下的主机访问，不在该项目组下的 VPC 默认不允许被创建挂载点。您可以通过在 VPC 页面上打通需访问文件系统的主机所在项目组和该文件系统挂载点所在项目组各自对应的 VPC 即可。

### Linux NFS 客户端内核缺陷
由于文件存储服务依赖 NFS 客户端的服务，而 NFS 客户端在 Linux 上的实现存在一些缺陷，可能会导致 IO 卡住无响应等严重问题。

|发行版  |推荐系统版本  |推荐内核  |
|--------|--------|--------|
|CentOS	|7.6	|3.10.0-957.5.1.el7(请注意小版本需要 >= 957.5.1，低于此版本不建议使用)|
|Ubuntu	|18.04	|4.15|
|Debian	|10.0	|4.19|

我们强烈建议您将主机升级到上述推荐的内核版本，若无法升级导致遇到操作无响应的场景，需要通过重启主机进行恢复。

### Linux SMB 客户端内核缺陷
由于Linux一些早期版本的SMB客户端在实现上存在一些缺陷，可能会导致IO卡住无响应等严重问题。

|发行版  |推荐系统版本  |推荐内核  |
|--------|--------|--------|
|CentOS	|7.6	|3.10.0-957.21.3.el7以上|
|Ubuntu	|18.04	|4.15以上|
|Debian	|9.10	|4.9以上|

我们强烈建议您将主机升级到上述推荐的内核版本，若无法升级导致遇到操作无响应的场景，需要通过重启主机进行恢复。

### 单个文件系统允许访问的主机客户端数量是否受限？
客户端主机通过文件系统对应的挂载点进行访问，由于挂载点限制的是允许访问的 VPC 而不是具体主机 IP，只要您合理规划 VPC 内各子网大小，VPC 内任意数量的主机都允许访问。虽然我们对挂载点的数目有一定的限制(详细请参考『产品限制』章节)，但对挂载点允许访问的主机数目是不限的。

### 物理云和托管云主机可以访问文件存储吗？
物理云主机可以通过在文件存储控制台上选择其所在 VPC，建立挂载点即可让主机访问文件存储。但托管云 VPC 默认不允许在文件存储控制台上进行打通，需要您联系托管云技术支持对托管云主机所在 VPC 和文件系统挂载点所在 VPC 进行互通操作后才能访问。

### 如何修改 NFS 请求并发数？
NFS 客户端会对同时允许发起的请求个数进行限制，在众多发行版内核中该默认值通常为 2，由于并发较低会导致客户端能够达到的吞吐较低。为此，单客户端为了提升性能建议修改此参数。

#### 步骤一、安装 NFS 客户端
安装 NFS 客户端的详细步骤请参考 『操作指南』章节中的『挂载文件系统』部分。

#### 步骤二、修改系统参数
以 root 权限在命令行执行以下命令(该操作只需在首次安装 NFS 客户端完成后执行一次即可，后续不需多次执行)：

    echo "options sunrpc tcp_slot_table_entries=128" >> /etc/modprobe.d/sunrpc.conf

    echo "options sunrpc tcp_max_slot_table_entries=128" >> /etc/modprobe.d/sunrpc.conf

#### 步骤三、挂载文件系统
挂载文件系统的详细步骤请参考 『操作指南』章节中的『挂载文件系统』部分。

#### 步骤四、再次修改系统参数
通过执行以下命令修改相关系统参数：

    sysctl -w sunrpc.tcp_slot_table_entries=128

完成后卸载文件系统并重新挂载，之后执行如下命令查看系统参数值，如果返回值为 128 则表示设置成功。

    cat /proc/sys/sunrpc/tcp_slot_table_entries

### 文件存储的存储类型(容量型、性能型)可以修改吗？
不可以，目前还不支持将已创建的文件存储类型进行修改，如果您有类似需求可以通过创建新的文件系统实例，将老文件系统实例中的数据进行迁移。

### 文件系统删除前需要做特殊操作吗？
是的，在文件系统被删除前，请首先确保该文件系统内数据不会再被使用，目前文件存储不提供数据恢复功能，删除操作请谨慎。在您删除文件系统前请确保所有使用该文件系统的主机上都对其做了卸载操作，否则在主机上残留的已删除文件系统实例会影响主机运行。

### 如何解决Windows使用文件系统时，提示没有权限的问题？

- 问题原因：NFS协议通过GID、UID进行身份校验，Windows默认GID和UID值为-2，因此会出现没有权限操作文件系统的问题。

- 解决方案：  
    1. 打开`命令提示符`窗口，输入`regedit`，进入注册表编辑器页面。  
    2. 选择以下值：`HKEY_LOCAL_MACHINE > SOFTWARE > Microsoft > ClientForNFS > CurrentVersion > Default`。  
    3. 右击`Default`，选择`新建 > DWORD(32位)值`，并创建`AnonymousGID`和`AnonymousUID`两个注册表项。
    <!-- image-todo -->

<br/>

### 如何解决Windows使用文件系统创建文件\文件夹时，客户端卡住的问题？

- 问题原因：默认情况下，Windows客户端会优先使用服务器消息块(SMB)端口139和445访问已挂载的文件系统。由于文件系统使用NFS协议挂载，因此会导致发往139和445端口的请求一直未响应，出现客户端卡住的情况。

- 解决方案：

    方案一：使用SMB协议挂载文件系统。

    方案二：如果确定不使用SMB协议，可以按以下步骤关闭smb client服务。

    1. 点击左下角开始按钮，打开`Windows管理工具`。  
    <!-- image-todo -->  

    2. 双击`服务`。  
    <!-- image-todo -->

    3. 找到`Workstation`服务。  
    <!-- image-todo -->

    4. 右击`属性`，在`常规`选项卡，设置启动类型为`禁用`，服务状态为`停止`。在恢复选项卡中，设置`第一次失败`、`第二次失败`、`后续失败后`的操作类型为`无操作`。修改完成后，点击应用，并确定。  
    <!-- image-todo -->

    5. 修改完再使用文件系统，就不会再出现客户端卡住的情况。后续如果需要使用SMB协议，再将Workstation服务启动即可。

### 如何解决Windows使用文件系统重命名文件\文件夹时，提示无效设备(invalid device)的错误？

- 问题原因：NFS协议实现问题。

- 解决方案：由于NFS协议实现问题，当文件系统挂载的是子目录时，执行重命名操作，会返回无效设备(invalid device)错误，请挂载文件系统根目录进行使用。
