Em unices, nomes de arquivos são apenas ponteiros (inodes) que apontam para a memória onde o arquivo reside (que pode ser um disco rígido ou até mesmo um sistema de arquivos suportado por RAM). Cada arquivo registra o número de links para ele: os links podem ser o nome do arquivo (plural, se houver vários hard links para o mesmo arquivo) e também toda vez que um arquivo é aberto, o processo realmente mantém o "link" para o mesmo espaço.
O espaço é fisicamente liberado apenas se não houver links deixados (portanto, é impossível obtê-lo). Essa é a única escolha sensata: enquanto o arquivo está sendo usado, não é importante que alguém não possa mais acessá-lo: você o está usando e até fechar, você ainda tem controle sobre ele - você nem perceberá o nome do arquivo se foi ou mudou-se ou o que quer que seja. Isso é usado até mesmo para arquivos temporários: algumas implementações criam um arquivo e o desvinculam imediatamente, então ele não é visível no sistema de arquivos, mas o processo que o criou está usando normalmente. O plugin Flash gosta especialmente deste método: todos os arquivos de vídeo baixados são mantidos abertos, mas o sistema de arquivos não os mostra.
Assim, a resposta é que, enquanto os processos ainda têm os arquivos abertos, você não deve esperar recuperar o espaço. Não é liberado, está sendo usado ativamente. Esse também é um dos motivos pelos quais os aplicativos devem realmente fechar os arquivos quando terminarem de usá-los. No uso normal, você não deve pensar nesse espaço como livre, e isso também não deve ser muito comum - com a exceção de arquivos temporários que são desvinculados de propósito, não deve haver arquivos que você faria considere estar sem uso, mas ainda aberto. Tente analisar se existe um processo que faz muito isso e considere como você o usa, ou apenas encontre mais espaço.