【发布时间】:2012-10-17 17:12:57
【问题描述】:
我正在尝试获取扇区大小,特别是这样我就可以正确调整缓冲区的大小,以便使用 O_DIRECT 读取/写入。
以下代码在我的应用以 root 身份运行时有效:
int fd = open("/dev/xvda1", O_RDONLY|O_NONBLOCK);
size_t blockSize;
int rc = ioctl(fd, BLKSSZGET, &blockSize);
如何在不以 root 身份运行的情况下获取扇区大小?
【问题讨论】:
-
您是在读取(使用
O_DIRECT)原始分区,还是其中的文件系统上的某个文件? -
你为什么要问?您是在寻求最佳 IO 性能,还是出于其他原因?
-
@BasileStarynkevitch 我正在读取和写入文件,并使用 O_DIRECT 来提高性能,因为我只读取或写入随机定位的 512 字节块。