{"id":1071,"date":"2011-07-29T15:24:15","date_gmt":"2011-07-29T13:24:15","guid":{"rendered":"http:\/\/oldblogs.uct.ac.za\/blog\/big-bytes\/2011\/07\/29\/lusting-after-glusterfs"},"modified":"2015-08-14T13:23:18","modified_gmt":"2015-08-14T11:23:18","slug":"lusting-after-glusterfs","status":"publish","type":"post","link":"https:\/\/ucthpc.uct.ac.za\/index.php\/2011\/07\/29\/lusting-after-glusterfs\/","title":{"rendered":"Lusting after GlusterFS"},"content":{"rendered":"<p style=\"margin-bottom: 0cm;\">GlusterFS is an open source,\r\ndistributed file system capable of scaling to several petabytes and\r\nhandling thousands of clients. The HPC team at UCT had some time to\r\nplay and implement Gluster. The idea behind Gluster is to scale the\r\navailable space of servers into a pool which can be used to store\r\ndata of (n)size. A general first impression of Gluster was the\r\nimpressive CLI with very simple execution commands. On a more\r\ntechnical angle, Gluster is the only distributed file system that I\r\nknow which has no requirement for metadata servers \/ chunk servers or\r\nlogger servers.<\/p>\r\n<p style=\"margin-bottom: 0cm;\">The architecture aggregates its storage\r\ninto a global namespace. Gluster makes use of the FUSE (Filesystem in\r\nUserspace ) module which allows for non-privileged users to create\r\ntheir own file systems.<\/p>\r\n<p style=\"margin-bottom: 0cm;\">Configuration commenced by creating a\r\ndistributed striped volume across 8 servers with a TCP, 1gigE network.\r\nThe internal disks which are mirrored. This is a good thing as the\r\ndistributed striped volume has no redundancy.<\/p>\r\n<p style=\"margin-bottom: 0cm;\"><\/p>\r\n<p style=\"margin-bottom: 0cm;\"><strong>Write speeds\r\n<\/strong><\/p>\r\n<p style=\"margin-bottom: 0cm;\"><span style=\"font-size: xx-small;\">dd if=\/dev\/zero\r\nof=\/scratch01\/dd-test.dd bs=10235\r\n<\/span><\/p>\r\n<p style=\"margin-bottom: 0cm;\"><span style=\"font-size: xx-small;\">47286+0 records in\r\n<\/span><\/p>\r\n<p style=\"margin-bottom: 0cm;\"><span style=\"font-size: xx-small;\">47286+0 records out\r\n<\/span><\/p>\r\n<p style=\"margin-bottom: 0cm;\"><span style=\"font-size: xx-small;\">483972210 bytes (484 MB) copied,\r\n4.90815 seconds, 98.6 MB\/s\r\n<\/span><\/p>\r\n<p style=\"margin-bottom: 0cm;\"><strong>Read speeds<\/strong><\/p>\r\n<p style=\"margin-bottom: 0cm;\"><span style=\"font-size: xx-small;\">dd if=\/scratch01\/dd-test.dd of=\/dev\/null<\/span><\/p>\r\n<p style=\"margin-bottom: 0cm;\"><span style=\"font-size: xx-small;\">349409+0 records in\r\n<\/span><\/p>\r\n<p style=\"margin-bottom: 0cm;\"><span style=\"font-size: xx-small;\">349408+0 records out\r\n<\/span><\/p>\r\n<p style=\"margin-bottom: 0cm;\"><span style=\"font-size: xx-small;\">178896896 bytes (179 MB) copied,\r\n4.99041 seconds, 35.8 MB\/s\r\n<\/span><\/p>\r\n<p style=\"margin-bottom: 0cm;\"><\/p>\r\n<p style=\"margin-bottom: 0cm;\">One of the reasons why the read speed\r\nis less than the write speed was caused by a bug in Gluster which we\r\nhave identified and submitted to Gluster Dev support <a title=\"Bug Report\" href=\"http:\/\/bugs.gluster.com\/show_bug.cgi?id=3253\">here<\/a> and they in return\r\nhave released a fix for it <a title=\"Solution\" href=\"http:\/\/oldblogs.uct.ac.za\/blog\/big-bytes\/2011\/07\/29\/lusting-after-glusterfs#change,111\">here<\/a>.<\/p>\r\n<p style=\"margin-bottom: 0cm;\">The bug surfaced when\r\ncreating a stripe volume and data written to the FUSE mount was read\r\nback in binary format. Using a tool called <strong>\u201cod\u201d<\/strong> with the <strong>\"-x\"<\/strong> option we were able to\r\nidentify the inconsistencies and reported the bug to Gluster. The fix\r\nhas been incorporated into the next release Gluster 3.3.The workaround was to disable the\r\nperformance.quick-read setting under the volume being accessed.<\/p>\r\n<p style=\"margin-bottom: 0cm;\">To\r\napply the workaround <strong>\u201c gluster volume set &lt;vol_name&gt;\r\nperformance.quick-read off \u201c<\/strong> . However this may be the reason for\r\nthe slower read speed we receive when reading data from the FUSE\r\nmount into \/dev\/null. We will update this blog with a post stripe.c\r\nfix update and enable the quick read option. This option is enabled\r\nby default when creating a volume.<\/p>","protected":false},"excerpt":{"rendered":"<p>GlusterFS is an open source,<br \/>\ndistributed file system capable of scaling to several petabytes and<br \/>\nhandling thousands of clients. The HPC team at UCT had some time to<br \/>\nplay and implement Gluster. The idea behind Gluster is to scale the<br \/>\navailable space of servers into a pool which can be used to store<br \/>\ndata of (n)size.  A general first impression of Gluster was the<br \/>\nimpressive CLI with very simple execution commands. On a more<br \/>\ntechnical angle, Gluster is the only distributed file system that I<br \/>\nknow which has no requirement for metadata servers \/ chunk servers or<br \/>\nlogger servers.\n<\/p>\n<p>The architecture aggregates its storage<br \/>\ninto a global namespace. Gluster makes use of the FUSE (Filesystem in<br \/>\nUserspace ) module which allows for non-privileged users to create<br \/>\ntheir own file systems.\n<\/p>\n<p>Configuration commenced by creating a<br \/>\ndistributed striped volume across 8 servers with a TCP, 1gigE network.<br \/>\nThe internal disks which are mirrored. This is a good thing as the<br \/>\ndistributed striped volume has no redundancy.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Write speeds<br \/>\n<\/strong><\/p>\n<p><span>dd if=\/dev\/zero<br \/>\nof=\/scratch01\/dd-test.dd bs=10235<br \/>\n<\/span><\/p>\n<p><span>47286+0 records in<br \/>\n<\/span><\/p>\n<p><span>47286+0 records out<br \/>\n<\/span><\/p>\n<p><span>483972210 bytes (484 MB) copied,<br \/>\n4.90815 seconds, 98.6 MB\/s<br \/>\n<\/span><\/p>\n<p><strong>Read speeds<\/strong><\/p>\n<p><span>dd if=\/scratch01\/dd-test.dd of=\/dev\/null<\/span><\/p>\n<p><span>349409+0 records in<br \/>\n<\/span><\/p>\n<p><span>349408+0 records out<br \/>\n<\/span><\/p>\n<p><span>178896896 bytes (179 MB) copied,<br \/>\n4.99041 seconds, 35.8 MB\/s<br \/>\n<\/span><\/p>\n<p>&nbsp;<\/p>\n<p>One of the reasons why the read speed<br \/>\nis less than the write speed was caused by a bug in Gluster which we<br \/>\nhave identified and submitted to Gluster Dev support <a href=\"http:\/\/bugs.gluster.com\/show_bug.cgi?id=3253\" target=\"_blank\" title=\"Bug Report\">here<\/a> and they in return<br \/>\nhave released a fix for it <a href=\"http:\/\/oldblogs.uct.ac.za\/blog\/big-bytes#change,111\" target=\"_blank\" title=\"Solution\">here<\/a>. <\/p>\n<p>The bug surfaced when<br \/>\ncreating a stripe volume and data written to the FUSE mount was read<br \/>\nback in binary format. Using a tool called <strong>&ldquo;od&rdquo;<\/strong> with the <strong>&#8220;-x&#8221;<\/strong> option we were able to<br \/>\nidentify the inconsistencies and reported the bug to Gluster. The fix<br \/>\nhas been incorporated into the next release Gluster 3.3.The workaround was to disable the<br \/>\nperformance.quick-read setting under the volume being accessed. <\/p>\n<p>To<br \/>\napply the workaround <strong>&ldquo; gluster volume set &lt;vol_name&gt;<br \/>\nperformance.quick-read off &ldquo;<\/strong> . However this may be the reason for<br \/>\nthe slower read speed we receive when reading data  from the FUSE<br \/>\nmount into \/dev\/null. We will update this blog with a post stripe.c<br \/>\nfix update and enable the quick read option. This option is enabled<br \/>\nby default when creating a volume. <\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[4],"tags":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Lusting after GlusterFS - UCT HPC<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/ucthpc.uct.ac.za\/index.php\/2011\/07\/29\/lusting-after-glusterfs\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Lusting after GlusterFS - UCT HPC\" \/>\n<meta property=\"og:description\" content=\"GlusterFS is an open source, distributed file system capable of scaling to several petabytes and handling thousands of clients. The HPC team at UCT had some time to play and implement Gluster. The idea behind Gluster is to scale the available space of servers into a pool which can be used to store data of (n)size. A general first impression of Gluster was the impressive CLI with very simple execution commands. On a more technical angle, Gluster is the only distributed file system that I know which has no requirement for metadata servers \/ chunk servers or logger servers.   The architecture aggregates its storage into a global namespace. Gluster makes use of the FUSE (Filesystem in Userspace ) module which allows for non-privileged users to create their own file systems.   Configuration commenced by creating a distributed striped volume across 8 servers with a TCP, 1gigE network. The internal disks which are mirrored. This is a good thing as the distributed striped volume has no redundancy.&nbsp;Write speeds   dd if=\/dev\/zero of=\/scratch01\/dd-test.dd bs=10235  47286+0 records in  47286+0 records out  483972210 bytes (484 MB) copied, 4.90815 seconds, 98.6 MB\/s   Read speedsdd if=\/scratch01\/dd-test.dd of=\/dev\/null 349409+0 records in  349408+0 records out  178896896 bytes (179 MB) copied, 4.99041 seconds, 35.8 MB\/s &nbsp;  One of the reasons why the read speed is less than the write speed was caused by a bug in Gluster which we have identified and submitted to Gluster Dev support here and they in return have released a fix for it here. The bug surfaced when creating a stripe volume and data written to the FUSE mount was read back in binary format. Using a tool called &ldquo;od&rdquo; with the &quot;-x&quot; option we were able to identify the inconsistencies and reported the bug to Gluster. The fix has been incorporated into the next release Gluster 3.3.The workaround was to disable the performance.quick-read setting under the volume being accessed. To apply the workaround &ldquo; gluster volume set &lt;vol_name&gt; performance.quick-read off &ldquo; . However this may be the reason for the slower read speed we receive when reading data from the FUSE mount into \/dev\/null. We will update this blog with a post stripe.c fix update and enable the quick read option. This option is enabled by default when creating a volume.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/ucthpc.uct.ac.za\/index.php\/2011\/07\/29\/lusting-after-glusterfs\/\" \/>\n<meta property=\"og:site_name\" content=\"UCT HPC\" \/>\n<meta property=\"article:published_time\" content=\"2011-07-29T13:24:15+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2015-08-14T11:23:18+00:00\" \/>\n<meta name=\"author\" content=\"Timothy Carr\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Timothy Carr\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/ucthpc.uct.ac.za\/index.php\/2011\/07\/29\/lusting-after-glusterfs\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/ucthpc.uct.ac.za\/index.php\/2011\/07\/29\/lusting-after-glusterfs\/\"},\"author\":{\"name\":\"Timothy Carr\",\"@id\":\"https:\/\/ucthpc.uct.ac.za\/#\/schema\/person\/41f6cd039836d7741f2b82a7b7cfe8d0\"},\"headline\":\"Lusting after GlusterFS\",\"datePublished\":\"2011-07-29T13:24:15+00:00\",\"dateModified\":\"2015-08-14T11:23:18+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/ucthpc.uct.ac.za\/index.php\/2011\/07\/29\/lusting-after-glusterfs\/\"},\"wordCount\":382,\"publisher\":{\"@id\":\"https:\/\/ucthpc.uct.ac.za\/#organization\"},\"articleSection\":[\"hpc\"],\"inLanguage\":\"en-ZA\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/ucthpc.uct.ac.za\/index.php\/2011\/07\/29\/lusting-after-glusterfs\/\",\"url\":\"https:\/\/ucthpc.uct.ac.za\/index.php\/2011\/07\/29\/lusting-after-glusterfs\/\",\"name\":\"Lusting after GlusterFS - UCT HPC\",\"isPartOf\":{\"@id\":\"https:\/\/ucthpc.uct.ac.za\/#website\"},\"datePublished\":\"2011-07-29T13:24:15+00:00\",\"dateModified\":\"2015-08-14T11:23:18+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/ucthpc.uct.ac.za\/index.php\/2011\/07\/29\/lusting-after-glusterfs\/#breadcrumb\"},\"inLanguage\":\"en-ZA\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/ucthpc.uct.ac.za\/index.php\/2011\/07\/29\/lusting-after-glusterfs\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/ucthpc.uct.ac.za\/index.php\/2011\/07\/29\/lusting-after-glusterfs\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/ucthpc.uct.ac.za\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Lusting after GlusterFS\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/ucthpc.uct.ac.za\/#website\",\"url\":\"https:\/\/ucthpc.uct.ac.za\/\",\"name\":\"UCT HPC\",\"description\":\"University of Cape Town High Performance Computing\",\"publisher\":{\"@id\":\"https:\/\/ucthpc.uct.ac.za\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/ucthpc.uct.ac.za\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-ZA\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/ucthpc.uct.ac.za\/#organization\",\"name\":\"University of Cape Town High Performance Computing\",\"url\":\"https:\/\/ucthpc.uct.ac.za\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-ZA\",\"@id\":\"https:\/\/ucthpc.uct.ac.za\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/ucthpc.uct.ac.za\/wp-content\/uploads\/2015\/09\/logocircless.png\",\"contentUrl\":\"https:\/\/ucthpc.uct.ac.za\/wp-content\/uploads\/2015\/09\/logocircless.png\",\"width\":450,\"height\":423,\"caption\":\"University of Cape Town High Performance Computing\"},\"image\":{\"@id\":\"https:\/\/ucthpc.uct.ac.za\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/ucthpc.uct.ac.za\/#\/schema\/person\/41f6cd039836d7741f2b82a7b7cfe8d0\",\"name\":\"Timothy Carr\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-ZA\",\"@id\":\"https:\/\/ucthpc.uct.ac.za\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/7e94dcf3a408e6ada008042fc29d4b15?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/7e94dcf3a408e6ada008042fc29d4b15?s=96&d=mm&r=g\",\"caption\":\"Timothy Carr\"},\"sameAs\":[\"http:\/\/ucthpc.uct.ac.za\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Lusting after GlusterFS - UCT HPC","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/ucthpc.uct.ac.za\/index.php\/2011\/07\/29\/lusting-after-glusterfs\/","og_locale":"en_US","og_type":"article","og_title":"Lusting after GlusterFS - UCT HPC","og_description":"GlusterFS is an open source, distributed file system capable of scaling to several petabytes and handling thousands of clients. The HPC team at UCT had some time to play and implement Gluster. The idea behind Gluster is to scale the available space of servers into a pool which can be used to store data of (n)size. A general first impression of Gluster was the impressive CLI with very simple execution commands. On a more technical angle, Gluster is the only distributed file system that I know which has no requirement for metadata servers \/ chunk servers or logger servers.   The architecture aggregates its storage into a global namespace. Gluster makes use of the FUSE (Filesystem in Userspace ) module which allows for non-privileged users to create their own file systems.   Configuration commenced by creating a distributed striped volume across 8 servers with a TCP, 1gigE network. The internal disks which are mirrored. This is a good thing as the distributed striped volume has no redundancy.&nbsp;Write speeds   dd if=\/dev\/zero of=\/scratch01\/dd-test.dd bs=10235  47286+0 records in  47286+0 records out  483972210 bytes (484 MB) copied, 4.90815 seconds, 98.6 MB\/s   Read speedsdd if=\/scratch01\/dd-test.dd of=\/dev\/null 349409+0 records in  349408+0 records out  178896896 bytes (179 MB) copied, 4.99041 seconds, 35.8 MB\/s &nbsp;  One of the reasons why the read speed is less than the write speed was caused by a bug in Gluster which we have identified and submitted to Gluster Dev support here and they in return have released a fix for it here. The bug surfaced when creating a stripe volume and data written to the FUSE mount was read back in binary format. Using a tool called &ldquo;od&rdquo; with the \"-x\" option we were able to identify the inconsistencies and reported the bug to Gluster. The fix has been incorporated into the next release Gluster 3.3.The workaround was to disable the performance.quick-read setting under the volume being accessed. To apply the workaround &ldquo; gluster volume set &lt;vol_name&gt; performance.quick-read off &ldquo; . However this may be the reason for the slower read speed we receive when reading data from the FUSE mount into \/dev\/null. We will update this blog with a post stripe.c fix update and enable the quick read option. This option is enabled by default when creating a volume.","og_url":"https:\/\/ucthpc.uct.ac.za\/index.php\/2011\/07\/29\/lusting-after-glusterfs\/","og_site_name":"UCT HPC","article_published_time":"2011-07-29T13:24:15+00:00","article_modified_time":"2015-08-14T11:23:18+00:00","author":"Timothy Carr","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Timothy Carr","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/ucthpc.uct.ac.za\/index.php\/2011\/07\/29\/lusting-after-glusterfs\/#article","isPartOf":{"@id":"https:\/\/ucthpc.uct.ac.za\/index.php\/2011\/07\/29\/lusting-after-glusterfs\/"},"author":{"name":"Timothy Carr","@id":"https:\/\/ucthpc.uct.ac.za\/#\/schema\/person\/41f6cd039836d7741f2b82a7b7cfe8d0"},"headline":"Lusting after GlusterFS","datePublished":"2011-07-29T13:24:15+00:00","dateModified":"2015-08-14T11:23:18+00:00","mainEntityOfPage":{"@id":"https:\/\/ucthpc.uct.ac.za\/index.php\/2011\/07\/29\/lusting-after-glusterfs\/"},"wordCount":382,"publisher":{"@id":"https:\/\/ucthpc.uct.ac.za\/#organization"},"articleSection":["hpc"],"inLanguage":"en-ZA"},{"@type":"WebPage","@id":"https:\/\/ucthpc.uct.ac.za\/index.php\/2011\/07\/29\/lusting-after-glusterfs\/","url":"https:\/\/ucthpc.uct.ac.za\/index.php\/2011\/07\/29\/lusting-after-glusterfs\/","name":"Lusting after GlusterFS - UCT HPC","isPartOf":{"@id":"https:\/\/ucthpc.uct.ac.za\/#website"},"datePublished":"2011-07-29T13:24:15+00:00","dateModified":"2015-08-14T11:23:18+00:00","breadcrumb":{"@id":"https:\/\/ucthpc.uct.ac.za\/index.php\/2011\/07\/29\/lusting-after-glusterfs\/#breadcrumb"},"inLanguage":"en-ZA","potentialAction":[{"@type":"ReadAction","target":["https:\/\/ucthpc.uct.ac.za\/index.php\/2011\/07\/29\/lusting-after-glusterfs\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/ucthpc.uct.ac.za\/index.php\/2011\/07\/29\/lusting-after-glusterfs\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/ucthpc.uct.ac.za\/"},{"@type":"ListItem","position":2,"name":"Lusting after GlusterFS"}]},{"@type":"WebSite","@id":"https:\/\/ucthpc.uct.ac.za\/#website","url":"https:\/\/ucthpc.uct.ac.za\/","name":"UCT HPC","description":"University of Cape Town High Performance Computing","publisher":{"@id":"https:\/\/ucthpc.uct.ac.za\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/ucthpc.uct.ac.za\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-ZA"},{"@type":"Organization","@id":"https:\/\/ucthpc.uct.ac.za\/#organization","name":"University of Cape Town High Performance Computing","url":"https:\/\/ucthpc.uct.ac.za\/","logo":{"@type":"ImageObject","inLanguage":"en-ZA","@id":"https:\/\/ucthpc.uct.ac.za\/#\/schema\/logo\/image\/","url":"https:\/\/ucthpc.uct.ac.za\/wp-content\/uploads\/2015\/09\/logocircless.png","contentUrl":"https:\/\/ucthpc.uct.ac.za\/wp-content\/uploads\/2015\/09\/logocircless.png","width":450,"height":423,"caption":"University of Cape Town High Performance Computing"},"image":{"@id":"https:\/\/ucthpc.uct.ac.za\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/ucthpc.uct.ac.za\/#\/schema\/person\/41f6cd039836d7741f2b82a7b7cfe8d0","name":"Timothy Carr","image":{"@type":"ImageObject","inLanguage":"en-ZA","@id":"https:\/\/ucthpc.uct.ac.za\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/7e94dcf3a408e6ada008042fc29d4b15?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/7e94dcf3a408e6ada008042fc29d4b15?s=96&d=mm&r=g","caption":"Timothy Carr"},"sameAs":["http:\/\/ucthpc.uct.ac.za"]}]}},"_links":{"self":[{"href":"https:\/\/ucthpc.uct.ac.za\/index.php\/wp-json\/wp\/v2\/posts\/1071"}],"collection":[{"href":"https:\/\/ucthpc.uct.ac.za\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ucthpc.uct.ac.za\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ucthpc.uct.ac.za\/index.php\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/ucthpc.uct.ac.za\/index.php\/wp-json\/wp\/v2\/comments?post=1071"}],"version-history":[{"count":2,"href":"https:\/\/ucthpc.uct.ac.za\/index.php\/wp-json\/wp\/v2\/posts\/1071\/revisions"}],"predecessor-version":[{"id":2221,"href":"https:\/\/ucthpc.uct.ac.za\/index.php\/wp-json\/wp\/v2\/posts\/1071\/revisions\/2221"}],"wp:attachment":[{"href":"https:\/\/ucthpc.uct.ac.za\/index.php\/wp-json\/wp\/v2\/media?parent=1071"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ucthpc.uct.ac.za\/index.php\/wp-json\/wp\/v2\/categories?post=1071"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ucthpc.uct.ac.za\/index.php\/wp-json\/wp\/v2\/tags?post=1071"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}