我刚刚电脑崩溃了,我想是因为我超出了最大文件数。最终我想增加驱动器的 inode 数量,就像这个人做的那样
https://serverfault.com/questions/724864/how-to-increase-max-number-of-allocated-inodes-in-linux
但现在,我需要了解我是否正确读取了计算机的数据。
kylefoley@c30:/mnt/disks$ sudo lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 10G 0 disk
└─sda1 8:1 0 10G 0 part /
sdb 8:16 0 200G 0 disk
kylefoley@c30:/mnt/disks$ df -i /dev/sdb
Filesystem Inodes IUsed IFree IUse% Mounted on
udev 15469823 288 15469535 1% /dev
kylefoley@c30:/mnt/disks$ df -T -h /dev/sdb
Filesystem Type Size Used Avail Use% Mounted on
udev devtmpfs 60G 0 60G 0% /dev
kylefoley@c30:/mnt/disks$ df -i /mnt/disks/temp_dir1
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda1 655360 142612 512748 22% /
kylefoley@c30:/mnt/disks$ df -T -h /mnt/disks/temp_dir1
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda1 ext4 9.8G 2.5G 6.9G 27% /
该驱动器sdb
有 200G,我想找出它有多少个 inode。对于此命令
kylefoley@c30:/mnt/disks$ df -i /dev/sdb
Filesystem Inodes IUsed IFree IUse% Mounted on
udev 15469823 288 15469535 1% /dev
我认为这意味着我的驱动器上有 1500 万个 inode sdb
,但这并不能解释为什么我的计算机崩溃并显示错误消息not enough space
,因为我创建了大约 200,000 个文件。我使用的另一台计算机有另一个具有相同规格的驱动器。但是当我尝试sdb
使用
kylefoley@c30:/mnt/disks$ df -T -h /dev/sdb
Filesystem Type Size Used Avail Use% Mounted on
udev devtmpfs 60G 0 60G 0% /dev
/mnt/disks/temp_dir1
我说的是 60G 而不是 200G。为什么?然后我尝试使用以下命令来安装外部硬盘:
kylefoley@c30:/mnt/disks$ df -i /mnt/disks/temp_dir1
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda1 655360 142612 512748 22% /
上面写着 655,000 个 inode,这个数字似乎可能导致我的计算机崩溃。尽管使用了 142,000 个 inode,但驱动器是空的,因此,也许一个文件的创建使用了多个 inode,或者可能还有更多隐藏文件。无论如何,为什么只有 655,000 个 inode,/mnt/disks/temp_dir
而 上有 1500 万个inode /dev/sdb
?然后我尝试检查 的大小/mnt/disks/temp_dir1
是否为 200G,因此我写道:
kylefoley@c30:/mnt/disks$ df -T -h /mnt/disks/temp_dir1
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda1 ext4 9.8G 2.5G 6.9G 27% /
而且我似乎认为大小是 9.8G,而不是 200G。10G 也是我使用的硬盘的大小,这也许可以解释一些事情。也许我没有将硬盘安装到安装点,但由于以下命令,这是错误的:
kylefoley@c30:~$ gcloud compute instances attach-disk c30 --disk disk-3 --zone us-west2-a
Updated [https://www.googleapis.com/compute/v1/projects/atomic-drake-250022/zones/us-west2-a/instances/c30].
更新
我记得上次连接磁盘后我忘记安装磁盘了。这次我的数字更合理了:
kylefoley@c30:/mnt/disks/temp_dir1$ df -i /dev/sdb
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sdb 13107200 36981 13070219 1% /mnt/disks/temp_dir1
kylefoley@c30:/mnt/disks/temp_dir1$ df -T h /mnt/disks/temp_dir1
df: h: No such file or directory
Filesystem Type 1K-blocks Used Available Use% Mounted on
/dev/sdb ext4 205375464 229888 205129192 1% /mnt/disks/temp_dir1
kylefoley@c30:/mnt/disks/temp_dir1$ df -T -h /mnt/disks/temp_dir1
Filesystem Type Size Used Avail Use% Mounted on
/dev/sdb ext4 196G 225M 196G 1% /mnt/disks/temp_dir1
kylefoley@c30:/mnt/disks/temp_dir1$ df -i /mnt/disks/temp_dir1
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sdb 13107200 36981 13070219 1% /mnt/disks/temp_dir1
如果我错了请纠正我,但看起来驱动器中/mnt/disks/temp_dir1
有 1300 万个 inode。还有 196G。这不是我想要的那么多 inode。我想使用 1200 万个,但为了安全起见,我最好构建一个具有更多 inode 的新磁盘。
答案1
参数df
是文件对象,并df
显示有关保存该对象的文件系统的信息。执行此操作时df /dev/sdb
,df
将显示伪文件系统的信息/dev
。
您需要输入:
mount | grep '/dev/sdb'
/dev/sdb
例如,要找出文件系统的安装位置:
/dev/sdb on /mnt/somedir type ext4 (rw,relatime,data=ordered)
然后使用df /mnt/somedir
获取相关的文件系统信息(但根据输出lsblk
,没有任何内容被挂载。
但是,由于df
输出mnt/disks/temp_dir1
报告显示它处于打开状态sda1
,就像根一样,因此它很可能是绑定挂载(或多或少是目录的“硬链接”)(输出mount
将报告 /dev/sda1、根和任何绑定挂载上的几个文件系统)。