Bonjour/Bonsoir à tous;
je viens vous demander un petit coup de main dans le cadre d'un projets que je dois réaliser pour la fin des vacances; ce n'est pas dans au niveau du codage (ça je sais que je vais galérer mais ça fait partie du jeu) mais surtout de la compréhension du sujet qui est je dois le dire un peu "hard".
Grosso modo le but du projet est de développer l'ensemble des fonctions qui ferait tourner un système RAID5; sauf qu'ici pour simplifier notre problèmes; au lieu de travailler sur 4 disques, l'on symbolise ces disques par 4 fichiers d0 d1 d2 d3 chacun de même taille.
J'ai pu voir divers résumé de comment fonctionnent ces système RAID5
Notamment ici: http://fr.wikipedia.org/wiki/RAID_(i...tique)#RAID_05
Mais j'avoue avoir un peu de mal à faire une synthèse par rapport à ce que l'on me demande.
En fait, j'aimerais être sur d'avoir bien compris les notions:
- de bloc de données
- bloc de parité
- bande
- table d'inode
Pour "débuter" ce projet; un certains nombres de structures nous est déjà fournies.
Ce que je voudrais avoir bien compris avant de débuter un quelconque codage hasardeux c'est le rapport entre les structures virtual_disk et inodes par rapport au travail qui doit être fait.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 #ifndef __R5_DEFINES__ #define __R5_DEFINES__ #define NUMBER_OF_DISKS 4 #define BLOCK_SIZE 4 #define FILENAME_MAX_SIZE 32 #define MAX_FILES 100 #define MAX_FILE_SIZE (50*1024) typedef unsigned int uint; typedef unsigned char uchar; /* Type of a block of data */ typedef struct block_s{ uchar data[BLOCK_SIZE]; } block_t; /* Type of the pseudo-inode structure */ typedef struct inode_s{ char filename[FILENAME_MAX_SIZE]; uint size; uint nblock; // nblock = (size+BLOCK_SIZE-1)/BLOCK_SIZE uint block_id; } inode_t; /* Type of the inode table */ typedef inode_t inode_table_t[MAX_FILES]; /* Type of the virtual disk system */ typedef struct virtual_disk_s { inode_table_t inodes; int ndisk; int raidmode; FILE *storage[NUMBER_OF_DISKS]; } virtual_disk_t;
Simple exemple de mon incompréhension du sujet; ma première tâche est d'écrire une fonction qui initialiserait une variable globale "virtual disk_t g_disk ;" à partir du nom de répertoire contenant les disques virtuel. (On n'initialise pas la table d'inode dans un premier temps).
Mais pour le reste; je ne comprends pas vraiment à quoi correspondent les variables dans la structures.
Le fait d'allumer et d'éteindre le système RAID5 correspond il au fait d'ouvrir et de fermer les fichiers ?
Voilà désolé pour la masse de questions
Merci d'avance pour votre aide quand à la compréhension de ce sujet !
Partager