Um arquivo pode ser salvo não sequencialmente no disco? Quero dizer, parte do arquivo está localizada no endereço físico X e a outra parte no endereço físico Y, que não é próximo do deslocamento X +).
Sim; isso é conhecido como fragmentação de arquivo e não é incomum, especialmente em arquivos maiores. A maioria dos sistemas de arquivos aloca espaço conforme necessário, mais ou menos sequencialmente, mas não consegue adivinhar o comportamento futuro - por isso, se você escrever 200MiB em um arquivo e adicionar mais 100MiB, haverá uma chance diferente de zero de que ambos os conjuntos de dados serão ser armazenado em diferentes áreas do disco (basicamente, qualquer outra gravação que precise de mais espaço no disco, ocorrendo após a primeira gravação e antes da segunda, pode ocorrer entre as duas). Se um sistema de arquivos estiver quase cheio, a situação geralmente será pior: pode não haver uma área contígua de espaço livre grande o suficiente para armazenar um novo arquivo, portanto, ele deverá ser fragmentado.
De alguma forma, posso controlar a seqüencialidade do arquivo? Eu quero alocar um arquivo grande de 10GB. Quero que seja seqüencial em disco e não dividido entre diferentes compensações.
Você pode informar ao sistema de arquivos o tamanho alvo do seu arquivo quando ele for criado; isso ajudará o sistema de arquivos a armazená-lo de maneira ideal. Muitos sistemas de arquivos modernos usam uma técnica conhecida como alocação atrasada, em que o layout em disco de um novo arquivo é calculado o mais tarde possível, para maximizar as informações disponíveis quando o cálculo é realizado. Você pode ajudar nesse processo usando a posix_fallocate(3)
função para informar ao sistema de arquivos quanto espaço em disco deve ser alocado no total. Os sistemas de arquivos modernos tentarão executar essa alocação sequencialmente.
Ele age de maneira diferente entre os diferentes tipos?
Sistemas de arquivos diferentes se comportam de maneira diferente, sim. Os sistemas de arquivos baseados em log, como o NILFS2, não alocam armazenamento da mesma maneira que os sistemas de arquivos baseados em extensão, como o Ext4, e esse é apenas um exemplo de variação.