我想知道在我的服务器上使用 ext4 是否安全。但我听说过太多关于它的 FUD,我很担心。
我们的系统可能会丢失一些数据,这没什么大不了的。即使是一整天的数据也不会惹恼太多人。我们的系统绝对可以从延迟写入中受益。
也就是说,从备份中恢复完整的文件系统需要几天时间并且是不可接受的。
关于这个主题的任何经验或知情意见?
Tune2fs 允许将 inode 大小从默认值(ext3 上的 128 字节,ext4 上的 256 字节)更改为几乎任何大小,但它应该是 2 的幂。更改默认 inode 大小的原因是什么?
这里写到可以这样做,以便能够在 inode 中存储 ACL 属性。inode 中还可以存储什么?
是否有任何理由增加现代高容量驱动器(2TB 及更多)上的 inode 大小?
这本书“的HBase权威指南”指出,
不建议在单个服务器上安装不同的文件系统。这可能会对性能产生不利影响,因为内核可能必须拆分缓冲区缓存以支持不同的文件系统。据报道,对于某些操作系统,这可能会对性能产生破坏性影响。
这真的适用于Linux吗?我从未见过超过 300 MB 的缓冲区缓存,而且大多数现代服务器都有千兆字节的 RAM,因此在不同文件系统之间拆分缓冲区缓存应该不是问题。我还缺少其他东西吗?
我想删除一个 nginx 缓存目录,我通过以下方式快速清除了该目录:
mv cache cache.bak
mkdir cache
service nginx restart
Run Code Online (Sandbox Code Playgroud)
现在我有一个cache.bak包含 200 万个文件的文件夹。我想在不打扰服务器的情况下删除它。
一个简单的rm -rf cache.bak垃圾服务器,即使是最简单的 HTTP 响应在 rm 运行时也需要 16 秒,所以我不能这样做。
我试过了ionice -c3 rm -rf cache.bak,但没有帮助。服务器有 HDD,而不是 SSD,可能在 SSD 上,这些可能不是问题。
我相信最好的解决方案是某种限制,就像 nginx 的内置缓存管理器所做的那样。
你会如何解决这个问题?有没有什么工具可以做到这一点?
Ubuntu 16.04 上的 ext4
我正在使用 Fedora-16 和 ext4。突然使用 stat 命令我可以看到一个叫做“出生”的东西。
# stat history_file1.txt
File: `history_file1.txt'
Size: 8944 Blocks: 24 IO Block: 4096 regular file
Device: 802h/2050d Inode: 4192 Links: 1
Access: (0600/-rw-------) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2012-01-18 18:11:10.799900150 +0530
Modify: 2012-01-18 18:11:10.867908793 +0530
Change: 2012-01-18 18:11:10.867908793 +0530
Birth: -
Run Code Online (Sandbox Code Playgroud)
搜索手册页显示出生实例
%w 文件出生时间,人类可读;- 如果未知
%W 文件出生时间,从Epoch开始的秒数;0 如果未知
这是新增的字段吗?这个字段相对于 inode 存储在哪里?
在较旧的操作系统(CentOS 5.5)上使用现代内核(当前为 2.6.37),以便我们可以在我们的 SSD(Crucial C300s)上使用 TRIM(丢弃)。
最新的 hdparm (9.37) 一致认为 C300 支持 TRIM:
./hdparm -I /dev/sdc | grep TRIM
* Data Set Management TRIM supported (limit unknown)
* Deterministic read data after TRIM
Run Code Online (Sandbox Code Playgroud)
但是当我尝试使用丢弃选项挂载 /dev/sdc 时,内核似乎不同意:
EXT4-fs warning (device sdc): ext4_issue_discard:2619: discard not supported, disabling
Run Code Online (Sandbox Code Playgroud)
当我输入这个时,我们正在尝试其他 Linux 版本,但无论如何知道发生了什么会很好。
这是 CentOS 5.5 的其他一些古老组件误导内核的表现吗?或者 hdparm 是否使用与内核不同的机制来确定是否支持 TRIM?
我在 Linux CentOS 服务器上有一个 EXT3 格式的驱动器。这是一个 Web 应用程序数据驱动器,包含每个用户帐户(有 25,000 个用户)的目录。每个文件夹都包含该用户上传的文件。总的来说,这个驱动器上大约有 250GB 的数据。
使用所有这些目录构建驱动器是否会影响驱动器读/写性能?它会影响我不知道的其他一些性能方面吗?
以这种方式构建事物是否存在本质上的错误或不好的地方?也许只是文件系统的错误选择?
我最近尝试合并两个数据驱动器并意识到 EXT3 仅限于 32,000 个子目录。这让我想知道为什么。考虑到每个文件都有一个与数据库中的 id 相对应的唯一 id,我以这种方式构建它似乎很愚蠢。唉...
我在软件 raid5 上的 luks 上有一个 ext4 文件系统。当我开始耗尽空间时,文件系统“很好”运行了几年。我在 6x2T 驱动器上有 9T 卷。我通过执行 mdadm 失败、删除、添加、重建、重复过程开始升级到 3T 驱动器,直到我拥有更大的阵列。然后我增大了 luks 容器,然后当我卸载并尝试调整大小 2fs 时,我收到消息文件系统很脏并且需要 e2fsck。
没想到我只是做了 e2fsck -y /dev/mapper/candybox 并且它开始喷出各种被删除的 inode 类型消息(记不清了)我杀死了 e2fsck 并尝试重新安装文件系统以备份我关心的数据。此时尝试安装时,我得到:
# mount /dev/mapper/candybox /candybox
mount: wrong fs type, bad option, bad superblock on /dev/mapper/candybox,
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)
回顾我的旧日志,我注意到每次机器启动时文件系统都会出现此错误:
kernel: [79137.275531] EXT4-fs (dm-2): warning: mounting fs with errors, running e2fsck is …Run Code Online (Sandbox Code Playgroud) 我有一组运行 Carbon 和 Graphite 的机器,我需要扩展以获取更多存储空间,但我不确定是否需要向上扩展或向外扩展。
该集群目前包括:
问题是当磁盘使用率接近 80% 时,性能似乎一落千丈。集群写入 IOPS 从近乎恒定的 13k 下降到更混乱的平均 7k 左右,IOwait 时间平均为 54%。
我已经查看了我们的配置存储库,自 4 月初以来没有任何更改,因此这不是配置更改的结果。
问:增加磁盘大小会控制IO性能,还是需要添加更多存储节点?
注意:这里没有 SSD,只有很多主轴。
相关图表:
统计和资料:
e2freefrag:
[root@graphite-storage-01 ~]# e2freefrag /dev/vda3
Device: /dev/vda3
Blocksize: 4096 bytes
Total blocks: 9961176
Free blocks: 4781849 (48.0%)
Min. free extent: 4 KB
Max. free extent: 81308 KB
Avg. free extent: 284 KB
Num. free extent: 19071
HISTOGRAM OF FREE EXTENT SIZES:
Extent Size Range : Free …Run Code Online (Sandbox Code Playgroud)