1TB의 공간을 가진 서버가 있습니다. 나는 그것을 채운 다음 심볼릭 링크를 만들고 싶었습니다. 다른 심볼릭 링크를 삭제했지만 서버는 여전히 만족스럽지 않습니다. 여유 공간이 없다고 나옵니다. 마지막 심볼릭 링크를 삭제하여 충분한 공간을 확보하지 않았나요?
심볼릭 링크를 생성하기에 충분한 공간이 있음을 파일 시스템이 인식하려면 얼마나 많은 공간이 필요합니까?
답변1
때에 따라 다르지. 대부분의 파일 시스템은 데이터를 몇 킬로바이트의 블록으로 할당하므로 모든 기호 링크가 단일 블록에 들어갈 것이라고 상상할 수 있습니다. 그러나 파일 시스템에 따라 파일 시스템 메타데이터에는 다른 문제가 있습니다.
특히 ext4(및 유사한 파일 시스템)의 경우:
작은 파일에는 파일이 포함된 디렉터리의 디렉터리 항목을 위한 inode, 데이터 블록 및 공간이 필요합니다. 짧은 기호 링크는 inode 내에 완전히 저장될 수 있으므로 데이터 블록이 전혀 필요하지 않을 수 있습니다. (IIRC 제한은 약 60바이트 정도입니다.)
심볼릭 링크를 삭제하면 inode가 해제되고 디렉토리 항목과 데이터 블록(사용된 경우)에 사용된 공간이 해제됩니다. 어떤 경우에는 이것이 새로운 심볼릭 링크를 생성하기에 충분하지 않을 수도 있습니다:
- 새 기호 링크가 다른 디렉토리에 생성되는 경우 새 디렉토리에는 새 디렉토리 항목을 위한 공간이 없을 수 있으며 사용 가능한 데이터 블록이 없으면 디렉토리를 확장할 수 없습니다.
- 마찬가지로 동일한 디렉토리에 더 긴 이름을 사용하여 새 심볼릭 링크를 생성하면 디렉토리 공간이 부족해질 수 있습니다.
- 이전 기호 링크가 inode에 완전히 저장될 만큼 짧지만 새 링크가 데이터 블록이 필요할 만큼 길며 파일 시스템에 사용 가능한 데이터 블록이 없으면 새 기호 링크를 생성할 수 없습니다.
삭제된 심볼릭 링크는 반드시 하나의 아이노드만 사용하고 새 심볼릭 링크는 하나의 아이노드만 필요하므로 아이노드 부족은 문제가 되지 않습니다.
답변2
새 링크는 이전 링크보다 큽니다.
ls -l
기호 링크의 바이트 수를 표시합니다. 경로가 길수록 더 많은 바이트가 필요합니다.
이는 대략 대상 파일/디렉토리의 전체 경로에 있는 바이트 수입니다. Debian 10에서 ext4를 사용할 때 "/var/www/html"에 대한 링크는 13바이트입니다. 파일 시스템에 따라 다릅니다.