问题标签 [ext4]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux - 如何在不格式化的情况下缩小 ext4 分区?
最近我安装了 Ubuntu 13.04 并为其分配了 20 GB。系统的安装空间小于 10 GB。现在,我可以在不格式化的情况下将其缩小到 10 GB 吗?也就是说,我不想在分区中有大的空白空间。
java - 为什么 Java 不能在我的 Ubuntu 桌面上创建这个文件?
我的文件系统上有以下现有目录结构(使用 ext4 的 Ubuntu 12.04 桌面):
...以及以下 Java 代码:
...这是抛出以下异常:
这里发生了什么?它说“没有这样的文件或目录”,但这不是createNewFile()
应该为我做的吗?提前致谢!
linux - 通过操作 ext4 创建目录循环
出于学术目的,我正在弄乱一些文件系统。我的目标之一是在每个文件系统中创建一个目录循环。目前我被 ext4 困住了,由于某种原因它不能像其他人一样工作。
我创建了两个文件夹,“顶部”和“底部”,并尝试操纵 ext4 的磁盘结构以创建某种从底部到顶部的硬链接,从而导致无限循环。
问题是,当我使用 浏览文件系统时ls
,它要么不显示两个文件夹(尽管我只操作了底部的文件夹),要么显示顶部,但在顶部,目录列表如下所示:
到目前为止,我采取的步骤是:
- 找到top inode的inode table entry(entry 12),看它指向block 3510
- 下一个 inode 表条目用于底部(条目 13),看到它指向块 3511
- 转到块 3510,让 . 和 .. 不变,但将底部的 inode 编号更改为 12
- 尝试使用
ls
-> 错误访问目录 - 转到块 3511,更改 . 到 inode 12,.. 到 inode 2(用于根目录)
- 尝试使用
ls
-> 错误访问目录 - 更改 inode 表中的 inode 条目 13 并使其指向块 3510
- 和往常一样的错误
我意识到 inode 条目中的 inode 和范围树具有哈希和,但我的理解是步骤 1 到 3 不应使这些哈希值中的任何一个无效。我对内部工作的理解ls
可能很低,无法找出我在这里做错了什么。
有人知道我做错了什么还是有更好的方法来实现我想要做的事情?非常感谢帮助,因为我的学士论文需要这个循环。
linux-kernel - 使用 mkfs 创建文件系统时的文件系统块大小
我正在尝试使用BUSE(带有 NBD)在用户空间中创建块设备。创建文件系统时,我并不清楚块访问模式。如示例所示,当我挂载 nbd 设备并创建块大小为 4096 的 ext4 文件系统时,我看到读取和写入是 1024 的倍数,而不是 4096。
但是,一旦创建了文件系统,当我挂载设备并尝试读/写文件时,请求将以 4096 的倍数发送。
所以看起来,在使用 mkfs.ext4 创建文件系统时,块设备以 1024 作为块大小访问,只有在文件系统创建后,才会使用用户指定的块大小。我做出这个推断是否正确?如果是这样,有人可以解释后端发生了什么以及为什么最初选择 1024 吗?
谢谢并恭祝安康,
沙拉特
android - Android 二进制可执行文件
我正在尝试将可执行文件推送到手机,文件由NDK
. 但是在将文件复制到设备后,他们失去了许可(变得无法执行)。
是否有任何解决方案来修复内核源或 Android 中的其他源来解决此问题(丢失权限)?我很确定这可能是 ext4
个问题...
注意:我不想chmod
每次都使用。
linux - Linux 中 NTFS 分区上的 Subversion (svn) 存储库?
在 Linux 中使用 svn 时,我可以在 NTFS 分区上创建和使用 svn 存储库吗?也就是说,NTFS 分区上的存储库以及签出和提交到 EXT4 分区。
我意识到 Linux 中的 NTFS 支持是有限的,例如不支持权限和符号链接。这或任何其他限制会导致任何问题吗?
我问的原因是因为我正在考虑 1)将我的存储库移动到我的 Dropbox 文件夹(位于 NTFS 分区上)或 2)将我的存储库移动到记忆棒(可能是 NTFS 分区)。
我的用例非常简单。我是唯一使用存储库的人。目前我的存储库位于 EXT4 上,我要么从存储库所在的同一台机器访问它,要么从第二台机器通过 svn+ssh:// 访问它。但是,如果我选择上述选项之一,访问策略显然会改变。
filesystems - 扩展属性存储在哪里?
这是一个简单的问题,但我已经做了一些研究,但找不到任何答案......所以有谁知道当我们通过 xattr 定义扩展属性时,这些属性是否存储在文件内容中 - 作为文件内容的一部分(最终,到底是什么?),或者如果 inode 有一个特殊的区域来存储这些?
顺便说一句,我在 ext4 中读到“每个扩展属性都限于一个文件系统块(例如 4 KiB)”。如果我想为文件系统中的每个文件存储 7 个扩展属性,我不知道这是否足够。这是现实的吗?
我的最后一个问题是,如果文件移动到具有不同文件系统的其他机器上,这些扩展属性是否可移植,这些属性会发生什么情况?
linux - 哪种方式更好地将上传的文件分发到子目录中?
假设我们有一层以 2 个十六进制数字命名的子目录,在其中,另一层以 3 个十六进制数字命名(反之亦然),并且文件使用散列函数相当均匀地分布。
所以它应该看起来像这样
或者像这样
从数学上讲,256x4096 和 4096x256 将为我提供相同的最终文件夹数,用于分发我的文件。在文件系统的性能方面,有区别吗?
谢谢!
编辑:有问题的文件系统是 ext4
c++ - Linux AIO:扩展性差
我正在编写一个使用 Linux 异步 I/O 系统调用的库,并且想知道为什么该io_submit
函数在 ext4 文件系统上表现出较差的扩展性。如果可能,我该怎么做才能io_submit
不阻塞大 IO 请求大小?我已经做了以下事情(如此处所述):
- 使用
O_DIRECT
. - 将 IO 缓冲区对齐到 512 字节边界。
- 将缓冲区大小设置为页面大小的倍数。
为了观察内核花费了多长时间,我运行了一个测试,其中我使用andio_submit
创建了一个 1 Gb 的测试文件,并反复删除系统缓存 ( ) 并读取越来越大的文件部分。在每次迭代中,我打印了等待读取请求完成所花费的时间和所花费的时间。我在运行 Arch Linux 的 x86-64 系统上运行了以下实验,内核版本为 3.11。该机器具有 SSD 和 Core i7 CPU。第一张图绘制了阅读的页数与等待完成所花费的时间。第二个图表显示等待读取请求完成所花费的时间。时间以秒为单位。dd
/dev/urandom
sync; echo 1 > /proc/sys/vm/drop_caches
io_submit
io_submit
为了比较,我创建了一个类似的测试,它通过pread
. 结果如下:
似乎异步 IO 按预期工作,请求大小约为 20,000 个页面。之后,io_submit
块。这些观察导致以下问题:
- 为什么不是
io_submit
常量的执行时间? - 是什么导致了这种不良的缩放行为?
- 我是否需要将 ext4 文件系统上的所有读取请求拆分为多个请求,每个请求的大小小于 20,000 页?
- 20000这个“神奇”值从何而来?如果我在另一个 Linux 系统上运行我的程序,我如何才能确定要使用的最大 IO 请求大小而不会遇到不良的扩展行为?
用于测试异步 IO 的代码如下。如果您认为它们相关,我可以添加其他来源列表,但我尝试仅发布我认为可能相关的详细信息。
javascript - Ext4.2.1 如何从另一个浏览器选项卡打开一个带有小部件的新浏览器选项卡
如何在新的浏览器选项卡中打开小部件,例如window.open()
从Ext4.2.1
应用程序。我需要能够在新的浏览器选项卡中打开小部件,类似于“最大化”工具所做的,但要在新选项卡窗口中打开整个内容。到目前为止,我最好的猜测是打开一个准备好的 .aspx 页面,如窗口。 open(url) 并以某种方式将小部件传递给窗口。但棘手的部分是传递小部件,可以传递许多小部件,所以我不能只是在页面上硬编码小部件。
任何想法都会有所帮助。