65 votes

Comment puis-je utiliser mon petit SSD comme cache pour un disque dur plus grand ?

Je voudrais utiliser un (petit) disque SSD comme cache pour un grand disque dur. Je réalise qu'il existe des produits basés sur le matériel qui font cela : HBA RocketHybrid de HighPoint , Intel SmartResponse et autres. Il n'y a qu'un seul produit exclusivement logiciel que j'ai pu trouver : ExpressCache de Diskeeper :

ExpressCache combine intelligemment et automatiquement les meilleurs attributs des disques durs et des disques SSD sans aucun effort ni aucune connaissance préalable de la part de l'utilisateur, de sorte que les utilisateurs bénéficient du meilleur des deux mondes : performances dynamiques et capacité évolutive. Les utilisateurs bénéficient ainsi du meilleur des deux mondes : performances dynamiques et capacité évolutive. Comme il est possible d'utiliser des disques SSD d'à peine 4 Go, cette solution est incroyablement abordable pour les fabricants.

Composé de composants en mode utilisateur et en mode noyau, ExpressCache utilise le SSD comme un cache intelligent, couplé à un disque dur, pour améliorer les performances globales du système et accélérer considérablement le démarrage du PC Windows, le lancement des applications et la vitesse d'accès aux données.

Cependant, ce produit est OEM uniquement !

J'ai cherché des alternatives, sans succès... Je ne comprends pas : Cela semble être une excellente idée, aucun matériel supplémentaire n'est nécessaire, et cela pourrait vraiment améliorer les performances du disque sans dépenser une fortune.

Je demande donc si quelqu'un connaît un logiciel qui fait cela, que ce soit pour Windows ou Linux. Ou si vous pensez que c'est une mauvaise idée, j'aimerais savoir pourquoi.

Note : ReadyBoost n'est pas vraiment adapté pour cela. Il est construit en supposant que les écritures sur disque sont très coûteuses, a très peu d'effet sur les systèmes avec beaucoup de RAM, et ne s'adapte pas correctement si votre SSD a plus de 100 Go.

61voto

dotvav Points 101

Il existe plusieurs façons d'utiliser un SSD comme cache pour votre disque dur ordinaire. Cette idée n'est pas nouvelle et a déjà été mise en œuvre à plusieurs reprises.

Dans Windows :

La meilleure mise en œuvre est celle de NVelo : Dataplex - Il dispose d'un cache en lecture et d'un cache en écriture facultatif. Malheureusement, comme ExpressCache, il n'est disponible que pour les OEM. Le moyen le moins cher de l'obtenir est d'acheter un SSD OCZ qui intègre un adaptateur PCIE avec un petit SSD et utilise le logiciel dataplex pour mettre en cache votre disque dur existant.

Il existe toutefois aussi des mises en œuvre purement logicielles : FancyCache - Il fonctionne comme on peut s'y attendre en effectuant une mise en cache en lecture et en écriture au niveau de la couche des blocs. Il existe principalement en tant que cache mémoire, mais il a récemment obtenu la prise en charge d'un cache SSD de deuxième couche (un peu comme le L2ARC de ZFS), qui peut être de taille arbitraire.

Si vous cherchez simplement à maximiser le nombre d'IOPS au détriment de la durabilité de l'écriture (ce qui est parfaitement possible avec un onduleur, par exemple), vous pouvez opter pour une solution de ce type : SuperCache - Cela n'utilisera que la RAM, pas de SSD. Mais contrairement aux autres, il dépassera allègrement les 100 000 IOPS sur du matériel de base. Très utile pour mettre en cache le périphérique de bloc contenant les index de base de données par exemple. Cela permet d'obtenir des performances similaires à celles d'un disque RAM, quelle que soit la taille du volume (en supposant que le périphérique sous-jacent puisse suivre le volume d'écriture).

Sous Linux, les choses sont un peu plus agréables :

Comme l'a mentionné un poster précédent, vous avez Flashcache - Il fonctionne plutôt bien, mais ses performances varient fortement en fonction de votre charge de travail. Dans de nombreux cas, avec une mauvaise localisation de l'accès, il ne sera pas aussi performant que vous pourriez l'espérer. Je ne sais pas pourquoi, mais pour la plupart des charges de travail, c'est une excellente option.

