首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用space和mkfs.ext4可以超过可用的磁盘空间。

使用space和mkfs.ext4可以超过可用的磁盘空间。
EN

Unix & Linux用户
提问于 2018-07-05 09:49:24
回答 1查看 1.2K关注 0票数 2

背景:我们有一个计算机集群,在节点分配时,作业获得自己请求大小的tmp目录。不过,我注意到可以将两个作业发送到同一台计算机,所请求的磁盘空间比可用的磁盘空间还要大。我追踪到了fallocatemkfs.ext4的bug。

在具有1.1T磁盘空间的测试节点/计算机上,我创建虚拟磁盘来将tmp目录挂载到。使用fallocatemkfs.ext4

代码语言:javascript
复制
# fallocate -l 900G /tmp/disk-test1
# /sbin/mkfs.ext4 -F /tmp/disk-test1
# fallocate -l 900G /tmp/disk-test2
# /sbin/mkfs.ext4 -F /tmp/disk-test2

创建两个大小都为900 g的文件

代码语言:javascript
复制
# ll --block-size=G /tmp/
...
-rw-r--r--. 1 root  root 900G Jul  4 14:03 disk-test1
-rw-r--r--. 1 root  root 900G Jul  4 14:03 disk-test2
...

看看可用的磁盘空间

代码语言:javascript
复制
# df -h
Filesystem                 Size  Used Avail Use% Mounted on
/dev/mapper/vg.01-lv_root  1.1T  8.6G  1.1T   1% /
...

/tmp dir:

代码语言:javascript
复制
# df -h /tmp
Filesystem                 Size  Used Avail Use% Mounted on
/dev/mapper/vg.01-lv_root  1.1T  8.6G  1.1T   1% /

我不希望这种事发生。如果没有足够的空间,就不能创建虚拟磁盘,并且一旦挂载,对它们的写入就应该受到其大小的限制。

这里发生什么事情?

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2018-07-05 14:38:32

是的,我可以复制:

代码语言:javascript
复制
# df -h .
Filesystem           Size  Used Avail Use% Mounted on
/dev/root             30G   14G   14G  51% /
# fallocate -l 8G test1.disk
# df -h .
Filesystem           Size  Used Avail Use% Mounted on
/dev/root             30G   22G  5.8G  80% /
# mkfs -text4 test1.disk
mke2fs 1.43.4 (31-Jan-2017)
Discarding device blocks: done                            
Creating filesystem with 2097152 4k blocks and 524288 inodes
...
# df -h .
Filesystem           Size  Used Avail Use% Mounted on
/dev/root             30G   14G   14G  51% /

当文件为fallocated时,磁盘使用率会上升,但在mkfs之后则会下降。注意mke2fs输出中的“丢弃设备块:已完成”。(弗罗斯特舒茨在评论中提到了这一点。.)

手册页说-E discard

丢弃试图在mkfs时间丢弃块(丢弃块最初对固态设备和稀疏/薄配置存储非常有用)。..。这被设置为默认设置。

nodiscard可以做相反的事情,所以让我们尝试一下:

代码语言:javascript
复制
# df -h .; fallocate -l 8G test2.disk; mkfs -text4 -Enodiscard test2.disk; df -h .
Filesystem           Size  Used Avail Use% Mounted on
/dev/root             30G   14G   14G  51% /
mke2fs 1.43.4 (31-Jan-2017)
Creating filesystem with 2097152 4k blocks and 524288 inodes
...
Filesystem           Size  Used Avail Use% Mounted on
/dev/root             30G   22G  5.9G  79% /

现在,另一个fallocate -l 8G失败了。

票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/453571

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档