当前位置: 技术问答>linux和unix
CentOS 修改文件大小限制
来源: 互联网 发布时间:2017-01-19
本文导语: 最近在测试文件传输,发现在32位系统下,文件大小不能超过2G 问下有什么办法可以去掉这个限制么? 网上搜的 在/usr/include/feature.h 中 #define _FILE_OFFSET_BITS 64 但试了还是不行 另外问下,为什么可以用 dd来创建...
最近在测试文件传输,发现在32位系统下,文件大小不能超过2G
问下有什么办法可以去掉这个限制么?
网上搜的 在/usr/include/feature.h 中
#define _FILE_OFFSET_BITS 64
但试了还是不行
另外问下,为什么可以用 dd来创建超过2G的文件,正常的文件传输却不能超过那么多?
ps:跟代码没关系,64位下任意大小可传
问下有什么办法可以去掉这个限制么?
网上搜的 在/usr/include/feature.h 中
#define _FILE_OFFSET_BITS 64
但试了还是不行
另外问下,为什么可以用 dd来创建超过2G的文件,正常的文件传输却不能超过那么多?
ps:跟代码没关系,64位下任意大小可传
|
用什么方式传?文件传输的方式有很多种吧。
|
FAT32的文件系统的文件最大是4G,NTFS的的没有这个限制。
ext3文件系统要看你的块大小,还要看你的操作系统
其实就是inode的指针问题,我举个例子,假如是32位,block size为1024的操作系统,他的最大的文件大小是:
1024×12+1024×256+1024×256×256+1024×256×256×256=16843020 KB,约16GB
若bs大小为2048,约为268GB,若bs为4096,约为4TB
在32bit系统中,每个指针占用4b,1024b/4b=256
一个inode可以存放15个block指针,每个block指针指向一个block。
直接指针:前12个是直接指针,指向的数据块是直接的文件数据;那么前12个指针就可以保存1024×12=12k的数据,当文件超过12kb时,就要用到后面的间接指针了。。。
一级间接指针:第13个指针,其指向data block中存放的不是直接的文件数据,内含256个指针,每个block指针对应一个块,就可以保存1024×256=256kb的数据
二级间接指针:第14个指针,内含的指针指向的data block里面存放了256个指针,每个指针里面又可以存放256个指针,就是说,最后一层指针存放的才是真正的文件数据,那么其可以存放的文件大小就是1024×256×256
三级间接指针:第15个指针。。。。
ext3文件系统要看你的块大小,还要看你的操作系统
其实就是inode的指针问题,我举个例子,假如是32位,block size为1024的操作系统,他的最大的文件大小是:
1024×12+1024×256+1024×256×256+1024×256×256×256=16843020 KB,约16GB
若bs大小为2048,约为268GB,若bs为4096,约为4TB
在32bit系统中,每个指针占用4b,1024b/4b=256
一个inode可以存放15个block指针,每个block指针指向一个block。
直接指针:前12个是直接指针,指向的数据块是直接的文件数据;那么前12个指针就可以保存1024×12=12k的数据,当文件超过12kb时,就要用到后面的间接指针了。。。
一级间接指针:第13个指针,其指向data block中存放的不是直接的文件数据,内含256个指针,每个block指针对应一个块,就可以保存1024×256=256kb的数据
二级间接指针:第14个指针,内含的指针指向的data block里面存放了256个指针,每个指针里面又可以存放256个指针,就是说,最后一层指针存放的才是真正的文件数据,那么其可以存放的文件大小就是1024×256×256
三级间接指针:第15个指针。。。。
|
这是在问操作系统文件大小限制,还是在问文件传输?我还在纳闷第一次碰到这样的问题呢
|
ulimit -a 里边可以限制block数目.