我有一台包含 1 TB 空间的服务器。我把它装满了;然后我想做一个符号链接。我删除了一个不同的符号链接,但服务器仍然不满意 - 它说我没有任何可用空间。我不是通过删除最后一个符号链接来清理足够的空间吗?
文件系统需要多少空间才能识别有足够的空间来创建符号链接?
答案1
这取决于。大多数文件系统以几千字节的块来分配数据,因此人们可能会想象任何符号链接都适合单个块。但还有其他文件系统元数据的问题,这取决于文件系统。
特别是在 ext4(和类似的文件系统)上:
小文件需要一个索引节点、一个数据块以及包含该文件的目录中目录项的空间。短符号链接可能完全存储在索引节点内,因此它们可能根本不需要数据块。 (IIRC 限制约为 60 字节左右。)
删除符号链接会释放索引节点并释放目录项以及数据块(如果使用过)所使用的空间。在某些情况下,这可能不足以创建新的符号链接:
- 如果新的符号链接将在不同的目录中创建,则该新目录可能没有空间用于新目录条目,并且如果没有空闲数据块,则无法扩展该目录。
- 同样,如果在同一目录中创建新的符号链接但名称较长,则该目录可能会耗尽空间
- 如果旧的符号链接足够短,可以完全存储在 inode 中,但新链接足够长,需要一个数据块,并且文件系统上没有空闲数据块,则无法创建新的符号链接。
用完 inode 应该不是问题,因为删除的符号链接必然只使用一个 inode,而新的符号链接将只需要一个 inode。
答案2
新链接比旧链接更大。
ls -l
将显示符号链接有多少字节,路径越长,需要的字节就越多。
它大致是目标文件/目录的完整路径中的字节数。在 debian 10 上使用 ext4 时,指向“/var/www/html”的链接为 13 个字节。取决于文件系统。