这可能听起来很无趣,特别是当我(正如你可能已经猜到的)尝试编写操作系统时.目前我一直试图建立一个文件系统.
我想要的是一个与Linux Ubuntu类似的文件系统,它是EXT4(至少是我的).我想尝试,也要用C写.
我有什么想法可以解决这个问题吗?和/或你可能找到的任何可能对我有帮助的教程(我试过没有运气的搜索):L
提前致谢!
杰米.
有没有人知道os.path.exists函数的复杂性是在python中使用ext4文件系统?
是否有可能恢复使用rsync -avz -delete删除的文件?如果是,那么有什么建议的工具呢?
#include <unistd.h>
#include <stdio.h>
void dump_log(int size){
char cmd[1024];
snprintf(cmd, sizeof(cmd)/sizeof(cmd[0]), "dd if=/dev/zero of=from.bin bs=1024 count=%d", size);
int ret = system(cmd);
if (ret<0){
perror("system");
}
}
int main(){
const char *filepath = "from.bin";
while(1){
dump_log(1024*100);
sleep(10);
unlink(filepath);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
strace -T ./a.out 显示这个:
unlink("from.bin") = 0 <0.019916>
Run Code Online (Sandbox Code Playgroud)
取消链接文件(100M)花费19ms,取消链接文件时会发生什么?为何这么慢?
系统信息:linux 3.13.0-57-generic,Ubuntu 14.04.2 LTS,ext4
我正在 linux(Ubuntu 14.04)上使用 NVMe 卡。我发现在使用默认扇区大小 (512) 的 xfs 文件系统格式化时,Intel NVMe 卡的性能有所下降。或任何其他小于 4096 的扇区大小。
在实验中,我使用带有默认选项的 xfs 文件系统格式化了卡。我尝试在具有 64k 页大小的 arm64 平台上运行具有 64k 块大小的 fio。这是使用的命令
fio --rw=randread --bs=64k --ioengine=libaio --iodepth=8 --direct=1 --group_reporting --name=Write_64k_1 --numjobs=1 --runtime=120 --filename=new --size=20G
我只能得到以下值
运行状态组 0(所有作业): READ: io=20480MB, aggrb=281670KB/s , minb=281670KB/s, maxb=281670KB/s, mint=744454msec, maxt=74454msec 磁盘统计信息(读/写):nvmen1: ios=326821/8,merge=0/0,ticks=582640/0,in_queue=582370,util=99.93%
我尝试格式化如下:
mkfs.xfs -f -s size=4096 /dev/nvme0n1
Run Code Online (Sandbox Code Playgroud)
那么这些值是:
运行状态组 0(所有作业): READ: io=20480MB, aggrb=781149KB/s , minb=781149KB/s, maxb=781149KB/s, mint=266 847msec, maxt=26847msec Disk stats (read/write) : ios=326748/7, 合并=0/0, 滴答=200270/0, in_queue=200350, util=99.51%
我发现使用时没有性能下降
我正在使用FormPanel内部的xtype在extJS 4中创建一个radioGroup.我正在尝试在检查无线电时启用/禁用文本字段.
{
xtype: 'radiogroup',
fieldLabel: 'Enable / Disable ',
columns: 2,
vertical: true,
items: [
{boxLabel: 'Enable', name: 'formtype', inputValue: '1'},
{boxLabel: 'Disable', name: 'formtype', inputValue:'2',checked:true},
]
}
Run Code Online (Sandbox Code Playgroud)
我很困惑在哪里添加检查/点击事件的监听器.非常感谢提前.
我正在尝试将主要的/ dev/sda1来自EC2实例挂载到新实例,但是我遇到了以下问题:
$ sudo mount -t ext4 /dev/xvdg /mnt/xvdg/
mount: wrong fs type, bad option, bad superblock on /dev/xvdg,
missing codepage or helper program, or other error
In some cases useful info is found in syslog - try
dmesg | tail or so.
Run Code Online (Sandbox Code Playgroud)
来自dmesg的信息:
$ dmesg | tail
[ 673.481965] xvdg: xvdg1
[ 673.589140] xvdg: xvdg1
[ 673.711554] xvdg: xvdg1
[ 673.802113] xvdg: xvdg1
[ 673.872627] xvdg: xvdg1
[ 673.978105] xvdg: xvdg1
[10382.432880] EXT4-fs (xvdg): VFS: Can't find ext4 filesystem …Run Code Online (Sandbox Code Playgroud) 我想知道,对于蓝牙,我们有由蓝牙特殊利益集团管理的IEEE 802.15.1标准。对于Wifi,我们拥有IEEE 802.11标准以及Wifi联盟。对于PCIe上的NVMe SSD,我们有nvmexpress来规范和发布其官方文档。
因此,通常会有一个监管机构来决定事情并标准化一些事情,以允许几种不同实现之间的互操作性。
但是对于ext2 / ext3 / ext4文件系统,除了Linux内核代码之外,我没有找到任何官方标准。
这些文件系统基本上是由内核社区决定的吗?他们是否承诺不更改它们,使其仍然与其他操作系统兼容?
还是在某处有一些官方规范?谁提供的?
谢谢
这是我在此的头一篇博文.
我想检查文件是否存在但不使用硬盘.例如,看看这段代码:
<?php
$filename = '/path/to/foo.txt';
if (file_exists($filename)) {
echo "The file $filename exists";
} else {
echo "The file $filename does not exist";
}
?>
Run Code Online (Sandbox Code Playgroud)
据我所知,ext4是日志文件系统.这是否意味着脚本可以通过查看日志来检查文件是否存在,即主内存而不触及硬盘?
谢谢你的时间.
UPD.
是否有任何文件系统将硬盘的日志保存在主内存中,这样文件存在的操作可以在不访问硬盘的情况下完成?
前一阵子我买了1TB USB外置硬盘.我在Ubuntu中将它格式化为ext4,并从几台机器上复制了一堆文件/文件夹,全部分别复制到/ home/machinename/whatever.
在某些时候,我在它上面运行了一个chmod -R shell命令来更改权限.那是几个月前,我不记得我键入了什么,但它创建了驱动器,所以我只能以root身份访问其/ home文件夹.这不是问题,因为我仍然可以访问所有内容,但今天我决定尝试修复它.
我以root身份访问了我的shell,转到了那个驱动器并键入:
chown -R rick:rick ./
chmod -R 666 ./
Run Code Online (Sandbox Code Playgroud)
它似乎工作.该主目录及其中的所有其他内容现在显示为每个目录的rw:
rick@rick64:/media/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee$ ls -l
drw-rw-rw- 7 rick rick 4096 2012-03-04 13:08 home
Run Code Online (Sandbox Code Playgroud)
所以,如果我尝试使用shell访问该目录,我会得到:
rick@rick64:/media/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee$ ls -l
drw-rw-rw- 7 rick rick 4096 2012-03-04 13:08 home
rick@rick64:/media/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee$ cd home
bash: cd: home: Permission denied
rick@rick64:/media/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee$ _
Run Code Online (Sandbox Code Playgroud)
当我使用nautilus访问它时,我可以看到/ home /文件夹中的多个机器名称,但它们都带有文件图标.我可以右键单击它们并选择"属性",但它不会让我看到权限.
很困惑.为什么我无法访问该文件夹?我是老板?我甚至是小组.我有r/w权限.我究竟做错了什么?
我的文件系统上有以下现有的目录结构(使用ext4的Ubuntu 12.04桌面):
/
home/
myuser/
.myapp/
logs/
myapp.log
data/
lib/
Run Code Online (Sandbox Code Playgroud)
...以及以下Java代码:
try {
// If no such file exists, create it and write zero (0) to it.
if(!myFile.exists()) {
System.out.println("myFile is: " + myFile.getAbsolutePath());
myFile.createNewFile();
myFileWriter.write("0"); // Configured to write to myFile
}
} catch(IOException ioExc) {
logger.error(ExceptionUtils.getStackTrace(ioExc));
throw new RuntimeException(ioExc);
}
Run Code Online (Sandbox Code Playgroud)
......抛出以下异常:
myFile is: /home/myuser/.myapp/data/replay/Loader-0-replay.log
java.lang.RuntimeException: java.io.IOException: No such file or directory
at net.myuser.myapp.tools.myapp.Loader.<init>(Loader.java:69)
at net.myuser.myapp.tools.myapp.MyAppTool.loadWords(MyAppTool.java:125)
at net.myuser.myapp.tools.myapp.MyAppTool.run(MyAppTool.java:65)
at net.myuser.myapp.tools.myapp.MyAppTool.main(MyAppTool.java:41)
Caused by: java.io.IOException: No such file or …Run Code Online (Sandbox Code Playgroud) ext4 ×11
linux ×6
ext3 ×2
amazon-ec2 ×1
c ×1
directory ×1
disk ×1
ext2 ×1
extjs ×1
file-io ×1
filesystems ×1
ioexception ×1
java ×1
pci-e ×1
performance ×1
python ×1
radio-button ×1
radio-group ×1
rsync ×1
ubuntu ×1
ubuntu-11.10 ×1
ubuntu-12.04 ×1
unlink ×1
xfs ×1