资源描述
来源:
用 USB 存储创建文件系统
简介: USB 存储非常非常的便宜。只要您的硬件上有 USB 槽,就可以考虑对那些要求快速读取、大型数据副本或临时文件存储的文件使用存储。本文将展示如何在您的 AIX® 系统上装载一个 USB 设备,并用它进行存储。
本文的标签: 安装, 工具与及实用程序, 操作系统
如果要实现涉及文本文件数据解压的任务,但在执行任务期间,既要有良好的性能,又要将文本文件放置到临时存储器中,此时往往需要考虑许多方面的内容。通常,人们会考虑使用 RAM 盘(文件系统)、USB 存储,或者可能使用 SSD(固态硬盘)。RAM 盘文件系统速度极快,但是如果文件系统卸载或系统重新引导,可能丢失所有东西,因此可能需要将文件从文件系统中移出。而且,首先需要足够的内存空间(固定的)来创建 RAM 盘。SSD 可能是最为理想的解决方案,但是它们没有 USB 存储设备那么便宜(尤其是在只要求临时的、可移动存储的时候)。另一个考虑是,您不能像 USB(记忆)棒那样将 SSD 或 RAM 盘放到口袋里,也不能将它们重新插入到另一个机器使用。这些 USB 存储有如下称谓:
· 笔式驱动器;
· 存储棒;
· USB 存储;
· 闪存驱动器;和
· 拇指驱动器。
在本文中,我将展示如何创建一个 USB 存储文件系统(以下简称为 USB 存储)并使用一个 2MB CSV 文件来比较文本解压方面的速度差异。我使用的是一个 4GB Sandisk 存储和 AIX 7.1 系统。这些 USB 存储最大容量可达 256GB。
我之所以认为 USB 存储十分有用是因为:
· 它们非常适于快速数据存取。
· 它们可用于网络性能不佳时的数据传输。
· 它们是暂存或临时文件系统的绝佳选择。
· 它们比其他替代方案要便宜。
惟一的缺点是它们的生命周期有限,因为这些驱动器的写入周期通常只有 8-10 年的寿命,之后记忆单元就会磨损耗尽。但是由于它们价格便宜,所以这也不成为问题,因为在这个时间周期内,您肯定会替换它们。
AIX 6.1 文档声称支持下列品牌的 USB 存储:
· Sandisk
· Lenovo
· Kingston
但是,我也曾使用过其它品牌和一些没有品牌的 USB 存储,使用中并未发现什么问题。
USB 存储十分适合于创建临时的文件系统,在这样的系统里,因为网络链接通常不佳,所以可以通过载体传递大量的数据以便经济、快速地将数据解压到远端的目的端。此外,也可以使用它们进行大型文本文件的数据处理。USB 存储虽然能快速读取但并不能提供很好的写入性能;所以需要考虑要用它完成哪种类型的处理任务。
加载一个 USB 存储
在插入 USB 存储之前,需要确保文件集已经正确安装。要求下列文件集能存取此 USB 存储:
# lslpp -L devices.usbif.08025002.rte
Fileset Level State Type Description (Uninstaller)
devices.usbif.08025002.rte
7.1.0.15 A F USB Mass Storage Device
Software
# lslpp -L mon.IBM.usb.rte
Fileset Level State Type Description (Uninstaller)
mon.IBM.usb.rte
7.1.0.15 A F USB System Software
插入这个 USB 存储并运行 cfgmgr 来发现它:
# cfgmgr
发现后,系统就具备了两个设备(块和原始设备):
ls -l *usbms0
cr--r--r-- 1 root system 44, 0 Aug 22 18:59 rusbms0
br--r--r-- 1 root system 44, 0 Aug 22 18:59 usbms0
同样显示在这些设备输出中:
# lsdev |grep usb
usb0 Available USB System Software
usbhc0 Available 08-08 USB Host Controller (33103500)
usbhc1 Available 08-09 USB Host Controller (33103500)
usbhc2 Available 08-0a USB Enhanced Host Controller (3310e000)
usbms0 Available 2.1 USB Mass Storage
对于 AIX 5.3,第一个 USB 设备显示为 flashdrive0。
这时,我可以将这个 USB 存储视为一个原始卷并向它写入数据。但是,在该展示中,我将这个 USB 存储作为一个文件系统加载。我觉得没有必要为此 USB 加载创建一个日志加载,因为暂存文件系统的本质就是临时的,传递数据时的速度才是最为重要的。要创建这个 USB 存储文件系统,可以使用如下命令:
# mkfs -V jfs2 -o ea=v2 /dev/usbms0
mkfs: destroy /dev/usbms0 (yes)?
File system created successfully.
3927736 kilobytes total disk space.
Device /dev/usbms0:
Standard empty filesystem
Size: 7855472 512-byte (DEVBLKSIZE) blocks
之前的命令已对该 USB 存储进行初始化。选择 "Yes" 取消,否则初始化此设备。此文件系统的类型为 jfs2。我不认为 jfs2 类型对于此任务有多重要,因为此文件系统根本不会使用 jfs2 日志设备。但是由于这是创建文件系统的一个常规做法,于是我也就选择了 jfs2 类型。为了确保此文件系统具有可伸缩性,我使用 'ea' 选项对其进行了指定。在本示例中,要使用的设备就是所插入的这个 USB 存储,即 usbms0。
对于 AIX 5.3,加载命令中没有 NOLOG 选项。
接下来,加载该文件系统,指定是否不使用日志设备对其进行加载;确保首先创建要被加载的目录:
# mkdir /usb_mnt
# mount -o log=NULL /dev/usbms0 /usb_mnt
# df -g |grep usb
/dev/usbms0 3.75 3.73 1% 4 1% /usb_mnt
如果想要使用一个日志设备来加载该 USB 存储,那么可以使用 inline 日志。这就可以确保将它包含在此文件系统中:
# mkfs -olog=INLINE,ea=v2 -Vjfs2 /dev/usbms0
mkfs: destroy /dev/usbms0 (yes)?
logform: Format inline log for <y>?y
File system created successfully.
3912376 kilobytes total disk space.
Device /dev/usbms0:
Standard empty filesystem
Size: 7824752 512-byte (DEVBLKSIZE) blocks
# mkdir /usb_mnt
# mount -V jfs2 -o log=/dev/usbms0 /dev/usbms0 /usb_mnt
卸载一个存储
使用完 USB 存储文件系统后,就可以卸载或移除它,然后再删除 usbms0 设备:
# umount /usb_mnt
# rmdev -dl usbms0
回页首
存储上的数据
在该演示中,我使用了一个名为 plaks.txt 的 CSV 文本文件。它是节取自一个数据库,此文件的部分内容如下所示:
alpha,uk01w,12001,jan,-2
bravo,ge01w,98801,jan,-3
charlie,se01w,98111,jan,0
delta,my01w,18811,jan,4
echo,sg01w,34131,janq,2
我之前曾指出,USB 存储的读取速度很快,但其写入速度会比内部磁盘慢。这一点可以通过一个示例复制操作得到验证。首先,我将一个文件从 USB 存储复制到一个内部磁盘。然后,我使用 timex 命令将同样的一个文件从内部磁盘再复制到此 USB 存储来显示此复制命令的计时。在进行这两次复制操作之前,文件系统已经进行了卸载和重加载,目的是为了使此操作不会使用文件系统缓存,不会因此影响计时的准确性。
首先,将此文件从 USB 存储复制到一个内部磁盘的 /holding 目录:
# pwd
/usb_mnt
# timex cp plaks.txt /holding/
real 0.03
接下来,从 USB 存储删除此文件并卸载和重加载此文件系统。
然后,将此文件从 /holding 复制回 USB 存储。
# cd /holding
# timex cp plaks.txt /usb_mnt/
real 0.06
从 USB 存储复制所花的时间是从内部磁盘复制所花时间的近乎一半。我通常会使用 USB 存储进行文本解压。比如,以 awk 作为数据提取的例子,提取该 USB 存储中 plaks.txt 文件中所包含的模式 'bravo':
# pwd
/usb_mnt
# timex awk '/bravo/' plaks.txt
real 5.50
在内部磁盘进行同样的操作:
# pwd
/holding
# timex awk '/bravo/' plaks.txt
real 8.48
文本提取在 USB 存储上更快;实际上,二者有超过 3 秒的差别。这里我使用的是一个相对较小的文本文件。很明显,在使用较大的导出文件(通常多达 8-10MB)时在时间上会节省更多。
在我看来,以上阐释了我选择 USB 存储进行大量测试处理的原因;但是,正如之前所言,如果您是想要写入数据,那么您并不能节省时间。这里,我在此 USB 存储上创建了一个 100MB 的文件:
# pwd
/usb_mnt
# timex lmktemp myfile 100M
myfile
real 6.60
接下来,我在一个内部磁盘上进行相同的操作:
# pwd
/holding
# timex lmktemp myfile 100M
myfile
real 1.65
正如您所见,写入 USB 存储与写入内部磁盘之间有超过 5 秒的差异。
在没有其他更好的可选方案时,USB 存储是传递数据的一个很好的选择。我还记得这样一个事故,我们有一台远端机器的 SAN 磁盘发生故障了。这些磁盘包含了工作流镜像。该机器也没有一个稳健的网络,并且我们想要将这些镜像迅速移到另一个远端机器上以便业务用户能够继续工作。当时能够最快解决此问题的惟一可用的方法就是购买一些 64GB USB 存储,加载它们,并将这些映像压缩后保存到 USB 存储。然后再将这些映像解压缩到我们的另一个 AIX 系统。这个方法很奏效,而且没有发生任何的数据丢失。
回页首
加载已初始化的存储
如果您拥有一个存储,其中包含了之前作为文件系统加载的数据,那么要存取它,只需加载它即可。当然需要先要确保创建了加载点。比如,假设此 USB 驱动器插入到第二个 USB 槽,然后将此设备识别为 usbms1:
# mkdir /usbstick
# mount -o log=NULL /dev/usbms1 /usbstick
回页首
结束语
当您想要创建一个具有快速读取临时文件系统来处理临时文件时,或者当您想要创建一个原始设备,以便转储一些文件,将它们传输给另一个 AIX 系统时,使用 USB 存储是一个不错的选择。如果您的网络连接表现不佳,而您又想要传递大量数据,那么 USB 可以为这种情况提供解决方案。
参考资料
学习
· AIX 7.1 和 AIX 5.3 信息中心:是关于 AIX 操作系统的技术信息源。
· AIX and UNIX 专区:developerWorks 的“AIX and UNIX 专区”提供了大量与 AIX 系统管理的所有方面相关的信息,您可以利用它们来扩展自己的 UNIX 技能。
· AIX and UNIX 新手入门:访问“AIX and UNIX 新手入门”页面可了解更多关于 AIX 和 UNIX 的内容。
· AIX and UNIX 专题汇总:AIX and UNIX 专区已经为您推出了很多的技术专题,为您总结了很多热门的知识点。我们在后面还会继续推出很多相关的热门专题给您,为了方便您的访问,我们在这里为您把本专区的所有专题进行汇总,让您更方便的找到您需要的内容。
· AIX and UNIX 下载中心:在这里你可以下载到可以运行在 AIX 或者是 UNIX 系统上的 IBM 服务器软件以及工具,让您可以提前免费试用他们的强大功能。
· IBM Systems Magazine for AIX 中文版:本杂志的内容更加关注于趋势和企业级架构应用方面的内容,同时对于新兴的技术、产品、应用方式等也有很深入的探讨。IBM Systems Magazine 的内容都是由十分资深的业内人士撰写的,包括 IBM 的合作伙伴、IBM 的主机工程师以及高级管理人员。所以,从这些内容中,您可以了解到更高层次的应用理念,让您在选择和应用 IBM 系统时有一个更好的认识。
获得产品和技术
· 免费 试用 IBM 软件。下载试用版,登录在线试用版,在沙箱环境中试用产品,或者通过云访问试用软件。有超过 100 个 IBM 试用产品可供选择。
讨论
· 关注 Twitter 上的 developerWorks。
· 参与 developerWorks 博客 并加入 developerWorks 社区。
· 加入 developerWorks 中文社区。查看开发人员推动的博客、论坛、组和维基,并与其他 developerWorks 用户交流。
· 参与 AIX 和 UNIX® 论坛:
o AIX 论坛
o 针对开发人员的 AIX 论坛
o 集群系统管理
o 性能工具论坛
o 虚拟化论坛
o 更多 AIX 和 UNIX 论坛
展开阅读全文