我读报纸,它使用的术语冷缓存和温暖的高速缓存.我搜索了这个术语,但我没有找到有用的东西(这里只有一个帖子).
这些术语是什么意思?
有一个文件,我想确保不会超过2 GB(因为它必须在使用ext 2的系统上运行).检查文件大小的好方法是什么,记住我将在两次检查之间写入此文件?特别是,我是否需要担心尚未写入磁盘的缓冲,未刷新的更改?
我在EXT2文件系统中打开了超级块和组描述符,但我不知道如何读取例如根目录或其中的文件...
这是我得到的一些东西
fd=open("/dev/sdb2", O_RDONLY);
lseek(fd, SuperSize, SEEK_SET);
read(fd, &super_block, SuperSize);
lseek(fd, 4096, SEEK_SET);
read(fd, &groupDesc, DescriptSize);
Run Code Online (Sandbox Code Playgroud)
但是下一部分似乎不起作用......
lseek(fd, super_block.s_log_block_size*groupDesc.bg_inode_table, SEEK_SET);
lseek(fd, InodeSize*(EXT2_ROOT_INO-1), SEEK_CUR);
read(fd, &root, InodeSize);
Run Code Online (Sandbox Code Playgroud) 我希望找到一个C/C++库,它可以从Windows中的应用程序中读取ext格式化卷上的大量文件.我不需要以传统方式安装此卷,我只需要对文件进行API访问.只读是好的.我的一个应用程序是唯一需要访问卷的应用程序.
简而言之,我宁愿使用一个库来代替Windows的可安装文件系统,也不需要安装驱动程序.我能够检测到磁盘何时到达,卷位置等.
对我来说最重要的是能够可靠地读取卷上的文件,而无需安装文件系统.
我不需要写支持
对于大学分配,我们必须修改ext2文件系统,以便在文件小于60字节时将文件存储在inode的块指针中,并在文件大于此时移动到常规块存储.
我从2.6 linux内核源代码(按照指示)复制了ext2代码并从那里开始.
当文件增长超过60个字节时,我需要将当前在inode的块指针数组中的任何数据复制到实际块中.所以,我需要将内核内存写入ext2块.一个简单的调用do_sync_write
将无法在这里工作,因为它需要用户空间内存.
我已经看过了实现,do_sync_write
并且我不确定如何复制它的功能,而是使用内核内存.
这是我当前对此特定部分的实现(不起作用):
ssize_t extmod_write(struct file *filp, const char *buf,
size_t len, loff_t *ppos)
{
...
printk(KERN_INFO "Switching to regular file");
temp = kmalloc(inode->i_size, GFP_KERNEL);
memcpy(temp, EXT2_I(inode)->i_data, inode->i_size);
/* Need to clear the block pointers before they are allocated by kernel */
memset(EXT2_I(inode)->i_data, 0, sizeof(EXT2_I(inode)->i_data));
if (do_sync_write(filp, temp, inode->i_size, &dummy) < 0) {
printk(KERN_INFO "DAMN! Writing current buffer failed");
return -EINVAL;
}
kfree(temp);
return do_sync_write(filp, buf, len, ppos);
Run Code Online (Sandbox Code Playgroud)
编辑:
我查看了符号链接.基本上,ext2具有"快速符号链接"的概念; 即链接名称长度小于60个字节.如果它是一个快速符号链接,则数据存储在块指针中.这很容易做到,我已经为常规文件实现了这一点.如果链接不是快速符号链接,则数据的处理方式与常规文件相同.我想我已经回到了原点.
我试图理解inode位图和inode表(来自ext2文件系统文档)之间的区别,但我没有得到它.可以解释一下吗?
symfony缓存系统是否在同一目录限制中处理ext2 32000文件?
我有80000个用户,我想缓存他们的配置文件,但symfony缓存系统处理ext2限制?
我也会为其他将面临同样问题的人发帖.
我无法删除作为备份备份副本的文件...我不记得它传递的所有文件系统字符集.
无论如何,今天这里是文件:
nas# ls -al
ls: cannot access Sécurité: No such file or directory
total 32
drwx------ 4 sambacam sambacam 20480 Jun 5 01:38 .
drwxr-xr-x 3 sambacam sambacam 12288 Jun 5 01:38 ..
d????????? ? ? ? ? ? S??curit??
nas# cd S*
cd: 13: can't cd to Sécurité
nas# rm "Sécurité"
rm: cannot remove `S\303\251curit\303\251': No such file or directory
nas# rm S*
rm: cannot remove `S\303\251curit\303\251': No such file or directory
nas#
Run Code Online (Sandbox Code Playgroud)
我甚至尝试用Python编写代码而没有成功:
nas# python
Python 2.5.2 …
Run Code Online (Sandbox Code Playgroud) 我认为这是一个简单的问题,但我找不到答案.我主要是阅读这些规格:
http://www.nongnu.org/ext2-doc/ext2.html
似乎没有提到目录条目的名称是否应该以空值终止.我认为这是未定义的.有一个name_len字段,因此您可以轻松打印该名称.
ext2目录名是否保证以null结尾?
我问,因为在我的业余爱好操作系统上测试我的ext2驱动程序时,我注意到当我打印一些目录名时,最后会出现一些垃圾字符.如果我只是打印name_len字符,一切都很好,虽然它是好的,如果它是空终止的.
谢谢!
我想知道,对于蓝牙,我们有由蓝牙特殊利益集团管理的IEEE 802.15.1标准。对于Wifi,我们拥有IEEE 802.11标准以及Wifi联盟。对于PCIe上的NVMe SSD,我们有nvmexpress来规范和发布其官方文档。
因此,通常会有一个监管机构来决定事情并标准化一些事情,以允许几种不同实现之间的互操作性。
但是对于ext2 / ext3 / ext4文件系统,除了Linux内核代码之外,我没有找到任何官方标准。
这些文件系统基本上是由内核社区决定的吗?他们是否承诺不更改它们,使其仍然与其他操作系统兼容?
还是在某处有一些官方规范?谁提供的?
谢谢