社区
Linux/Unix社区
帖子详情
如何使用在创建文件时预先分配一定的磁盘空间
frman
2007-02-25 10:17:04
要求使用CRT
之前查了查
fopen()后fseek(),然后再fwrite()一下就好,但这样在给大文件分配空间时太耗时。
有没有什么其他别的方法达到WIN32 SDK里那个SetEndOfFile()的效果?
...全文
747
9
打赏
收藏
如何使用在创建文件时预先分配一定的磁盘空间
要求使用CRT 之前查了查 fopen()后fseek(),然后再fwrite()一下就好,但这样在给大文件分配空间时太耗时。 有没有什么其他别的方法达到WIN32 SDK里那个SetEndOfFile()的效果?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
frman
2007-03-01
打赏
举报
回复
谢了
chehw
2007-02-27
打赏
举报
回复
找到一个使用low-level io routine的方法
#include <io.h>
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
int main()
{
int fh=_open( "1.dat", _O_WRONLY | _O_CREAT, _S_IREAD | _S_IWRITE );
if(-1!=fh)
{
lseek(fh, 1024*1024*1024-1, SEEK_SET);
_write(fh, "\0", 1);
_close(fh);
}
getchar();
return 0;
}
hgyxb
2007-02-26
打赏
举报
回复
setSize不知可不可以
frman
2007-02-26
打赏
举报
回复
那linux下有什么函数可以达到SetEndOfFile()的效果吗?
setSize()是哪里的?
chehw
2007-02-25
打赏
举报
回复
用_chsize也可更改文件大小,效率略高于fseek+fwrite,但远低于SetEndOfFile。
WIN32 API是平台相关的,属于底层实现,用CRT的方法恐怕达不到SetEndOfFile的效率。
frman
2007-02-25
打赏
举报
回复
fopen()后fseek()至指定大小(size-1),然后再fputs()一个字节.
这个不和我说的一样效果?还是要重写一遍,很慢的
============================================================
没法指定特定文件系统,FAT, EXT2都有可能
============================================================
驱动方面的不懂,有必要涉及吗?WIN32 SDK里那个SetEndOfFile()我看效果满好,不知道怎么实现的
luoshayu
2007-02-25
打赏
举报
回复
DeviceIoControl(...,FSCTL_SET_SPARSE,...
luoshayu
2007-02-25
打赏
举报
回复
如果是NTFS系统可以使用sparse file.
chehw
2007-02-25
打赏
举报
回复
fopen()后fseek()至指定大小(size-1),然后再fputs()一个字节.
关于TEMP表空间一些有意思的事情
之前在
使用
temp表空间的
时
候,一直没有注意这个问题,新创建的temp表空间,是否占用os的
磁盘空间
,今天看tom大师的书,书上提出了这个问题,测试了一下, 发现的确如此。 创建temp表空间之前,os的
磁盘空间
,
使用
了53% [oracle@redhat762100 ~]$ df -h Filesystem Size Used Avail Use% Mounted...
连续
分配
、链接
分配
和索引
分配
详解
连续
分配
磁盘直接访问的特点在文件实现
时
提供了灵活性。在几乎每种情况下,很多文件都是存储在同一个磁盘上的。主要的问题是,如何为这些文件
分配
空间,以便有效
使用
磁盘空间
和快速访问文件。
磁盘空间
分配
的主要常用方法有三个:连续
分配
、链接
分配
和索引
分配
。每个方法各有优缺点。虽然有些系统对这三种方法都支持。但是更为常见的是,一个系统只对同一文件系统类型的所有文件采用一种方法。 连续
分配
连续
分配
方法要求,每个文件在磁盘上占有一组连续的块。磁盘地址为磁盘定义了一个线性排序。有了这个排序,假设只有一个作业正在访问磁盘,在
mongoDB capped collection
预先
分配
磁盘空间
生产环境为了存储一个大数据,建立了一个定额的表,额度是size = 500G count = 5亿,我需要在12台机器上建立这个定额的表,之前测试都
使用
的小额度限制,创建很快,这次在线上创建这么大的额度,结果直接卡主了,其实不是卡住了,是server一直在
预先
分配
磁盘空间
,mongo建立文件是从16K 32K 64K 直到2G 然后不再增大,这次定额的500G,...
win10可用空间变成未
分配
_有关如何在win10系统中对未
分配
的
磁盘空间
进行分区的详细教程...
win10系统已经
使用
了很长
时
间,许多网民都报告了对win10系统未
分配
磁盘空间
进行分区的方法. 在
使用
win10系统的过程中,他们通常不知道如何对win10系统的未
分配
磁盘空间
进行分区. 对于设置,是否有什么好方法可以设置win10系统对未
分配
的
磁盘空间
进行分区?这里的编辑器教您只需要单击“开始”按钮,然后在“开始”菜单中右键单击“计算机”选项,然后在弹出菜单中选择“管理”;在弹出的“计算机管理...
linux命令:在 Linux 系统上用于预
分配
文件空间(创建指定大小的文件)的命令fallocate详解
fallocate 是 Linux 系统中的一个命令行工具,用于预
分配
或释放文件的空间。与传统的 dd 或 truncate 命令不同,fallocate 能够在文件系统中直接操作,通常比这些方法更高效,尤其是在处理大文件
时
。它主要用于创建具有指定大小的文件,而不需要实际写入数据,这在需要快速创建占位文件或预留空间的场景中非常有用。FILE:要创建或预
分配
的文件。性能影响:虽然 fallocate 通常比 dd 更高效,但在某些文件系统或存储设备上,频繁的预
分配
和释放操作可能会影响性能。
Linux/Unix社区
23,223
社区成员
74,536
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章