Création
d'entreprise

Target iscsi depuis un jbod de fichiers image


Réalisation d'un target ISCSI à partir d'un disque logique, non raid linéaire, ( jbod ) construit sur des fichiers image

Le problème rencontré :


J'ai un utilisateur pour lequel j'ai dû créer un disque ISCSI à partir de mon NAS vers son ordinateur et lui assurer que son disque était dupliqué sur mon autre nas sans avoir accès à sa machine cliente.
Du coup, pour des problèmes d'accès concurrents, je suis obligé de copier le disque entier, mais sur mes disques, son disque ISCSI est un fichier image de 600Go.
En conséquence, un rsync de ce fichier de 600Go fait tomber mes 2 serveurs (4 core, 6Go ram quand même) et dure 17h !!

J'ai donc opté pour un bête scp qui prend aussi 17h, qui utilise beaucoup moins de ressources matériel mais qui est loin d'être optimal.

Astuce trouvée :


Le but étant de créer un disque ISCSI de 4 Go utile, par exemple, composé de fichiers plus petits qui se rempliront les uns à la suite des autres permettant ainsi à rsync d'en faire une copie distante de façon optimale.

config test/prod  a base de ubuntu/debian

Première étape :


On installe ces différents utilitaires :

#sudo apt-get install mdadm losetup parted


mdadm permet de faire des raids logiciels et losetup permet de gérer les "loop drive" c'est-à-dire de faire passer un fichier pour un disque physique (essentiel pour mdadm). Enfin parted permettra d'initialiser les disques image créés et d'obtenir des infos sur ces disques.

Source :
http://en.wikipedia.org/wiki/Loop_device

Deuxième étape :


On crée les fichiers image avec la commande dd :

#mkdir /storage     
#dd if=/dev/zero of=/storage/lun0.img bs=1024k count=2000     
#dd if=/dev/zero of=/storage/lun1.img bs=1024k count=2000 

etc...

Pour cet exemple, on construit des fichiers image de 2 Gb

Source :
http://www.howtoforge.com/using-iscsi-on-ubuntu-10.04-initiator-and-target

Troisième étape :


On associe ces fichiers à des "loop device", soit un fichier par "loop device".

Pour réussir, j'ai dû utiliser parted sur chaque fichier image, d'une part, pour leur donner un label, ensuite pour créer une partition. Tout ceci, seulement, dans le but d'identifier le premier bloc de chaque disque virtuel.
Sans cela, losetup me renvoyait "dans les cordes" avec un message d'erreur disant qu'il ne trouvait pas le début du "device", donc :

#parted /storage/lun0.img     
(parted) mklabel     
Nouveau type d'étiquette de disque ? gpt     
(parted) mkpart     
Nom de la partition ?  []?                                                    
Type de système de fichiers ?  [ext2]?                                        
Début ? 0                                                                     
Fin ? 100%                                                                    
Avertissement : Vous voulez établir une partition de 0B à 2097151488B.         
La position la plus proche gérable est 17408B à 2097134592B.     
Est-ce acceptable pour vous ?     
Oui/Yes/Non/No? oui                                                           
Avertissement: L'alignement de la partition ainsi définie n'est pas optimal au     
niveau performance.     
Ignorer/Ignore/Annuler/Cancel? ignore     
(parted) print                                                                
Modèle:  (file)     
Disque /storage/lun0.img : 2097152000B     
Taille des secteurs (logiques/physiques): 512B/512B     
Table de partitions : gpt     

Numéro  Début   Fin          Taille       Système de fichiers  Nom  Fanions     
 1      17408B  2097135103B  2097117696B     

(parted) quit     

#sudo losetup -o 17408 /dev/loop0 /storage/lun0.img     
#sudo losetup -o 17408 /dev/loop1 /storage/lun1.img 

etc...

Vous noterez que l'option -o me permet d'indiquer le début de mon volume...

Cela ne semble pas optimal, pour l'instant, mais j'ai dû m'adapter et cela fonctionne.

Source :
http://www.linuxquestions.org/questions/linux-server-73/mdadm-assemble-raid5-with-loopback-mounted-disk-images-715343/
http://ftp.gnu.org/old-gnu/Manuals/parted-1.6.1/html_mono/parted.html#SEC16

