简介¶
以太网上的 ATA 是一种网络协议,可提供对 LAN 上块存储的简单访问。
2.6 和 3.x 内核的 EtherDrive (R) HOWTO 位于 ...
它有很多提示和技巧!请特别参阅虚拟内存的推荐调整
aoetools 是设计为与此驱动程序一起使用的用户空间程序。aoetools 在 sourceforge 上。
此 Documentation/admin-guide/aoe 目录中的脚本旨在记录驱动程序的使用,如果您安装了 aoetools,则不需要这些脚本。
创建设备节点¶
udev 用户应该会自动发现创建的块设备节点,但要创建所有必要的设备节点,请使用 udev.txt(在此目录中)中提供的 udev 配置规则。
有一个 udev-install.sh 脚本,展示如何在您的系统上安装这些规则。
还有一个自动加载脚本,展示如何编辑 /etc/modprobe.d/aoe.conf 以确保在必要时加载 aoe 模块。但是,预加载 aoe 模块比自动加载更好,因为 AoE 发现需要几秒钟。当第一次运行命令时 AoE 设备不存在,但一秒钟后出现时,可能会造成混淆。
使用设备节点¶
“cat /dev/etherd/err” 会阻塞,等待错误诊断输出,例如任何重新传输的数据包。
“echo eth2 eth4 > /dev/etherd/interfaces” 告诉 aoe 驱动程序将以太网上的 ATA 流量限制为 eth2 和 eth4。来自不受信任网络的 AoE 流量应出于安全考虑而被忽略。另请参阅下面描述的 aoe_iflist 驱动程序选项。
“echo > /dev/etherd/discover” 告诉驱动程序找出哪些 AoE 设备可用。
将来,这些字符设备可能会消失,并被 sysfs 对等设备取代。使用 aoetools 中的命令可以使用户免受这些实现细节的影响。
块设备命名如下
e{shelf}.{slot} e{shelf}.{slot}p{part}... 因此,“e0.2” 是第一个机架(机架地址零)中从左侧数的第三个刀片(插槽 2)。那是整个磁盘。该磁盘上的第一个分区将是 “e0.2p1”。
使用 sysfs¶
/sys/block 中的每个 aoe 块设备都具有 state、mac 和 netif 的额外属性。当设备准备好进行 I/O 时,state 属性为 “up”,如果检测到但不可用,则为 “down”。“down,closewait” 状态表示设备仍处于打开状态,并且必须关闭才能再次启动。
mac 属性是远程 AoE 设备的以太网地址。netif 属性是本地主机上我们通过它与远程 AoE 设备通信的网络接口。
此目录中有一个脚本可以以方便的方式格式化此信息。使用 aoetools 的用户应该使用 aoe-stat 命令
root@makki root# sh Documentation/admin-guide/aoe/status.sh e10.0 eth3 up e10.1 eth3 up e10.2 eth3 up e10.3 eth3 up e10.4 eth3 up e10.5 eth3 up e10.6 eth3 up e10.7 eth3 up e10.8 eth3 up e10.9 eth3 up e4.0 eth1 up e4.1 eth1 up e4.2 eth1 up e4.3 eth1 up e4.4 eth1 up e4.5 eth1 up e4.6 eth1 up e4.7 eth1 up e4.8 eth1 up e4.9 eth1 up使用 /sys/module/aoe/parameters/aoe_iflist(或者更好的,下面讨论的驱动程序选项)而不是 /dev/etherd/interfaces 将 AoE 流量限制为给定的以空格分隔列表中的网络接口。与旧的字符设备不同,可以读取和写入 sysfs 条目。
设置允许的接口列表后触发发现非常有用。aoetools 包为此目的提供了一个 aoe-discover 脚本。您也可以直接使用上面描述的 /dev/etherd/discover 特殊文件。
驱动程序选项¶
内置 aoe 驱动程序有一个启动选项和一个相应的模块参数 aoe_iflist。如果没有此选项,所有网络接口都可以用于以太网上的 ATA。以下是模块参数的用法示例
modprobe aoe_iflist="eth1 eth3"aoe_deadsecs 模块参数确定驱动程序将等待 AoE 设备对 AoE 命令提供响应的最长时间(以秒为单位)。经过 aoe_deadsecs 秒后,AoE 设备将被标记为“down”。为了进行测试,支持值为零,这会使 aoe 驱动程序永远尝试 AoE 命令。
aoe_maxout 模块参数的默认值为 128。这是一次将发送到 AoE 目标的最大未响应数据包数。
aoe_dyndevs 模块参数默认为 1,这意味着驱动程序将根据发现的顺序将块设备次要编号分配给发现的 AoE 目标。使用动态次要设备编号,可以支持更大范围的 AoE 机架和插槽地址。udev 用户永远不必考虑次要编号。使用 aoe_dyndevs=0 允许使用静态次要编号方案和 aoetools 中的 aoe-mkshelf 脚本预先创建设备节点。