심볼릭 링크를 만들려면 얼마나 많은 공간이 필요합니까?

심볼릭 링크를 만들려면 얼마나 많은 공간이 필요합니까?

1TB의 공간을 포함하는 서버가 있습니다. 나는 그것을 가득 채웠습니다. 그런 다음 심볼릭 링크를 만들고 싶었습니다. 다른 심볼릭 링크를 제거했지만 서버는 여전히 만족스럽지 않았습니다. 사용 가능한 공간이 없다고 말했습니다. 마지막 심볼릭 링크를 제거해서 공간을 충분히 확보한 것 아닌가요...?

심볼릭 링크를 생성하기에 충분한 공간이 있음을 인식하려면 파일 시스템에 얼마나 많은 공간이 필요합니까?

답변1

때에 따라 다르지. 대부분의 파일 시스템은 몇 킬로바이트의 블록으로 데이터를 할당하므로 모든 심볼릭 링크가 단일 블록에 들어갈 수 있다고 상상할 수 있습니다. 그러나 파일 시스템에 따라 달라지는 다른 파일 시스템 메타데이터에 대한 문제가 있습니다.


ext4(및 유사한 파일 시스템)에서는 구체적으로 다음과 같습니다.

작은 파일에는 파일이 포함된 디렉터리의 디렉터리 항목을 위한 inode, 데이터 블록 및 공간이 필요합니다. 짧은 심볼릭 링크는 inode 내에 완전히 저장될 수 있으므로 데이터 블록이 전혀 필요하지 않을 수도 있습니다. (IIRC 제한은 약 60바이트 정도입니다.)

심볼릭 링크를 제거하면 inode가 해제되고 디렉토리 항목과 데이터 블록(사용된 경우)에 사용된 공간이 해제됩니다. 새 심볼릭 링크에 충분하지 않은 경우가 몇 가지 있습니다.

  • 새 심볼릭 링크가 다른 디렉토리에 생성되면 해당 새 디렉토리에는 새 디렉토리 항목을 위한 공간이 없을 수 있으며, 사용 가능한 데이터 블록이 없으면 디렉토리를 확장할 수 없습니다.
  • 마찬가지로, 새 심볼릭 링크가 동일한 디렉토리에 생성되지만 이름이 더 긴 경우 디렉토리 공간이 부족할 수 있습니다.
  • 이전 심볼릭 링크가 inode에 완전히 저장될 만큼 짧지만 새 링크가 데이터 블록을 요구할 만큼 긴 경우, 파일 시스템에 사용 가능한 데이터 블록이 없으면 새 심볼릭 링크를 생성할 수 없습니다.

삭제된 심볼릭 링크는 반드시 정확히 하나의 아이노드를 사용해야 하고, 새 심볼릭 링크에는 정확히 하나의 아이노드가 필요하므로 아이노드 부족은 문제가 되지 않습니다.

답변2

새 링크는 이전 링크보다 컸습니다.

ls -l심볼릭 링크의 바이트 수를 표시하고 경로가 길수록 더 많은 바이트가 필요합니다.

이는 대략 대상 파일/디렉토리에 대한 전체 경로의 바이트 수입니다. "/var/www/html"에 대한 링크는 debian 10에서 ext4를 사용하면 13바이트입니다. 파일 시스템에 따라 다릅니다.

아이노드가 부족할 수도 있습니다.

관련 정보