Résultat de l’API de MediaWiki

Voici la représentation HTML du format JSON. HTML est bien pour le débogage, mais inapproprié pour être utilisé dans une application.

Spécifiez le paramètre format pour modifier le format de sortie. Pour voir la représentation non HTML du format JSON, mettez format=json.

Voir la documentation complète, ou l’ aide de l’API pour plus d’information.

{
    "batchcomplete": "",
    "continue": {
        "gapcontinue": "Tips_syst\u00e8mes",
        "continue": "gapcontinue||"
    },
    "query": {
        "pages": {
            "9": {
                "pageid": 9,
                "ns": 0,
                "title": "Resize IMG file",
                "revisions": [
                    {
                        "contentformat": "text/x-wiki",
                        "contentmodel": "wikitext",
                        "*": "= Comment redimensionner un fichier .IMG ? =\n\n== Agrandir l'espace disque ==\nAssurez vous que le fichier n'est plus utilis\u00e9 (ni par une VM, ni mont\u00e9 dans un loop device)\n\n(faites-en une copie, on sait jamais)\n cp /my/file.img /my/file.img.backup\n\nAgrandissez la taille du fichier IMG (exemple donn\u00e9 pour \u00e9tendre le fichier \u00e0 50Go (50000 x 1Mb) :\n dd if=/dev/zero of=/my/file.img bs=1M conv=notrunc count=1 seek=50000\n\n\n== \u00c9tendre le filesystem ==\nDeux possibilit\u00e9s s'offrent a pr\u00e9sent, le fichier contient, ou pas, un partitionnement propre.\n\nPour le v\u00e9rifier : <code>fdisk -l /my/file.img</code>\nSi fdisk sors ce genre de choses \n Disk /my/file.img: 0 MB, 0 bytes\n 255 heads, 63 sectors/track, 0 cylinders\n Units = cylinders of 16065 * 512 = 8225280 bytes\n \n                                     Device Boot      Start         End      Blocks   Id  System\n /my/file.img1   *           1          25      200781   83  Linux\n /my/file.img2              26         156     1052257+  82  Linux swap / Solaris\n /my/file.img3             157        6527    51175057+  83  Linux\n\n* [[Resize_IMG_file#Le_fichier_contient_des_partitions|Le fichier contient des partitions]]\nSinon,\n* [[Resize_IMG_file#Le_fichier_ne_contient_pas_de_partitions|Le fichier ne contient pas de partitions]]\n\n\n=== Le fichier contient des partitions ===\nSi le fichier contient des partitions\n# V\u00e9rifier le FS, puis mapper le fichier dans un loop device (la sortie indique les mappings r\u00e9alis\u00e9s avec le partitionnement du fichier, on va prendre loop0 comme exemple, nous voulons resizer la 3eme partition)\n e2fsck -f /dev/loop0p3\n kpartx -av /my/file.img\n\n# pour \u00e9tendre la partition, il faut en r\u00e9alit\u00e9 la supprimer, puis la recr\u00e9er. Cette op\u00e9ration ne supprime '''PAS''' les donn\u00e9es, si le bloc de d\u00e9but de la partition reste le m\u00eame et que le bloc de fin se est plus loin. Ces op\u00e9rations sont r\u00e9alis\u00e9es avec fdisk :\n fdisk /dev/loop0\n # on affiche les propri\u00e9t\u00e9s des partitions actuelles\n p\n # on supprime la partition \u00e0 \u00e9tendre\n d\n [1-4]\n # on la recr\u00e9\u00e9e, avec le m\u00eame type, m\u00eame num\u00e9ro de partition et le m\u00eame bloc de d\u00e9part\n n\n [1-4]\n # on sauvegarde le tout\n w\n\n#Pour que les modifications soient prises en comptes, fdisk demande de rebooter le systeme. Il est possible de d\u00e9tacher puis de rattacher, avec kpartx, le fichier IMG :\n kpartx -d /my/file.img\n kpartx -av /my/file.img\nUn checkdisk devient obligatoire \u00e0 cet instant, afin de pouvoir resizer par la suite la partition :\n e2fsck -f /dev/loop0p3\n resize2fs /dev/loop0p3\nNormalement, si tout c'est bien pass\u00e9, il devrait y avoir un joli message :\n Resizing the filesystem on /dev/mapper/loop0p3 to 12793764 (4k) blocks.\n The filesystem on /dev/mapper/loop2p3 is now 12793764 blocks long.\n\nIl ne reste plus qu'\u00e0 v\u00e9rifier l'int\u00e9grit\u00e9 du syst\u00e8me de fichiers, et \u00e0 d\u00e9tacher le tout\n e2fsck -f /dev/loop0p3\n kpartx -d /my/file.img\n\n=== Le fichier ne contient pas de partitions ===\nSans partitionnement, il est plus simple d'ajuster la taille du filesystem :\n# Chercher un loopdevice vide (la commande sors les loopdevice utilis\u00e9s)\n losetup -a\n# Monter en loop le fichier img\n losetup /dev/loop0 /my/file.img\n# Forcer le fsck\n e2fsck -f /dev/loop0\n# Resizer le fs \u00e0 la taille maxi du volume :\n resize2fs /dev/loop0\n# Forcer le fsck\n e2fsck -f /dev/loop0\n# D\u00e9monter le loopdevice\n losetup -d /my/file.img"
                    }
                ]
            },
            "6": {
                "pageid": 6,
                "ns": 0,
                "title": "Rollback d'un Snapshot",
                "revisions": [
                    {
                        "contentformat": "text/x-wiki",
                        "contentmodel": "wikitext",
                        "*": "__NOTOC__\nUtiliser les snapshots de LVM c'est bien, savoir comment proc\u00e9der \u00e0 son rollback, c'est encore mieux.\nLa plupart des distribs Linux ne fournissent pas d'options aux commandes <code>lv</code> pour rollbacker avec un snapshot.\nCette option est particuli\u00e8rement int\u00e9ressante lorsqu'on fait de la virtualisation, et qu'on veut pouvoir proc\u00e9der au rollback des VM, install\u00e9es sur des LV.\n\nPour faire ce 'retour au snapshot', nous allons utiliser ici un tool non standard et quelques commandes dmsetup. Cet utilitaire s'appelle dm-merge. Vous devez le t\u00e9l\u00e9charger et le compiler depuis son [http://repo.or.cz/w/dm-merge.git repository git] ou [http://repo.or.cz/w/dm-merge.git?a=snapshot;h=HEAD;sf=tgz t\u00e9l\u00e9charger le dernier snapshot]. Le principe de fonctionnement de dm-merge est simple : il remplace les blocks modifi\u00e9s par ceux pr\u00e9sent dans le snapshot. Il faut le compiler (un make suffit). La doc indique qu'il y a deux m\u00e9thodes possibles : rollbacker sur un volume logique actif, ou inactif. Le premier cas permet de revenir sur un clich\u00e9 instantan\u00e9 lorsque le syst\u00e8me de fichiers est encore mont\u00e9. C'est surement une tr\u00e8s mauvaise id\u00e9e. La m\u00e9thode sur syst\u00e8me inactif est beaucoup plus sure !\n\nAttention, cette proc\u00e9dure est un peu funky tout de m\u00eame, je vous conseille de proc\u00e9der sur un LV de test d'abord !\n\nDans l'exemple, j'ai un LV nomm\u00e9 /dev/myvg/win2008 (oui, cette proc\u00e9dure m'as permis de rollbacker souvent une VM crash test windows 2008), bien \u00e9videmment, j'avais cr\u00e9\u00e9 un snapshot 'snap1' avant de crasher ma VM.\n lvcreate --size 1G --snapshot --name snap1 /dev/myvg/win2008\n\nChose int\u00e9ressante, il est possible de modifier la taille du snapshot sans compromettre celui-ci : <code>lvresize -L 20G /dev/myvg/snap1</code>\n\nJ'ai utilis\u00e9 la m\u00e9thode sur un volume LVM inactif, mais j'imagine qu'il en est de m\u00eame sur le LVM d'une VM qui as \u00e9t\u00e9 simplement shutdown (LV 'actif' d'un point de vue LVM, mais inutilis\u00e9)\n\n\n==Stopper l'acc\u00e8s au volume logique==\n(ie. /dev/myvg/win2008)\n\nPuisque c'est une VM, j'ai juste besoin de shutdown la VM (ou destroy, peu importe). Sinon, d\u00e9montez votre lv <code>umount /dev/myvg/win2008</code>\n==Dupliquer les tables du LV et du snapshot==\n(notez l'utilisation des suffixes sp\u00e9ciaux <code>-real</code> et <code>-cow</code>\n\n # dmsetup table myvg-win2008-real | dmsetup create tmplv\n # dmsetup table myvg-snap1-cow | dmsetup create tmpcow\n\n==D\u00e9sactiver le LV principal==\n\n # lvchange -a n /dev/myvg/win2008\n\n==Flusher les buffers==\n\n # blockdev --flushbufs /dev/mapper/{tmplv,tmpcow}\n\n==Faire un essai==\nVous allez voir un paquet de lignes commen\u00e7ant par <code>dd</code> et un r\u00e9sum\u00e9 \u00e0 la fin de ce qui sera fait.\n # dm-merge -i /dev/mapper/tmpcow -o /dev/mapper/tmplv -vd\n ...\n dd of=\"/dev/mapper/tmplv\" seek=2135444 if='/dev/mapper/tmpcow' iflag=direct skip=8275 count=1 bs=8b\n dd of=\"/dev/mapper/tmplv\" seek=2135445 if='/dev/mapper/tmpcow' iflag=direct skip=8276 count=1 bs=8b\n dd of=\"/dev/mapper/tmplv\" seek=2135446 if='/dev/mapper/tmpcow' iflag=direct skip=8277 count=1 bs=8b\n dd of=\"/dev/mapper/tmplv\" seek=5056466 if='/dev/mapper/tmpcow' iflag=direct skip=8278 count=1 bs=8b\n dd of=\"/dev/mapper/tmplv\" seek=5056467 if='/dev/mapper/tmpcow' iflag=direct skip=8279 count=1 bs=8b\n Found 8246 exceptions of chunksize 4096, total size 33775616 bytes (32984 KiB, 32.211 MiB, 0.031 GiB).\n\n==Le faire en vrai==\nQuelques lignes en plus du m\u00eame r\u00e9sum\u00e9\n\n # dm-merge -i /dev/mapper/tmpcow -o /dev/mapper/tmplv -f\n Artificial sleep (1 second)\n Found a proper MAGIC header: 0x70416e53\n valid = 1\n version = 1\n chunk_size = 8 (4096 bytes)\n Found 8246 exceptions of chunksize 4096, total size 33775616 bytes (32984 KiB, 32.211 MiB, 0.031 GiB).\n\n==Flusher les buffers encore une fois==\n\n # blockdev --flushbufs /dev/mapper/{tmplv,tmpcow}\n\n==Supprimer les LV temporaires==\nCe ne sont que des r\u00e9f\u00e9rences aux donn\u00e9es, \u00e7a va va pas supprimer les donn\u00e9es r\u00e9elles !\n\n # dmsetup remove tmplv\n # dmsetup remove tmpcow\n\n==Activer le LV==\n\n # lvchange -a y /dev/myvg/win2008\n\nIl est temps de red\u00e9marrer la VM - remonter le filesystem - qui a \u00e9t\u00e9 inverti sur l'instantan\u00e9. Si le snapshot a \u00e9t\u00e9 r\u00e9alis\u00e9 sur une VM boot\u00e9e ou sur un FS mont\u00e9, un fsck (ou chkdsk) sera r\u00e9alis\u00e9 ou sera demand\u00e9 avant de remonter le FS.\n\nIl est a pr\u00e9sent possible de supprimer le snapshot initial (ou pas, si jamais il faut re-rollbacker) <code>lvremove /dev/myvg/snap1</code>\n\n\n\nSources:\n\n[http://www.kernelcrash.com/blog/reverting-lvm-snapshots/2009/12/11/]"
                    }
                ]
            }
        }
    }
}