Diferença entre as opções de montagem 'sync' e 'async'

42

Qual é a diferença entre as opções de montagem synce de asyncmontagem do ponto de vista do usuário final? O sistema de arquivos montado com uma dessas opções funciona mais rápido do que se montado com outra? Qual opção é a padrão, se nenhuma delas estiver definida?

man mountdiz que essa syncopção pode reduzir a vida útil da memória flash, mas pode ser obsoleta pela sabedoria convencional. Mesmo assim este me preocupa um pouco, porque o meu disco rígido principal, onde partições /e /homesão colocados, é a unidade SSD.

Ubuntu Installer (14,04) não especificou syncnem asyncopção para /partição, mas criaram asyncpara /homepela opção defaults. Aqui está o meu /etc/fstab, eu adicionei algumas linhas adicionais (veja o comentário), mas não mudei nada nas linhas feitas pelo instalador:

# / was on /dev/sda2 during installation
UUID=7e4f7654-3143-4fe7-8ced-445b0dc5b742 /     ext4  errors=remount-ro 0  1
# /home was on /dev/sda3 during installation
UUID=d29541fc-adfa-4637-936e-b5b9dbb0ba67 /home ext4  defaults          0  2
# swap was on /dev/sda4 during installation
UUID=f9b53b49-94bc-4d8c-918d-809c9cefe79f none  swap  sw                0  0

# here goes part written by me:

# /mnt/storage
UUID=4e04381d-8d01-4282-a56f-358ea299326e /mnt/storage ext4 defaults  0  2
# Windows C: /dev/sda1
UUID=2EF64975F6493DF9   /mnt/win_c    ntfs    auto,umask=0222,ro      0  0
# Windows D: /dev/sdb1
UUID=50C40C08C40BEED2   /mnt/win_d    ntfs    auto,umask=0222,ro      0  0

Então, se o meu /dev/sdaé SSD, que eu deveria - por causa da redução do desgaste - add asyncopção para /e /homesistemas de arquivos? Devo definir syncou asyncoptar por partições adicionais definidas por mim /etc/fstab? Qual é a abordagem recomendada para unidades SSD e HDD?


fonte
1
Não cruze post askubuntu.com/questions/502691/…
cuonglm
@Gnouc O que há de errado com a crossposting? Enfim, eu apaguei a postagem do Ask Ubuntu, como você solicitou.

Respostas:

49

asyncé o oposto de sync, que raramente é usado. asyncé o padrão, você não precisa especificar isso explicitamente.

A opção syncsignifica que todas as alterações no sistema de arquivos correspondente são imediatamente liberadas para o disco; as respectivas operações de gravação estão sendo aguardadas. Para acionamentos mecânicos, isso significa uma grande desaceleração, pois o sistema precisa mover as cabeças do disco para a posição correta; com synco processo userland, é necessário aguardar a conclusão da operação. Por outro lado, asynco sistema armazena em buffer a operação de gravação e otimiza as gravações reais; Enquanto isso, em vez de ser bloqueado, o processo na terra do usuário continua em execução. (Se algo der errado, close()retornará -1com errno = EIO.)

SSD: Não sei a rapidez com que a memória SSD é comparada à memória RAM, mas certamente não é mais rápida; portanto, syncprovavelmente haverá uma penalidade no desempenho, embora não seja tão ruim quanto nas unidades de disco mecânicas. Ao longo da vida, a sabedoria ainda é válida, já que escrever em um SSD "muito" o desgasta. O pior cenário seria um processo que faz muitas alterações no mesmo local; com synccada um deles atinge o SSD, enquanto com async(o padrão) o SSD não verá a maioria deles devido ao buffer do kernel.

No final do dia, não se preocupe sync, é mais provável que você esteja bem async.

contra-modo
fonte
no caso de um aplicativo local estar excluindo e gravando na unidade montada (apontando para uma caixa externa do Windows); existe a possibilidade de o modo assíncrono padrão não ser seguro? O cenário é um aplicativo de pesquisa, procurando em uma pasta na montagem, processando as subpastas e excluindo-as.
perfil completo de HellishHeat
@HellishHeat Você deve fazer isso como uma pergunta separada, com detalhes suficientes do cenário que você tem em mente.
countermode
Qual é a velocidade de diferentes camadas de armazenamento: ram é nanossegundo, flash é microssegundos (10 para gravações, cerca de 100 para leituras), disco rotacional é milissegundos (melhor caso de 5 ms, 10 a 100 ms se o backup da fila de disco é feito e os acessos são aleatórios). As gravações em um único local em um dispositivo flash podem gravar em uma SRAM suportada por capacitor e não serem gravadas em NAND. Portanto, é difícil determinar o desgaste ou a velocidade do impacto.
Brian Bulkowski
Será que esta média não precisa de chamadas syncou fsyncou fdatasyncsyscalls em uma sincronização montadas fs?
precisa saber é o seguinte
1
@ini Você pode correr o risco de perder dados async. No entanto, se esse é um problema, então syncnão é a resposta - a penalidade de desempenho syncé simplesmente proibitiva.
Countermode #:
5

Palavras de cautela: usar a opção de montagem 'async' pode não ser a melhor ideia se você tiver uma montagem que está sendo gravada constantemente (por exemplo, registros valiosos, gravações de câmeras de segurança etc.) e não estiver protegido contra quedas de energia repentinas . Isso pode resultar na falta de registros ou dados incompletos (inúteis). Exemplo não tão inteligente: imagine um ladrão entrando em uma loja e cortando imediatamente o cabo de alimentação da câmera. A gravação de vídeo do arrombamento foi gravada, mas pode não ter sido descarregada / sincronizada com o disco, pois ele (ou partes dele) pode ter sido armazenado em buffer na memória, perdendo assim quando a câmera perde energia.

Andreas Mikael Bank
fonte
Servidores modernos possuem caches de disco com bateria nos controladores RAID, o que impedirá a perda de dados, mesmo em caso de perda de energia.
tonioc 8/06
assíncrono não escreve por muitos segundos? Quantos segundos aproximadamente?
Ini
@Ini parece que depende do sistema de arquivos que eu estou usando.
bd1251252
De qualquer maneira, o sistema operacional deve garantir que, ao desligar, tudo seja gravado no ssd / hdd. No caso de falta de energia, você poderá perder alguns dados. O que estou dizendo está correto?
Ini
O cache com bateria em alguns discos não é realmente um motivo para não otimizar a perda de energia 1), apenas em servidores profissionais caros. Nem todos os usuários terão esse 2); ele só salvará você na situação em que os dados chegaram ao controlador de disco. Em muitos casos, ele fica preso no cache do SO, muito antes do controlador ver esses dados - e isso será perdido em caso de falta de energia.
Cray