我在解压过程中收到“设备上没有空间”错误,即使我有足够的空间和足够的索引节点

问题描述 投票:0回答:1
  1. 我要在磁盘上保存很多小文件,所以我用这个命令格式化它:

sudo mkfs.ext4 -m 0 -T 小-i 8192 /dev/sdb

  1. 我检查磁盘如下:

sudo fsck -f /dev/sdb

fsck from util-linux 2.36.1
e2fsck 1.46.2 (28-Feb-2021)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/sdb: 11/65536000 files (0.0% non-contiguous), 8680071/524288000 blocks
  1. 然后我安装了它:

sudo挂载/dev/sdb/mnt/disk

  1. 我开始解压包含约 1700 万个文件的存档:

tar -xvf archive.tar -C /mnt/disk

train_m/233557/10.jpg
tar: train_m/233557: Cannot mkdir: No space left on device
tar: train_m/233557/10.jpg: Cannot open: No such file or directory
train_m/233557/5.jpg
tar: train_m/233557: Cannot mkdir: No space left on device
tar: train_m/233557/5.jpg: Cannot open: No such file or directory
train_m/233557/0.jpg
tar: train_m/233557: Cannot mkdir: No space left on device
tar: train_m/233557/0.jpg: Cannot open: No such file or directory
train_m/492576/
train_m/492576/1.jpg
train_m/492576/2.jpg
train_m/492576/3.jpg
train_m/492576/0.jpg

据我了解,这意味着某些目录无法提取,而其他目录可以。

  1. 提取存档后,我收到以下消息:

tar:由于之前的错误而以失败状态退出

显然,有几千个目录(大约 600k 个目录)未被提取。 怎么会发生这种事?

提取后,我检查了空间:

df-i

Filesystem              Inodes   IUsed    IFree IUse%
/dev/sdb              65536000 8276432 57259568   13%

df-h

Filesystem             Size  Used Avail Use%
/dev/sdb               492G   97G  396G  20%

附注如果我使用默认参数格式化磁盘,存档会成功提取,但由于文件数量较多,我达到了 inode 限制,无法向磁盘添加更多数据。

linux filesystems tar ext4
1个回答
0
投票

-T small
选项设置三个选项:

blocksize = 1024
inode_size = 128
inode_ratio = 4096

第三个给你更多的索引节点。前两个限制文件的大小。 你只想要第三个。尝试使用

-T news
来代替 - 它只会影响 inode_ratio。

© www.soinside.com 2019 - 2024. All rights reserved.