开始新对话

未解决

此帖子已超过 5 年

3457

2014年8月11日 20:00

请问:常用主机IO支持多大的数据块,512K还是1M

windows 和 Linux 操作系统 使用的文件系统 分别是多大?

有没有超过1M的可能性?

1.2K 消息

2014年9月10日 00:00

楼主,你好。我是论坛版主Jason周。我注意到,你的这个帖子被不小心创建在了你的个人的版面内了。建在个人版块里的帖子其他人基本没机会看到 ,所以至今都没有收到回复。至于为什么会发生这样的情况以及如何避免,可参考我写的这个帖子 【帮助说明】如何避免帖子在不经意间被创建在了错误的版面里,导致收不到回复(因为别人看不到帖子)

我现在已把你的帖子移动到中文支持论坛内的 综合讨论区 版块里了,这样更多的朋友能够看到,相信稍后会有懂这块技术的朋友们来跟你分享或解答。以后建议先由中文支持论坛首页 用顶部的导航按钮先进入相应的版块(例如:综合讨论区),然后用右边操作栏里的“开始一个讨论”来创建帖子提问或者分享,这样创建出来的帖子默认就是在你所在的版块的,避免帖子被无意中创建在了个人版块内。

谢谢!

1.4K 消息

2014年9月10日 01:00

I/O size取决于应用程序本身的代码,程序作者通过向系统调用提供参数进入I/O子系统的方式来指定I/O Size。但是否有大小限制我到没具体研究过,可能每个OS会不一样。我这边有个trace是从Windows 2008 R2 SP1上抓下来的,系统上跑了一个视频监控程序,你可以看到每个I/O的大小分别是1MB或是512Bytes。

一般程序作者不会使用非常奇怪的I/O size,而是使用memory page size的整数倍,由此提高系统I/O效率。常见的应用主要采用两种IO SIZE,>64KB和<64KB。前者多出现在数据库系统,后者多出现在文件共享、视频流、备份等应用中。注重IOPS的应用通常都采用小I/O,而注重吞吐量的应用则采用大I/O。

9-10-2014 4-02-30 PM.jpg

1.2K 消息

2014年9月10日 02:00

微软操作系统中,硬盘文件的分配以簇为单位。一个簇只分配给一个文件使用,不管这个文件大小是多少。簇越小,保存信息的效率越高。FAT16中(win 95以前),缺省簇大小由卷大小来确定。FAT32比FAT16支持更小的簇和更大的卷。NTFS(2003)也是以簇为单位来存储数据文件,比FAT32支持更小的簇。用户可以指定簇的大小,但必须大于表中给定大小。

FAT簇大小:

Capture.PNG.png

NTFS簇大小:

Capture1.PNG.png

Linux ext2, ext3,VFS:也是数据被保护在数据块文件内,块有相同的大小,且长度可以变化。每个文件大小是它块大小(比如1024B)的整数倍。文件系统的块大小在创建时指定,使用mke2fs命令。通常这一大小设置需要在CPU内存利用率和磁盘空间使用上折中。

5 Practitioner

 • 

274.2K 消息

2014年9月10日 19:00

IO size可以很大。但常见的,经常小于1MB。这是因为很多系统参数做了限制。

  • Veritas, 它默认限制IO最大为1MB, 参数是vxio:vol_maxio。
  • VMWare, by default, limit VM to use max to 32MB. 这可大多了。设置说明和步骤如下:

     ESX/ESXi 3.5 and later versions support increased limits for the maximum I/O request size passed to storage devices.      These versions of ESX pass I/O requests as large as 32767 KB directly to the storage device.

          The setting (online change and effective)

    1. Go to Host > Configuration.
    2. Click Advanced Settings.
    3. Go to Disk.

                 Change Disk.DiskMaxIOSize

没做过对不同的操作系统仔细统计,但见过HPUX大于1MB IO size的情况。如下图实例,有1.2MB的读IO记录。


large_than_1MB_IO.png

EMC VPLEX手册也有说明,对于大于1MBIO,会进行分割。这也说明了有大于1MB的IO。


注意某些操作系统在存储管理经常在逻辑卷一级做stripe。stripe depth决定了IO的最大值。比如64KB stripe depth,那么大于64KB的数据请求,会被操作系统分割成2个或更多个IO来完成。

1.4K 消息

2014年9月10日 22:00

这张图的结果是算数平均数,所以才会看到类似诡异的1.2MB的I/O size。

如果take a blktrace (Linux), Dtrace (MacOS, Solaris),every single i/o size就可以看到了,类似我上面那张图(ETW trace taken from Windows)。畸形I/O size一般不会有人用,或许OS也会限制使用....whatever...

找不到事件!

Top