OVH Cloud OVH Cloud

(Dé)activation du cache du disque dur

13 réponses
Avatar
Steve
Bonsoir,

je vais essayer de faire court...

Message lors d'une mise =C3=A0 jour (postgresql-common) :

Warning: The following devices contain databases and have write
caching enabled: /dev/hda
This could destroy the integrity of your databases in the event of power
failure. Consider disabling the write cache with "hdparm -W 0 <device>".

Qu'en pensez-vous ?

=2D-=20
s=C2=B0

10 réponses

1 2
Avatar
fra-duf-no-spam
Le 13422ième jour après Epoch,
écrivait:

Bonsoir,

je vais essayer de faire court...

Message lors d'une mise à jour (postgresql-common) :

Warning: The following devices contain databases and have write
caching enabled: /dev/hda
This could destroy the integrity of your databases in the event of power
failure. Consider disabling the write cache with "hdparm -W 0 <device>".

Qu'en pensez-vous ?



Que tu devrais faire comme il dit.

En gros, ton disque dur seble avoir l'écriture différé activ e. Du
coup, même quand l'OS pense que c'est écrit, il se peut que les
données ne soient que sur le cache ram du disque dur.

Du coup, en cas de coupure de courant, ben les données
s'envolent. Certains disques savent gérer ça, mais pas tous et pas
toujours, du coup postgresql te préviens.
Avatar
Steve
Le dimanche 1 octobre 2006 18:16, François TOURDE a écrit :
Le 13422ième jour après Epoch,

écrivait:
> Bonsoir,
>
> je vais essayer de faire court...
>
> Message lors d'une mise à jour (postgresql-common) :
>
> Warning: The following devices contain databases and have write
> caching enabled: /dev/hda
> This could destroy the integrity of your databases in the event of power
> failure. Consider disabling the write cache with "hdparm -W 0 <device>".
>
> Qu'en pensez-vous ?

Que tu devrais faire comme il dit.



:-)

En gros, ton disque dur seble avoir l'écriture différé act ive. Du
coup, même quand l'OS pense que c'est écrit, il se peut que les
données ne soient que sur le cache ram du disque dur.



