我想知道是否有一些规则(或公式)可以用来确定文件系统在 ext4 分区中将使用多少磁盘空间。例如,在 100 GB 的分区中,我实际可以使用多少?它是否取决于其他参数,如 inode 大小等?
我的系统是 CentOS 6 x86_64,根分区格式为 ext4。
df报告大约 3Gb 为已用空间:
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/md1 20158260 3433724 15700540 18% /
Run Code Online (Sandbox Code Playgroud)
但du -sm -x /声称实际使用的 Gb 少于一个 Gb:
[root@xxxx ~]# du -sm -x /
948 /
Run Code Online (Sandbox Code Playgroud)
我想知道这里发生了什么。重新启动后使用数量立即更改。文件系统声称它是干净的,日志中没有错误。我发现了这个,但它没有解释问题的根源。我应该重新格式化分区吗?有没有办法追踪这种额外的使用情况?
我还执行了以下操作以检查du在非空挂载点上的挂载没有隐藏任何数据:
[root@xxxx ~]# mount -o bind / /mnt/root
[root@xxxx ~]# du -sm /mnt/root/
949 /mnt/root/
[root@xxxx ~]#
Run Code Online (Sandbox Code Playgroud)
不,这不是我的情况。
问题: 我最近改造了我的一台服务器,它在使用前进行了测试,并且运行良好,但是,几天前,我注意到对根卷的写入量大约是通常的 4 倍。这不是性能问题 - 服务器运行良好。
我的改造相当广泛(完全重建),所以就原因而言,我没有太多事情要做。简而言之,我的变化包括:
基本设置:
free和iostat显示最小的交换使用)。mount --bind)。底层 EBS 卷安装在/mnt/data新设置比旧系统运行“更流畅”(更快、更少内存等),并且已经稳定了 20 天(10 月中旬)——据我所知,提升的写入一直存在.
与我的预期相反,我的读取量很低(我的读取量约占写入量的 1.5%,无论是在我的根卷上的块还是字节数)。在过去的几天里,我没有对根卷(例如新安装等)进行任何更改,但写入量仍然比预期高得多。
目标:确定对根卷的写入增加的原因(本质上,确定它是一个进程(以及哪个进程)、不同的(ext4)文件系统或其他问题(例如内存))。
系统信息:
我在笔记本电脑上运行了一个全新的 Lucid Lynx (Ubuntu 10.04)。我将文件系统定义为:
我在没有交流电源的情况下让机器过夜去做一些任务。第二天早上我发现它处于待机状态,任务完成,但无法访问文件系统。它给了我 I/O 错误
看来jfs和standby有问题。
无论如何,为了避免任何麻烦,我想将此挂载点从 jfs 格式移动到 ext4。
我可以在不丢失数据的情况下执行此操作,并且无需在转换完成之前将数据放置在临时位置吗?
很抱歉提到这一点,但我记得在 Windows 时代,我们会将 FAT16 更改为 FAT32 或将 FAT32 更改为 NTFS,而不必丢失数据。我希望这在 Linux 上可用。
更新 /home 文件系统是 xfs 而不是 jfs,而且由于某种原因,这个文件系统似乎有一个错误,我不得不重新安装操作系统两次,直到我最终使用整个 /
但是,作为结论,似乎没有办法进行转换
我有一台运行 Maverick 的笔记本电脑(很高兴直到昨天),还有一个 Patriot Torx SSD;整个分区的LUKS加密;一个 lvm 物理卷;然后在 ext4 逻辑卷中 home 和 root。
当我昨天尝试启动它时,它抱怨无法挂载根文件系统。运行fsck,基本上每个inode好像都出错了。主文件系统和根文件系统都显示出类似的问题。检查备份超级块无济于事。
e2fsck 1.41.12 (17-May-2010)
lithe_root was not cleanly unmounted, check forced.
Resize inode not valid. Recreate? no
Pass 1: Checking inodes, blocks, and sizes
Root inode is not a directory. Clear? no
Root inode has dtime set (probably due to old mke2fs). Fix? no
Inode 2 is in use, but has dtime set. Fix? no
Inode 2 has a extra size (4730) which is invalid
Fix? no …Run Code Online (Sandbox Code Playgroud) 这是我以前从未见过的奇怪事情——ls 报告其大小为 0 而不是 4096 的目录,并且我无法在其中创建任何文件。
# ls -ld lib home
drwxr-xr-x. 2 root root 0 Feb 7 03:10 home <-- it has zero size
dr-xr-xr-x. 11 root root 4096 Feb 4 09:28 lib
# touch home/foo
touch: cannot touch `home/foo': No such file or directory <-- and I can't create files in it
# rm home
rm: cannot remove `home': Is a directory <-- look, it really is a dir
Run Code Online (Sandbox Code Playgroud)
那么目录大小为 0 而不是 4096 意味着什么?
文件系统是 fedora core 14 …
在 AWS 上提供大型、可增长的共享存储并作为单个文件系统公开的可接受/合理/最佳方法是什么?
我们目前正在制作 1TB EBS 卷 ~每两周一次,并使用 no_subtree_check 和 nohide 进行 NFS 导出。在此设置中,不同的导出出现在客户端的单个安装下。这种安排不能很好地扩展。
我们考虑过的选项:
理想的解决方案是提供共享、单一 fs 视图、易于扩展、快照和复制。
感谢分享想法和经验。
今天我在生产 xen vm 服务器上做了一些愚蠢的事情。我将外部设备映射器安装为只读以制作文件系统的副本。此过程进行得很顺利,但随后 rootfs / 在来宾计算机中变为只读。
/dev/xvda on / type ext4 (ro,relatime,errors=remount-ro,user_xattr,barrier=1,data=ordered)
Run Code Online (Sandbox Code Playgroud)
幸运的是,它上的所有重要服务都使用/home和/var分区,因此机器不会停止运行,但现在我无法在不重新启动它的情况下将 /root 重新安装为 RW(这不是一个选项,因为它是生产)。
我试过:
fsck -f /dev/xvdamount -o rw,remount /mount -n -o remount,rw /它不允许将其重新安装为 RW。
[Mon Jul 7 14:59:06 2014] EXT4-fs error (device xvda): ext4_remount:4558: Abort forced by user
[Mon Jul 7 14:59:21 2014] EXT4-fs error (device xvda): ext4_remount:4558: Abort forced by user
[Mon Jul 7 14:59:50 2014] EXT4-fs error (device xvda): ext4_remount:4558: Abort forced by user
[Mon Jul …Run Code Online (Sandbox Code Playgroud) 对于上下文:我需要能够可靠地更新某些 sqlite DB 文件的时间戳,这些文件在 ext4 文件系统上间歇性更新。
touch写入数据库时使用命令(更新最后修改时间)是否会失败,甚至更糟,导致数据丢失?
我有一个 Ubuntu 14.04 服务器,它无法在 65,000 目录之外创建新目录。我已经运行 atune2fs -l并且可以看到该dir_nlink标志已设置。有谁知道还可以检查什么来允许这种情况发生?我有这个服务器配置的许多其他克隆,它们都超过了 65,000 大关并按预期工作。我已经比较了tune2fs -l输出,它们看起来是一样的。我仍然有几百万个空闲的 inode 和块。我已经卸载并重新安装了文件系统,但没有任何改变。
ext4 ×10
linux ×6
filesystems ×5
ubuntu ×2
amazon-ebs ×1
amazon-ec2 ×1
centos ×1
corruption ×1
directory ×1
fsck ×1
inode ×1
io ×1
jfs ×1
mount ×1
sqlite ×1
ssd ×1
tune2fs ×1
xfs ×1
zfs ×1