On ne l’arrête plus ! Je sais, je sais … mais je continue mes pérégrination ScaleIO malgré le dernier billet sorti il y a quelques heures. En fait, j’ai dit des bêtises dans le troisième billet sur l’intégration VMWare (je vais mettre un petit pingback sur ce billet pour corriger) : on peut tout à fait gérer entièrement le SDC de ESXi via ligne de commande ! Il faut seulement savoir lire “entre les lignes” de la documentation EMC, qui n’est, de fait, pas à jour :)
Il est écrit dans la doc actuelle, version 302-001-033 révision 12, que l’on peut modifier les paramètres du module noyau “scini” via des commandes esxcli. Mais si vous testez directement les commandes en exemple, comme celle-ci esxcli system module parameters get -m scini
vous obtenez une erreur du type “Error: Unknown command or namespace system module parameters get”. Ca décourage un peu … mais il s’agit surtout d’une commande ESXi 5.5 ! Avec ESXi 6, on peut le faire aussi, mais il faut utiliser cette commande esxcli system module parameters list -m scini
et vous obtenez cette fois-ci une réponse parfaite :
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 37 38 39 40 41 42 43 44 45 46 47 |
[root@kuiper3:~] esxcli system module parameters list -m scini Name Type Value Description ----------------------------- ------ --------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- IoctlIniGuidStr string Ini Guid, for example: 12345678-90AB-CDEF-1234-567890ABCDEF IoctlMdmIPStr string 172.16.16.221,172.16.16.222 Mdms IPs, IPs for MDM in same cluster should be coma separated. To configure more than one cluster use '+' to separate between IPs.For Example: 10.20.30.40,50.60.70.80+11.22.33.44. Max 1024 characters blkDevMaxCmdLen int Maximum SCSI Command length blkDev_QDepth int Maximum Outstanding Commands blockUnmapMaxBlocksModParam int Number MB that can be concurently unmapped from a thin provisioned volume.Default 100. Minimum 1. Maximum 200 fastEagerZeroSupport int Whether we support fast eager zero support (1 for enable).Default 0 iniBwcEnabled int Whether Bandwidth counters are enabled.Default 1 iniBwcWinSec int Window size in seconds for the bandwidth counters.Default 5. Minimum 1. Maximum 60 iniSchedQuota int Quota of MITs before re-scheduling to another thread.Default 3. Minimum 0. Maximum 100 iniSchedThreads int Number general purpose scheduler threads.Default 3. Minimum 1. Maximum 16 mapHeadHashAnchors int Number of anchors in global HEAD hash (Power of 2).Default 1024. Minimum 128. Maximum 4096 mapITLHashAnchors int Number of anchors in global volume hash (Power of 2).Default 16. Minimum 4. Maximum 1024 mapMdmEnableMultipleInstances int For debugging only. Shouldn't be used in production. mapMdmMilliBetweenQuery int Timeout in millis between MDM queries.Default 60000. Minimum 10000. Maximum 600000 mapMdmMilliBetweenVolNotif int Timeout in millis between MDM volume notifications.Default 5000. Minimum 1000. Maximum 600000 mapMdmMinMilliBetweenQuery int Minimum timeout in millis between MDM queries.Default 1000. Minimum 100. Maximum 5000 mapMdmPrKeysPerVol int Maximum PR keys allowed per volumeDefault 64. Minimum 8. Maximum 1000 mapScsiIniHashAnchors int Number of anchors in global SCSI Initiators hash (Power of 2).Default 1024. Minimum 128. Maximum 4096 mapTgtHashAnchors int Number of anchors in global targets hash (Power of 2).Default 1024. Minimum 128. Maximum 4096 mapTgtSockets int Number of sockets per target end-point.Default 1. Minimum 1. Maximum 8 mapVTreeHashAnchors int Number of anchors in global V-Tree hash (Power of 2).Default 16. Minimum 4. Maximum 1024 mapVolHashAnchors int Number of anchors in global volume hash (Power of 2).Default 16. Minimum 4. Maximum 1024 netChanDebugFailAlloc int Debug parameter. Do not use in production. netChanMaxInflight int Maximum amount of in-flight requests to one target.Default 100 Minimum 1. Maximum 10000 netChanMbInflight int Number MB in-flight per target connection.Default 10. Minimum 1. Maximum 10000 netConConnectTimeoutMillis int Timeout logical connection establishment in milliseconds.Default 1000. Minimum 1000. Maximum 10000 netConIdleTimeoutMillis int Amount of milliseconds before an idle socket is closed.Default 3000. Minimum 100. Maximum 60000 netConKaMillis int Amount of milliseconds between keep-alive pollsDefault 100. Minimum 100. Maximum 1000 netConMillisToReconnect int Millis to wait before establishing a connection after a failed connect or a disconnect event.Default 1000. Minimum 100. Maximum 60000 netConSchedMask int CPU mask for network scheduler threads. Can only be 32 bits. netConSchedQuota int Quota of MITS before re-scheduling to another network thread.Default 0. Minimum 0. Maximum 100 netConSchedThrd int Number of network scheduler threads.Default 2. Minimum 1. Maximum 10 netSockConnTimeoutMilli int Timeout for Socket connection in millisecondsDefault 5000. Minimum 3000. Maximum 20000 netSockDisableNagle int Whether to disable nagle for new sockets. Default 1 netSockQuickAckMode int Quick ack mode. 0 = Auto. 1 = Always. 2 = After receive is drained.Default 2 netSockRcvBufSize int Socket buffer receive size. Default 512K. Minimum 8K netSockSndBufSize int Socket buffer send size. Default 512K. Minimum 8K rpcHashAnchors int Number of anchors for RPC global hash (Power of 2 number).Default 512. Minimum 128. Maximum 4096 rpcTimeoutMillis int Timeout for RPC in millis.Default 30000. Minimum 1000. Maximum 60000 volIoRetries int Amount of retries per I/O.Default 12. Minimum 1. Maximum 100 volIoSnapRetries int Amount of short timeout I/O retries for snapshots..Default 6. Minimum 1. Maximum 100 volMillisOnFault int Amount of millis to sleep when receiving a fault from target.Default 2000. Minimum 100. Maximum 10000 volMillisOnSnapFault int Amount of millis to sleep when receiving a snapshot fault from target.Default 100. Minimum 100. Maximum 2000 [root@kuiper3:~] |
Ensuite, vous pouvez modifier les paramètres à loisir (par exemple, modifier les IP des MDM) en utilisant l’instruction “set” à la place de “list” en y ajoutant les options adéquat. Par exemple :
1 2 |
[root@kuiper3:~] esxcli system module parameters set -m scini -p "IoctlMdmIPStr=172.16.16.221,172.16.16.222" [root@kuiper3:~] |
Pour reconfigurer complètement votre client, vous pouvez changer le GUID et repositionner les IP des nouveaux MDM… suivi d’un reboot de l’ESXi, à l’aide d’une commande de ce type :
esxcli system module parameters set -m scini -p "IoctlIniGuidStr=aaaaaaaa-bbbb-bbbb-cccc-000000000001 IoctlMdmIPStr=172.16.16.221,172.16.16.222"
Finalement, avec ce genre d’astuce, vous pouvez carrément vous passer de plugin web client pour gérer entièrement votre cluster ScaleIO. Parfait pour de la configuration batch ou juste pour s’amuser entre ami, un soir, sans but précis, alors que vous cherchiez un chemin… que jamais vous n’avez trouvé :)