man losetup 


une fois les "device loop" mappés sur mes fichiers, on crée le volume logique non raid linéaire ou jbod :

#sudo mdadm --create /dev/md1 --level=linear --raid-devices=2 /dev/loop0 /dev/loop1 


Source :
http://en.wikipedia.org/wiki/Mdadm
http://proutleharicot.blog.free.fr/index.php?post/2009/01/15/MDADM-%3A-Linear-NRAID-%28ou-JBOD-Just-a-Bunch-Of-Disks%29-%3A-concat%C3%A9nation-de-disques

man mdadm


Voilà on dispose, maintenant, d'un disque virtuel de 4Go qui est une "concaténation" de 2 fichiers de 2Go. Ils se rempliront au fur et à mesure et l'un à la suite de l'autre. Il est extensible à souhait et comme les fichiers image sont déposés sur un volume raid5 matériel, la tolérance de panne est acceptable.

Dernière étape :


On va monter ce disque sur une machine distante en ISCSI.

Pour cela, il suffit de suivre ce tuto :
http://www.howtoforge.com/using-iscsi-on-ubuntu-10.04-initiator-and-target
et de l'appliquer à notre disque jbod fraîchement créé : /dev/md1

En ce qui concerne la machine cliente, s'il s'agit d'un Windows, après avoir télécharger/installer le package ISCSI sur le site de microsoft et paramétré le target, il faut penser à initialiser le nouveau disque. (Ben oui, moi j'ai passé 5 min à le chercher dans l'explorateur avant de tilter !! )

Source :
http://www.microsoft.com/download/en/details.aspx?id=18986
http://www.cyberciti.biz/tips/windows-2003-iscsi-initiator-software-connection.html

En cas de gros crash, je rapatrie les disques sauvés sur mon NAS distant , je les remappe à des "loop device" puis je ré-assemble le volume jbod par la commande :

#sudo mdadm --assemble /dev/md1 /dev/loop0 /dev/loop1 


Source :
http://ptaff.ca/ptaffgnu/2006-06/1149215339-pour_ceux_qui_utilise_software_raid/


Publié par mr_poussy - Dernière mise à jour le 17 juin 2011 à 16:21 par aquarelle
Ce document intitulé « Target iscsi depuis un jbod de fichiers image » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Suggestions
  •  Target iscsi depuis un jbod de fichiers image
  •  Fichier image » Articles : Format ISO Un fichier possédant l'extension .ISO est une image ISO, c'est-à-dire une image d'un disque (CD, DVD ou disque dur) sous forme de fichier, créer avec un logiciel de gravure. Comment lire un fichier ISO ? En l'absence de graveur,...
  •  Gravure - Graver une image disque (ISO, NRG, ...) » Fiches pratiques : Définition de l'image ISO Recommandation Comment procéder ? Nero K3B BurnAtOnce BurnCDCC CDBurner XP Pro Deepburner Easy Media Creator Infrarecorder Avertissement Certains croient que graver une image disque nécessite d'en extraire...
  •  Ouvrir un fichier .img (Résolu) » Meilleure réponse: Bonjour Fanny .img=image.Tu as aussi .nrg,.iso,etc... C'est juste une manière de copier un cd(ou dvd) Qqn en a fait une copie exacte.Plutôt que de transférer le contenu sur son PC,puis de le regraver.Il a pris une photo complète du cd.
  •  Comment réduire la taille d'une image JPEG? (Résolu) » Meilleure réponse: Bonjour, Voici une petite explication sur comment faire en utilisant le logiciel Gimp (gratuit) : http://brunetton.tuxfamily.org/index.php?n=Main.ReduireJpegs
  •  CONVERSION PDF EN JPEG (Résolu) » Meilleure réponse: Autre solution: Installer PDFCreator. Ouvrir le fichier dans Acrobat Reader, imprimer. Dans PDFCreator, choisir le format voulu (BMP, TIFF...). Réglérer la résolution dans les paramètres. http://sourceforge.net/projects/pdfcreator/
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?
Afficher un Tux au lancement du terminal
Vidéosurveillance et capture d'image périodique par webcam