summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* license: add licensing and copyright filesPrasanna Kumar Kalever2017-02-083-1/+505
| | | | | | patch also does minor correction in package name. Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
* build: fix minor warningsPrasanna Kumar Kalever2017-02-087-66/+161
| | | | | | | mostly uninitialized use of variables. check return values from function calls. Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
* build: add uuid and pthread libraries to dependency listPrasanna Kumar Kalever2017-02-073-7/+18
| | | | Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
* gfapi: unify calls to glfs_init and friendsPrasanna Kumar Kalever2017-02-073-28/+11
| | | | | | | There were two glfs_init(and friends) invocations per op (create & delete). This patch just unifies those calls (since they anyway belong to same volume) Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
* gluster-block: migrate build to libtoolz and create rpmPrasanna Kumar Kalever2017-02-0724-225/+484
| | | | | | | | | | | | | | | | | | | | | | | | | | Till now we had simple makefile for checking dependencies and building. Using libtoolz will give more control on dependency checks and flexibility. This patch also introduce rpm build feature. Compiling: $ ./autogen.sh $ ./configure $ make -j $ make install Building RPMS: $ make rpms Running: $ systemctl start gluster-blockd.service Using CLI: $ gluster-block help Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
* cli: deprecated getopts_long usagePrasanna Kumar Kalever2017-02-054-179/+314
| | | | | | | | | | | | | | | | | | | deprecated getopts as to eliminate use of '--' with command line options The new usage looks like: gluster-block (Version 0.1) create <name> Create the gluster block volserver [gluster-node] node addr from gluster pool(def: localhost) size <size> block storage size in KiB|MiB|GiB|TiB.. mpath <count> multi path requirement for high availablity servers [<IP1,IP2,IP3...>] block servers, clubbed with any option list List available gluster blocks info <name> Details about gluster block modify <resize|auth> Modify the metadata delete <name> Delete the gluster block volume <vol> gluster volume name Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
* gluster-block: refresh loggingPrasanna Kumar Kalever2017-02-059-289/+382
| | | | | | | | add more meaningful log messages minor code changes such as renaming, indentation and et cetera. Signed-off-by: Pranith Kumar Karampuri <pkarampu@redhat.com> Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
* gluster-block: walk through the cleanupsPrasanna Kumar Kalever2017-01-307-357/+427
| | | | | | | better naming of variables and functions, variable initialization, also fix few leaks Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
* gluster-block: redirecting logs to respective filesPrasanna Kumar Kalever2017-01-305-96/+149
| | | | | | | | | | | now that we have various components, it make more sense to maintain individual logs: gluster-blockd -> /var/log/gluster-block/gluster-blockd.log gluster-block -> /var/log/gluster-block/gluster-block-cli.log gfapi related -> /var/log/gluster-block/gluster-block-gfapi.log Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
* gluster-blockd: introduce rewind on partial successPrasanna Kumar Kalever2017-01-304-110/+145
| | | | | | | This patch also brings changes in the info output. It adds BLOCK config hosts in the output. Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
* gluster-block: do not need --block-host option for list | info |deletePrasanna Kumar Kalever2017-01-305-73/+70
| | | | | | From now we read the block-hosts from journal i.e targets meta file. Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
* gluster-blockd: consider spare nodes to satisfy the multipath requestPrasanna Kumar Kalever2017-01-309-79/+229
| | | | | | | | | | | In case if number of block hosts are more than the multipath request, consider that spare nodes to satify the request. Lets say we need multipath of 3, but the admin provides 5 block-hosts. If any of the node fail to configure target from first three, then consider configuring fourth node to satify the HA request. Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
* gluster-block: clean block_exec procedurePrasanna Kumar Kalever2017-01-307-180/+11
| | | | | | | | This was a hack to implement list and info commands, now that both list and info reads the metadata from the volume, we don't need block_exec anymore. Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
* gluster-block: list routine gets data from volumePrasanna Kumar Kalever2017-01-301-42/+52
| | | | | | | From now list command won't execute on remote machines, rather readdir from '/block-meta/' dir Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
* gluster-block: info routine gets data from volumePrasanna Kumar Kalever2017-01-301-29/+12
| | | | | | | From now info command won't execute on remote machines, rather reads it from '/block-meta/*blockname*' i.e block journal Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
* gluster-blockd: implement transaction frameworkPrasanna Kumar Kalever2017-01-309-52/+422
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch introduce the transaction locking also, start maintaining meta data journaling per block Every request is follows transaction, at the start of any transaction we take blocking lock on "/block-meta/meta.lock" file and at the end we unlock. Meanwhile while, when the transaction is in progress we do journaling, while performing series of operations, used for future purposes and roll backing. A sample journal file looks like: $ cat /mnt/block-meta/LUN1 GBID: xyz-abc SIZE : 5GiB HA: 3 ENTRYCREATE: INPROGRESS ENTRYCREATE: SUCCESS NODE1: INPROGRESS NODE2: INPROGRESS NODE3: INPROGRESS NODE2: SUCCESS NODE3: FAIL NODE1: SUCCESS NODE4: INPROGRESS NODE4: SUCCESS NODE3: CLEANUPSUCCESS <EOF> Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
* gluster-blockd: free rpc replyPrasanna Kumar Kalever2017-01-301-46/+80
| | | | Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
* gluster-block: code refactorPrasanna Kumar Kalever2017-01-305-750/+281
| | | | Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
* gluster-block: support multiple block-hostPrasanna Kumar Kalever2017-01-302-19/+131
| | | | Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
* gluster-block: add list and info rpcPrasanna Kumar Kalever2017-01-305-30/+79
| | | | Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
* gluster-block: add delete rpcPrasanna Kumar Kalever2017-01-309-56/+645
| | | | Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
* gluster-block: listen on unix and inetPrasanna Kumar Kalever2017-01-3010-102/+485
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | from now We basically have 2 RPC connections, 1. Between gluster block CLI and local gluster-blockd This connection is basically UNIX/local netid ,listening on /var/run/gluster-blockd.socket file. The CLI always Send/Receive the commands to/from the local gluster-blockd via local rpc. 2. Between gluster-blockd's, i.e local (to cli) gluster-blockd and the gluster-blockd's running on remote(blockhost) This is the tcp connection. The rpc requests are listening on 24006 Also from now gluster-blockd is multi threaded (As of now 2 threads) Lets consider the Create Request to understand what each thread solves Thread1 (THE CLI THREAD) * Listening on local RPC * Generate the GBID (UUID) and create the entry with name GBID in the given volume with a requested size. * And Send the Configuration requests to remote hosts, waits for the replies (HINt: after this point Read Thread2 and come back) * Return to CLI. Thread 2 (THE SERVER THREAD) * Listens on 24006 * On Receiving an event, read the structure. * Executes the required "targetcli bla bla bla" command locally * Fills the command exitcode and the output in the RPC reply structure and send reply Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
* gluster-blockd: add systemd unit filePrasanna Kumar Kalever2017-01-162-3/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | starting gluster-blockd: $ make install $ systemctl daemon-reload $ systemctl start gluster-blockd.service checking status: $ systemctl status gluster-blockd.service ● gluster-blockd.service - Gluster block storage utility Loaded: loaded (gluster-blockd.service; disabled; vendor preset: disabled) Active: active (running) since Mon 01-16 17:53:23 IST; 3min 42s ago Main PID: 27552 (gluster-blockd) Tasks: 1 (limit: 512) CGroup: /system.slice/gluster-blockd.service └─27552 /usr/local/sbin/gluster-blockd Jan 16 17:53:23 local systemd[1]: Started Gluster block storage utility. gluster-blockd.service inturn brings below services: 1. rpcbind.service 2. target.service and 3. tcmu-runner.service In order. Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
* gluster-blockd: daemonize the utilityPrasanna Kumar Kalever2017-01-1612-482/+328
| | | | | | | | | | | | | | | | | this patch, deprecate ssh way of communicating between server nodes/pods Reason: ssh way is hard to be accepted in container world (Kube). An another option kubeExec way seems to be a bit weird, to have uniform way of communication in container and non container worlds, we prefer RPC. From now we communicate via RPC, using a static port 24009 Hence, we have two components, server component -> gluster-blockd (daemon) client component -> gluster-block (cli) Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
* gluster-block: fix random issuesPrasanna Kumar Kalever2017-01-111-6/+16
| | | | | | | | | 1. create backstores with unique wwn across nodes which are multipath 2. remove node identity in the iqn naming to keep it unique across the multipath nodes 3. save target configuration after deleting the backstores and LUN's Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
* Add README docPrasanna Kumar Kalever2016-12-261-0/+252
|
* gluster-block: Improve error loggingPrasanna Kumar Kalever2016-12-243-21/+105
| | | | | | This also include few other cosmic changes Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
* gluster-block: Initial CommitPrasanna Kumar Kalever2016-12-239-0/+1533
gluster block storage CLI. As of now, gluster-block is capable of creating tcmu based gluster block devices, across multiple nodes. All you need is a gluster volume (on one set of nodes) and tcmu-runner (https://github.com/open-iscsi/tcmu-runner) running on same(as gluster) or different set of nodes. From an another (or same) node where gluster-block is installed you can create iSCSI based gluster block devices. What it can do ? -------------- 1. create a file (name uuid) in the gluster volume. 2. create the iSCSI LUN and export the target via tcmu-runner in multiple nodes (--block-host IP1,IP2 ...) 3. list the available LUN's across multiple nodes. 4. get info about a LUN across multiple nodes. 5. delete a given LUN across all given nodes. $ gluster-block --help gluster-block (Version 0.1) -c, --create <name> Create the gluster block -v, --volume <vol> gluster volume name -h, --host <gluster-node> node addr from gluster pool -s, --size <size> block storage size in KiB|MiB|GiB|TiB.. -l, --list List available gluster blocks -i, --info <name> Details about gluster block -m, --modify <RESIZE|AUTH> Modify the metadata -d, --delete <name> Delete the gluster block [-b, --block-host <IP1,IP2,IP3...>] block servers, clubbed with any option Typically gluster-block, gluster volume and tcmu-runner can coexist on single set of nodes/node or can be split across different set of nodes. Install: ------- $ make -j install (hopefully that should correct you.) Points to remember: ------------------ 1. setup gluster volume 2. run tcmu-runner service Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>