Articles

Find the lists of disks of your Proxmox VM stored in a ceph cluster

Image
voici les commandes que j'utilise le plus souvent pour gérer mon cluster ceph sous Linux/Proxmox en ligne de commande  : ceph status : permet de vérifier que le cluster est en HEALTH_OK pveceph lspools : pour lister les noms de pools et les infos genre replica size, pg_num et pourcentage d'utilisation rbd ls poolname : pour lister les images (disques) de vos VMs sur le pool en question rbd -p  poolname  info  vm-104-disk-1:  pour lister les infos sur un disques exemple de sortie : rbd image 'vm-104-disk-1': size 32768 MB in 8192 objects order 22 (4096 kB objects) block_name_prefix: rbd_data.47fa74b0dc51 format: 2 features: layering, exclusive-lock, object-map, fast-diff, deep-flatten flags: create_timestamp: Tue Dec 26 13:39:30 2017 rados -p  poolname  ls |grep rbd_data.47fa74b0dc51 >/tmp/list_blocks_de_vm-104-disk1.txt permet de retrouver tous les blocks de cette image ceph df : pour obtenir l'espace disponible sur mon cluster ceph osd tree

Comment extraire les fichiers disques en raw d'un backup proxmox vma

Image
Lors d'une opération de backup Proxmox utilise un format vma pour stocker tous les disques et la configuration de la VM backupée (aussi bien les kvm que les openvz) La raison d'avoir basculé dans ce format est expliqué sur le wiki de proxmox Parfois il peut-être utile de récupérer une VM ou plus concrètement son ou ses disques pour l'utiliser dans un autre environnement de virtualisation C'est tout à fait possible en suivant les étapes ci-après depuis la console de votre serveur proxmox: Vérifiez l'espace que vous avez à disposition sur votre serveur avec un "df -hT" , choisissez une partition avec suffisamment d'espace (en gros la taille des disques de votre VM en raw) Créez un répertoire à l'endroit retenu et allez-dedans mkdir /mnt/pve/nas_proxmox_backup/tmp cd /mnt/pve/nas_proxmox_backup/tmp  Décompressez votre backup dans ce répertoire avec la commande lzop lzop -x /mnt/pve/nas_proxmox_backup/dump/vzdump-qemu-151-2015_04_12-00_34_26.

Comment faire pour que Bower et Git utilisent toujours https://github.com/ au lieu de git://github.com/

En utilisant Bower pour installer Bootstrap j'ai constaté qu'il essayait d'utiliser git://github.com/... ceci ne fonctionnera généralement pas dans le réseau d'entreprise car le protocole est généralement bloqué. Un google plus tard, je touve la solution simple et efficace suivante sur cette discussion stackowerflow : git config --global url.https://github.com/.insteadOf git://github.com/

Déterminer l'encodage d'un fichier texte en ligne de commande

Souvent il faut pouvoir déterminer rapidement le type d'encodage d'un fichier texte, en ligne de commande sous linux il y a un moyen simple : file -bi default.phtml text/x-php; charset=us-ascii ou encore : file -bi default-alter.phtml text/x-php; charset=utf-8

43 millions d'insertions en 4 minutes 47 dans postgresql dans une machine virtuelle kvm !

Image
Je suis en train d'insérer des "zillions" de points provenant d'un campagne de mesure lidar dans une base de données postgresql/postgis et le taux d'insertion/sec est "abassourdissant". Bon il est vrai qu'il a fallu un peu "adapter" les paramètres du fichier de configuration postgresql.conf pour ces opérations d'insertions massives et il est aussi vrai que l'utilisation de la bonne méthode d'insertion est déterminante. Mais tout de même pour un GNU/Linux Debian 6.0.5 Squeeze 64 bit tournant dans une machine virtuelle kvm sur un host physique Proxmox "ça décoiffe sec" les amis. Tout commence par la compilation de la dernière version de liblas  la version 1.7.0 en ce moment. Ensuite on rentre dans le vif du sujet je convertis mes fichiers las en csv avec l'utilitaire las2txt  : las2txt --parse MxyzcipnreadRGB  --precision 3 3 3 3 -i 1243-14-d_color_ortho_r1.las -o 1243-14-d_color_ortho_r1.csv Ensuite avec un  w
Prendre la geomA et la geomB et retourner : “ Dimensionally Extended 9 Intersection Model (DE-9IM)” selon section 4.3.6 de la doc postgis SELECT ST_Relate('SRID=21781;POINT(538494 152932)'::geometry,'SRID=21781;POINT(538494 152932)'::geometry) --"0FF-FFF-FF2" --deux points diffrents SELECT ST_Relate('SRID=21781;POINT(538494 152932)'::geometry,'SRID=21781;POINT(538492 152932)'::geometry) --"FF0-FFF-0F2" --deux lignes identiques SELECT ST_Relate('SRID=21781;LINESTRING(53 15, 55 16)'::geometry,'SRID=21781;LINESTRING(53 15, 55 16)'::geometry) --"1FF-F0F-FF2" --deux lignes partiellment identiques SELECT ST_Relate('SRID=21781;LINESTRING(53 15, 55 16)'::geometry,'SRID=21781;LINESTRING(53 15, 55 16, 58 18)'::geometry) --""1FF-00F-102" --deux lignes qui se coupe perpendiculaire SELECT ST_Relate('SRID=21781;LINESTRING(0 0, 10 0)'::geometry,'SRID=21781;LINESTRING(5 5, 5 -

IsoSurface depuis 1 point donné avec une tolérance donnée

CREATE OR REPLACE FUNCTION cncggetisosurface(geomdepart geometry,tolerance float,altitude double precision) RETURNS geometry AS $$ DECLARE idcarredepart integer:=0; carredepart geometry; altituderef double precision:=0; tempidgrid integer:=0; tempgeom geometry; tempaltitude double precision:=0; toutlageometrieavant geometry; toutlageometrie geometry; isendofstory boolean :=false; BEGIN IF GeometryType(geomdepart) = 'POINT' THEN FOR tempidgrid,tempaltitude,tempgeom IN (SELECT idgrid_elevation,mns_lidar, the_geom FROM l3d_grid1m_elevation WHERE ST_DWITHIN(the_geom,geomdepart, 0.01) ) LOOP IF tempaltitude > altituderef THEN idcarredepart := tempidgrid; altituderef := tempaltitude ; carredepart := tempgeom; END IF; END LOOP; --au depart etait le carre toutlageometrie := carredepart; ELSE --ensuite etait la geom carre,polygone etc... toutlageometrie := geomdepart; END IF; WHILE NOT isendofstory LOOP

idem mais depuis un grille

Image
CREATE SEQUENCE seq_police_isolines_id MINVALUE 1 START WITH 1 INCREMENT BY 1 CREATE TABLE police_isolines as (SELECT nextval('seq_police_isolines_id') as id, COUNT(*), ST_UNION(the_geom), FLOOR(mns_lidar) FROM l3d_grid1m_elevation WHERE ST_Intersects(the_geom, (SELECT geom as gb from bati_pol where No_eca = '11330')) --AND the_geom && (SELECT geom as gb from bati_pol where No_eca = '11330') GROUP BY FLOOR(mns_lidar) ORDER BY 3 ) ;