Can a file be saved not sequentially on disk? I mean, part of the file is located under physical address X and the other part under physical address Y which isn't close to X + offset).
Sim; isso é conhecido como fragmentação de arquivos e não é incomum, especialmente com arquivos maiores. A maioria dos sistemas de arquivos aloca espaço conforme necessário, mais ou menos sequencialmente, mas eles não podem adivinhar comportamento futuro - então se você escrever 200MBi em um arquivo, adicionar 100MiB, há uma chance diferente de zero de que ambos os conjuntos de dados ser armazenado em diferentes áreas do disco (basicamente, qualquer outra gravação precisando de mais espaço no disco, ocorrendo após a primeira gravação e antes da segunda, poderia ficar entre as duas). Se um sistema de arquivos estiver quase cheio, a situação normalmente será pior: pode não haver uma área contígua de espaço livre grande o suficiente para conter um novo arquivo, então ele terá que ser fragmentado.
Can I somehow control the file sequentiallity? I want to allocate big file of 10GB. I want it to be sequential in disk and not divided between different offsets.
Você pode dizer ao sistema de arquivos sobre o tamanho do alvo do seu arquivo quando ele é criado; Isso ajudará o sistema de arquivos a armazená-lo de forma otimizada. Muitos sistemas de arquivos modernos usam uma técnica conhecida como alocação atrasada, na qual 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 função posix_fallocate(3)
para informar ao sistema de arquivos quanto espaço em disco deve ser alocado no total. Sistemas de arquivos modernos tentarão realizar essa alocação seqüencialmente.
Does it act differently between the different types?
Diferentes sistemas de arquivos se comportam de maneira diferente, sim. Os sistemas de arquivos baseados em log, como o NILFS2, não alocam o armazenamento da mesma maneira que os sistemas de arquivos baseados em extensão, como o Ext4, e esse é apenas um exemplo de variação.