donc en gros les fs avec journalisation ne servent à rien (en absolu
j'entends) si le cache du dd est activé ?


Du coup, en cas de coupure de courant, ben les données
s'envolent. Certains disques savent gérer ça, mais pas tous et pas
toujours, du coup postgresql te préviens.



ok, merci

--
s°
Avatar
Pascal Hambourg
Salut,

François TOURDE a écrit :

Warning: The following devices contain databases and have write
caching enabled: /dev/hda
This could destroy the integrity of your databases in the event of power
failure. Consider disabling the write cache with "hdparm -W 0 <device>".

Qu'en pensez-vous ?



Que tu devrais faire comme il dit.



Mais attention à la perte de performance en écriture qui peut résulter
de la désactivation du cache d'écriture.

En gros, ton disque dur seble avoir l'écriture différé active. Du
coup, même quand l'OS pense que c'est écrit, il se peut que les
données ne soient que sur le cache ram du disque dur.

Du coup, en cas de coupure de courant, ben les données
s'envolent.



Bof. Le même problème existe de toute façon au niveau supérieur avec les
données en attente d'écriture dans le cache de l'OS.


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Steve
Le dimanche 1 octobre 2006 19:50, Vanuxem Grégory a écrit :
Le dimanche 01 octobre 2006 à 19:32 +0200, Pascal Hambourg a écrit :
> Salut,
>
> François TOURDE a écrit :
> >>Warning: The following devices contain databases and have write
> >>caching enabled: /dev/hda
> >>This could destroy the integrity of your databases in the event of
> >> power failure. Consider disabling the write cache with "hdparm -W 0
> >> <device>".
> >>
> >>Qu'en pensez-vous ?
> >
> > Que tu devrais faire comme il dit.
>
> Mais attention à la perte de performance en écriture qui peut rés ulter
> de la désactivation du cache d'écriture.
>
> > En gros, ton disque dur seble avoir l'écriture différé active. Du
> > coup, même quand l'OS pense que c'est écrit, il se peut que les
> > données ne soient que sur le cache ram du disque dur.
> >
> > Du coup, en cas de coupure de courant, ben les données
> > s'envolent.
>
> Bof. Le même problème existe de toute façon au niveau supérieur avec les
> données en attente d'écriture dans le cache de l'OS.

Bien que je sois entièrement d'accord avec la perte de performance qui
pourrait en résulter, je pense qu'un SGBD doit jouer avec fsync et
consort. C'est _vraiment_ leur boulot de s'assurer de l'intégrité des
données.



Moralité, je fais quoi ? Je laisse activé en espérant que postgresql fait
correctement son boulot (mais alors pourquoi le warning ? un aveu de
faiblesse ?) Ou je désactive avec perte de performance (à quantifier
encore...) ? Je serai plutôt pour laisser activé, d'autant plus que je n'ai
pas des données imperdables (ça se dit ?).

Merci


Greg



--

Avatar
Vanuxem Grégory
Le dimanche 01 octobre 2006 à 19:32 +0200, Pascal Hambourg a écrit :
Salut,

François TOURDE a écrit :
>>
>>Warning: The following devices contain databases and have write
>>caching enabled: /dev/hda
>>This could destroy the integrity of your databases in the event of power
>>failure. Consider disabling the write cache with "hdparm -W 0 <device>".
>>
>>Qu'en pensez-vous ?
>
> Que tu devrais faire comme il dit.

Mais attention à la perte de performance en écriture qui peut résulter
de la désactivation du cache d'écriture.

> En gros, ton disque dur seble avoir l'écriture différé active. Du
> coup, même quand l'OS pense que c'est écrit, il se peut que les
> données ne soient que sur le cache ram du disque dur.
>
> Du coup, en cas de coupure de courant, ben les données
> s'envolent.

Bof. Le même problème existe de toute façon au niveau supérieur avec les
données en attente d'écriture dans le cache de l'OS.



Bien que je sois entièrement d'accord avec la perte de performance qui
pourrait en résulter, je pense qu'un SGBD doit jouer avec fsync et
consort. C'est _vraiment_ leur boulot de s'assurer de l'intégrité des
données.

Greg


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Pascal Hambourg
Vanuxem Grégory a écrit :

En gros, ton disque dur seble avoir l'écriture différé active. Du
coup, même quand l'OS pense que c'est écrit, il se peut que les
données ne soient que sur le cache ram du disque dur.

Du coup, en cas de coupure de courant, ben les données
s'envolent.



Bof. Le même problème existe de toute façon au niveau supérieur avec les
données en attente d'écriture dans le cache de l'OS.



Bien que je sois entièrement d'accord avec la perte de performance qui
pourrait en résulter, je pense qu'un SGBD doit jouer avec fsync et
consort. C'est _vraiment_ leur boulot de s'assurer de l'intégrité des
données.



Je ne dis pas le contraire. Mais je dis que ni l'OS ni le SGBD ne
peuvent rien faire en cas de coupure intempestive de l'alimentation. Si
l'interruption se produit au milieu d'une écriture "atomique" pour le
SGBD (mais pas pour l'OS ou le disque), les données encore en RAM
système en attente d'écriture ne sont pas écrites. Alors que les données
dans le cache d'écriture du disque ont une chance d'être enregistrées.

Les seuls cas que je vois où il y a vraiment un intérêt pour l'OS ou
l'application de s'assurer de l'écriture effective, c'est pour la
gestion de l'alimentation (extinction ou mise en veille [1]) et
l'extraction d'un support amovible.

[1] J'ai eu connaissance d'un bug affectant Windows avec certains
disques récents ayant un gros cache : à la commande d'extinction,
Windows n'attendait pas assez longtemps que les données en cache soient
effectivement enregistrées sur le disque avant de couper l'alimentation.


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Sylvain Sauvage
Dimanche 1 octobre 2006, 20:17:32 CEST, Pascal Hambourg a écrit :
[...]
> Bien que je sois entièrement d'accord avec la perte de performance
> qui pourrait en résulter, je pense qu'un SGBD doit jouer avec fsync
> et consort. C'est _vraiment_ leur boulot de s'assurer de
> l'intégrité des données.

Je ne dis pas le contraire. Mais je dis que ni l'OS ni le SGBD ne
peuvent rien faire en cas de coupure intempestive de l'alimentation.
Si l'interruption se produit au milieu d'une écriture "atomique" pour
le SGBD (mais pas pour l'OS ou le disque), les données encore en RAM
système en attente d'écriture ne sont pas écrites. Alors q ue les
données dans le cache d'écriture du disque ont une chance d'à ªtre
enregistrées.

Les seuls cas que je vois où il y a vraiment un intérêt po ur l'OS ou
l'application de s'assurer de l'écriture effective, c'est pour la
gestion de l'alimentation (extinction ou mise en veille [1]) et
l'extraction d'un support amovible.

[1] J'ai eu connaissance d'un bug affectant Windows avec certains
disques récents ayant un gros cache : à la commande d'extinctio n,
Windows n'attendait pas assez longtemps que les données en cache
soient effectivement enregistrées sur le disque avant de couper
l'alimentation.



De toute façon, si on a des données importantes, on sécuri se son
alimentation de telle façon que les coupures n'aient pas de consé quence
graves (« onduleur » p.ex.).

--
Sylvain Sauvage
Avatar
fra-duf-no-spam
Le 13422ième jour après Epoch,
Pascal Hambourg écrivait:

Bof. Le même problème existe de toute façon au niveau sup érieur avec
les données en attente d'écriture dans le cache de l'OS.



Non, car les SGBD utilisent des options dans les fs permettant de
synchroniser les données.

- Soit tu t'en fous et l'OS synchronise quand il a le temps

- Soit c'est important (et PostgreSQL le pense) et dans ce cas le fs
te permet de forcer l'écriture
Avatar
fra-duf-no-spam
Le 13422ième jour après Epoch,
Pascal Hambourg écrivait:

Je ne dis pas le contraire. Mais je dis que ni l'OS ni le SGBD ne
peuvent rien faire en cas de coupure intempestive de
l'alimentation.



A mon avis, si. Je ne suis pas sûr de ce que je vais avancer, mais le
scénario en question est "possible":

Un SGBD peut marquer une liste d'opérations comme atomiques. Tant que
le dernier marqueur n'est pas écrit, alors l'opération n'est pas
valide. Du coup, quel que soit le moment où le système est arrà ªté,
alors les données ne sont pas prises en compte. Sauf bien sûr si le
marqueur de fin est écrit.

Au niveau FS, il s'agit de la même chose. Le marqueur du SGBD éta nt de
taille atomique pour le FS, il peut être écrit en une seule opà ©ration
de journalisation.

Du coup, tant que le marqueur n'est pas envoyé à l'écriture, pas de
soucis, et au moment où le marqueur va être écrit, le FS va:

1) Préparer l'écriture d'une opération atomique
2) Effectuer cette opération atomique d'écriture
3) Indiquer que l'écriture a bien eu lieu

Là, que l'interruption ait lieu durant l'une des 3 opérations
précédentes n'est pas grave, car l'opération SGBD ne sera pa s validée
puisqu'elle ne sera pas validée par le FS.
Avatar
Yves Rutschle
On Sun, Oct 01, 2006 at 09:53:19PM +0200, François TOURDE wrote:
- Soit c'est important (et PostgreSQL le pense) et dans ce cas le fs
te permet de forcer l'écriture



Que se passe-t-il si la coupure de courant arrive à
mi-chemin au milieu d'une écriture? Les SGBDs arrivent à se
conserver l'homogénéité?

Y.


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
1 2