mstor 特殊文件

用途

提供对虚拟可移动磁盘设备的访问权。

描述

姆斯托尔 特殊文件提供对虚拟可移动磁盘设备的块和字符 (原始) 访问,这些设备由 Virtual I/O Server (VIOS) 上的通用串行总线 (USB) 大容量存储设备 (例如 RDX ,闪存驱动器和存储设备) 提供支持。 将针对 IBM® RDX 验证 AIX® 操作系统读写虚拟可移动磁盘驱动器的能力,并使用行业标准原始设备制造商 (OEM) USB 闪存驱动器样本作为 VIOS 上的支持存储。

注: AIX 小型计算机系统接口 (SCSI) 磁盘驱动器支持 AIX 版本 6.1 (技术级别为 6100-09) 和更高版本以及 AIX 版本 7.1 (技术级别为 7100-03) 和更高版本上的虚拟可移动磁盘。

每次只能将支持 USB 大容量存储设备导出到一个客户机。 如果用户想要将支持设备导出到另一个客户机,那么必须使用 Rmdev 命令从旧客户机中除去虚拟可移动磁盘设备,然后必须将支持设备重新映射到 VIOS 上的新客户机。

通过使用逻辑名 (例如 mstor0 和 mstor1 ) 来配置虚拟可移动磁盘驱动程序。 该驱动程序同时提供 原始 特殊文件。 例如, mstor0 文件的原始特殊文件是 /dev/rmstor0 文件,块特殊文件是 /dev/mstor0。 要在虚拟可移动磁盘上安装原始 I/O ,所有数据传输都需要虚拟可移动磁盘设备的块长度 (512 字节) 的倍数。 并且,对虚拟可移动磁盘设备驱动程序执行的所有 寻求 子例程都必须将文件偏移量指针设置为指定逻辑块大小的倍数值。

虚拟可移动磁盘设备不能与 AIX 逻辑卷管理器 (LVM) 或 AIX 日志文件系统 (JFS) 或 JFS2 文件系统配合使用。 虚拟可移动磁盘设备可以与用户定义文件系统 (UDFS) 文件系统配合使用,可以与备份命令 (例如 焦油savevg 命令) 配合使用,也可以与介质访问命令 (例如 命令) 配合使用。 用户还可以在设备上创建 Mksysb 映像,并可以从该设备启动和安装。 在 AIX 操作系统上,它可以用作内存转储设备。

虚拟可移动磁盘设备依赖于已连接的设备或介质以及 VIOS 上可用的设备或介质。 当支持 USB 磁盘设备与 VIOS 断开连接,而该设备在 AIX 客户机上仍在使用时,该设备在客户机上变为不可用。 在将 USB 设备重新连接至 VIOS 时,必须通过除去较旧的映射,然后创建新的映射来重新映射设备,并在 AIX 客户机上运行 cfgmgr 命令以使设备在客户机上再次可用。 可以通过运行以下命令来完成此任务:

在 Virtual I/O Server 上
  1. 要获取当前映射,请运行以下命令:
    lsmap -all
  2. 要除去当前映射,请运行以下命令:
    rmvdev -vtd VTD of the device from lsmap
  3. 要创建新映射,请运行以下命令:
    mkvdev -vdev usb device -vadapter virtual adapter name
在 AIX 客户机上
cfgmgr

可移动磁盘设备定义了 预防性弹出 属性,该属性的缺省值为 ,并且可以使用系统管理界面工具 (SMIT) 界面或 奇德夫 命令进行更改。 如果用户将 预防性弹出 属性的值设置为 ,那么会导致在打开和关闭设备时执行 "媒体弹出阻止" 和 "媒体弹出允许" 操作。 仅当支持设备具有可弹出的介质并且闪存驱动器不支持此操作时,此操作才适用。

如果支持设备具有可弹出的介质,并且 预防性弹出 属性设置为 ,并且该介质是从已导出的 UDFS 文件系统的磁带机中弹出的,那么无法访问盒式磁带上的文件。 要再次访问这些文件,必须将从虚拟可移动磁盘驱动器安装的文件系统卸载。 必须退出在这些文件系统上具有处于打开状态的文件的进程。 必须移动在这些文件系统上具有当前目录的进程。 如果这些操作失败,请执行强制卸装操作。

与设备相关的子例程

大多数虚拟盘设备操作是通过使用 关闭 子例程实现的。 但是,出于某些目的,必须使用 奥佩克斯 (扩展) 子例程。
子例程 描述
ioctl 子例程 虚拟可移动磁盘设备使用 SCSI 磁盘设备驱动程序进行操作。 它支持 SCSI 磁盘驱动程序所支持的 国际奥克茨尔斯 操作,例如 IOCINFO , DKIOLCMD , DK_PASSTHRU , DKPMR , DKAMR 和 DKEJECT 操作。
openx 子例程 支持 奥佩克斯 子例程以向 序列提供更多功能。 奥佩克斯 子例程需要适当的权限才能启动。 如果试图在没有访问权限的情况下运行该子程序,可能会导致返回值为 -1 ,同时 Erno 全局变量被设置为 EPERM

错误代码

除了针对 ioctl 子例程列出的错误代码之外,还会列出其他错误代码。 以下错误代码也受支持:
错误代码 描述
EACCES 在诊断方式下尝试了除 ioctl关闭 以外的子例程。
EACCES 在诊断方式下尝试了正常的读调用。
EFAULT 用户地址不正确。
EBUSY 目标设备由另一个发起方保留。
EINVAL 子例程的 nbyte 参数不是块大小的偶倍数。
EINVAL 已尝试配置仍处于打开状态的设备。
EINVAL 输入了不正确的配置命令。
电子文件 对于已具有允许的最大开放式设备数的 SCSI 适配器,将尝试进行开放式呼叫。
ENOTREADY 在连接至 VIOS 的磁带机中没有任何盒带。
ENODEV 尝试访问一个未定义的设备。
ENODEV 试图关闭一个未定义的设备。
EMEDIA 媒体已更改。
EIO 硬件错误,命令异常终止,请求无效。
EIO 尝试读取的内容超出介质的末尾。
EPERM 子例程需要适当的权限。
ESTALE 介质被弹出 (未被用户首先关闭) ,然后重新插入或替换为第二个磁盘。
ETIMEDOUT I/O 操作超过指定的计时器值。