La meilleure option (bien que le code ne soit pas encore tout à fait "prêt pour la production") est la suivante bcache (plus d'informations) aquí Il a les meilleures performances de tous les caches SSD que j'ai essayés jusqu'à présent, et contrairement à toutes les autres options mentionnées, il prend en charge la mise en cache de plusieurs périphériques de bloc sur un seul cache. Il prend également en charge (bien que je n'ai pas personnellement essayé, il se peut que cela ne fonctionne pas encore) plusieurs dispositifs de cache, de sorte que vous pouvez utiliser plusieurs SSD moins chers pour maximiser votre IOPS. Le code est dans un dépôt git : git://evilpiepirate.org/~kent/linux-bcache.git . Il est question de le fusionner dans la prochaine version du noyau, bien que cela n'ait pas encore été décidé avec certitude.

Personnellement, je trouve que l'option la plus performante est bcache (ma charge de travail est principalement liée aux bases de données, bien que je mette également en cache mon ordinateur portable principal dans son intégralité). D'après mon expérience, le débit d'écriture séquentielle du disque dur est souvent le goulot d'étranglement, car le cache se remplit rapidement et le disque dur doit écrire les secteurs mis en cache, donc plus c'est rapide, mieux c'est. Ceci est bien sûr pour une charge de travail lourde en écriture, dans une charge de travail lecture-écriture plus équilibrée, les choses seront probablement différentes.

Je dois également vous prévenir qu'à pleine vitesse, vous allez dépasser les limites d'écriture de votre SSD assez rapidement. J'en suis actuellement à mon troisième OCZ Vertex 3. Les SSD, bien que très très rapides, ne sont tout simplement pas très durables, alors attendez-vous à devoir les remplacer tous les quelques mois.

10voto

Andreas_D Points 64111

Il existe un logiciel très intéressant pour Linux, utilisé par des serveurs très actifs :

https://github.com/facebook/flashcache

Sur un SATAII, 8 disques magnétiques rotatifs dans une configuration RAID6, j'obtiens un sérieux gain de performance. La lecture aléatoire avec un dispositif SSD SATAIII flashcache (540 lectures, 420 écritures) sature mon bus SATAII à presque 90-95% - j'ai 280MB en lecture (en période de pointe), 270MB en écriture (seulement en charge simulée... jamais atteint en production). Cela dure depuis environ six mois maintenant. Les écritures sur le disque dur sont... 20-30MB/s - utiliser le temps d'E/S libre...

6voto

Ariel Points 3004

Quelle est la taille de votre SSD ?

Vous obtiendrez probablement le meilleur effet en installant l'ensemble du système d'exploitation et des logiciels sur un SSD, tout en stockant des masses de données sur votre disque dur.

Si votre SSD est petit, il peut être utile d'y placer un fichier de page. Je doute que Windows mette beaucoup de vos fichiers en cache, mais, au moins, cela vous permettra d'avoir la mémoire des applications utilisées récemment et les fichiers en cache dans la RAM, tout en permettant un passage rapide aux applications utilisées moins récemment (qui résideront dans le pagefile qui est, à son tour, sur le SSD).

3voto

Spider_s Points 31

FancyFlash a fait le travail. J'ai mon propre serveur Hyper-V R2 à la maison pour mes laboratoires et j'ai pris un disque OCZ Revo Hybrid PCIe. Malheureusement, le pilote de cache intégré ne fonctionne qu'avec Windows 7. Rien n'est prévu pour Windows Server 2008 R2. J'ai donc installé le pilote FancyFlash sur mon hôte Hyper-V et configuré mon SSD sur Revo Hybrid pour qu'il serve de cache pour le disque intégré de 1 To (où se trouvent mes VHD). TaDa ! Cela fonctionne et accélère beaucoup mes VMs ! :)

J'espère que la version finale sera abordable $$$...

2voto

harrymc Points 394411

On peut utiliser le Technologies d'E/S Windows de ReadyDrive et ReadyBoost . Comme ces technologies datent d'avant l'introduction des SSD, on dispose de peu d'informations pour savoir si elles fonctionnent avec les SSD ou si elles sont efficaces.

Pour ReadyBoost, voir les conseils sur Comment puis-je utiliser mon SSD comme disque cache ReadyBoost ? bien que cette autre sujet prétend le contraire.

ReadyDrive est une fonctionnalité de Windows Vista qui permet aux ordinateurs Windows Vista ou ultérieurs équipés d'un lecteur hybride ou d'autres caches de mémoire Flash (comme Intel Turbo Memory) de démarrer plus rapidement et de sortir de l'hibernation en moins de temps.

On peut également placer le fichier de pages sur le SSD, mais l'amélioration attendue est limitée si la mémoire de votre système est suffisante.

La meilleure amélioration viendra, comme l'a fait remarquer penartur, de l'installation de Windows sur le SSD.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X