Linux磁盘相关 存储、修复、空间、容量等等

130 阅读1分钟

被删除且仍被进程引用的文件占用存储

linux 有个日志文件,被进程引用,这时这个日志文件被删掉了,但进程还在引用着这个日志文件,如果进程一直往这个日志文件里面写东西,能写进去吗

在Linux系统中,如果一个文件被删除但仍然被一个进程持有(即有文件描述符指向该文件),那么该文件仍然存在于文件系统中,只是不再有目录项指向它。这种状态被称为"deleted"。

 如果进程仍然持有对该文件的文件描述符,它仍然可以继续往这个已被删除的文件中写入数据,而且已写入的数据对于进程来说是可见的。这是因为文件系统实际上是按inode(索引节点)来管理文件的,删除文件只是将目录项删除,而不会影响文件本身的inode。只有在所有对文件的文件描述符都关闭时,文件系统才会释放inode并释放相应的磁盘空间。 

 这种情况下,你可以通过lsof (List Open Files)命令查看哪些进程仍然在使用已被删除的文件。例如:

 ```bash lsof | grep deleted ``` 

 这将列出所有已被删除的文件的进程信息。如果你看到你关心的进程在其中,说明该进程仍然在使用这个已被删除的文件。

xfs 文件系统,如何修复

linux 出现结构需要清理 (structure needs cleaning),如下图。通常是由文件系统损坏引起的,需要修复。

对于 XFS 文件系统的修复,通常可以使用 `xfs_repair` 工具。这个工具用于检查和修复 XFS 文件系统中的问题。在运行 `xfs_repair` 之前,请确保文件系统没有被挂载。

以下是使用 `xfs_repair` 的基本步骤:

1. **卸载文件系统:** 在运行 `xfs_repair` 之前,请确保文件系统没有被挂载。你可以使用 `umount` 命令卸载文件系统:

```bash

umount /dev/sdX

```

请将 `/dev/sdX` 替换为实际的设备名称。

2. **运行 `xfs_repair`:** 使用 `xfs_repair` 工具对 XFS 文件系统进行检查和修复。指定要修复的设备名称,例如 `/dev/sdX`:

```bash

xfs_repair /dev/sdX

```

如果文件系统有问题,`xfs_repair` 会尝试修复它。

3. **重新挂载文件系统:** 修复完成后,重新挂载文件系统:

```bash

mount /dev/sdX /mnt

```

请将 `/dev/sdX` 替换为实际的设备名称,`/mnt` 是你想要挂载的目录。

请注意,运行 `xfs_repair` 时,系统可能会提示是否需要执行某些修复操作。根据提示选择 "y" 或 "n"。

这里提供的步骤是基本的,具体的修复过程可能会因文件系统的问题而有所不同。如果 `xfs_repair` 无法修复文件系统,你可能需要考虑其他手动修复或者备份数据并重新格式化文件系统的方法。在进行任何修复操作之前,请确保有可靠的数据备份。

查看文件系统格式

df -T