{"id":32670,"date":"2024-04-22T09:15:13","date_gmt":"2024-04-22T07:15:13","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/?p=32670"},"modified":"2024-04-23T10:59:52","modified_gmt":"2024-04-23T08:59:52","slug":"another-file-system-for-linux-bcachefs-3-mirroring-replicas","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/another-file-system-for-linux-bcachefs-3-mirroring-replicas\/","title":{"rendered":"Another file system for Linux: bcachefs (3) \u2013 Mirroring\/Replicas"},"content":{"rendered":"\n<p>This is the third post in this little series about <a href=\"https:\/\/bcachefs.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">bcachefs<\/a>. The <a href=\"https:\/\/www.dbi-services.com\/blog\/another-file-system-for-linux-bcachefs-1-basics\/\" target=\"_blank\" rel=\"noreferrer noopener\">first post was all about the basics<\/a> while <a href=\"https:\/\/www.dbi-services.com\/blog\/another-file-system-for-linux-bcachefs-2-multi-device-file-systems\/\" target=\"_blank\" rel=\"noreferrer noopener\">the second post introduced bcachefs over multiple devices<\/a>. What we did not discuss so far is, what bcache has to offer when it comes to mirroring. By default bcachefs stripes your data across all the devices in the file systems. As devices do not need to be of the same size, the one(s) with the most free space will be favored. The goal of this is, that all devices fill up at the same pace. This usually does not protect you from a failure of a device, except you lose a device which does not contain any data.<\/p>\n\n\n\n<p>To address this, bcachefs comes with a concept which is called &#8220;replication&#8221;. You can think of replication like a <a href=\"https:\/\/www.dbi-services.com\/blog\/another-file-system-for-linux-bcachefs-1-basics\/\" target=\"_blank\" rel=\"noreferrer noopener\">RAID 1\/10<\/a>, which means mirroring and striping. Given the list of available devices in the setup we&#8217;re currently using we have enough devices to play with this:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\ntumbleweed:~ $ lsblk | grep -w &quot;4G&quot;\n\u2514\u2500vda3 254:3    0  1.4G  0 part &#x5B;SWAP]\nvdb    254:16   0    4G  0 disk \nvdc    254:32   0    4G  0 disk \nvdd    254:48   0    4G  0 disk \nvde    254:64   0    4G  0 disk \nvdf    254:80   0    4G  0 disk \nvdg    254:96   0    4G  0 disk \n<\/pre><\/div>\n\n\n<p>Let&#8217;s assume we want to have a 4gb file system but we also want to have the data mirrored to another device, just in case we lose one. With bcachefs this can easily be done like this:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\ntumbleweed:~ $ bcachefs format --force --replicas=2 \/dev\/vdb \/dev\/vdc\ntumbleweed:~ $ mount -t bcachefs \/dev\/vdb:\/dev\/vdc \/mnt\/dummy\/\n<\/pre><\/div>\n\n\n<p>As data is now mirrored this should result in a file system of around 4gb, instead of 8gb:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\ntumbleweed:~ $ df -h | grep dummy\n\/dev\/vdb:\/dev\/vdc  7.3G  4.0M  7.2G   1% \/mnt\/dummy\n<\/pre><\/div>\n\n\n<p>It does not, so what could be the reason for this? Looking at the usage of the file system we see this:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1]; title: ; notranslate\" title=\"\">\ntumbleweed:~ $ bcachefs fs usage \/mnt\/dummy\/\nFilesystem: d8a3d289-bb0f-4df0-b15c-7bb4ada51073\nSize:                     7902739968\nUsed:                       78118912\nOnline reserved:                   0\n\nData type       Required\/total  Durability    Devices\nbtree:          1\/2             2             &#x5B;vdb vdc]            4194304\n\n(no label) (device 0):           vdb              rw\n                                data         buckets    fragmented\n  free:                   4255907840           16235\n  sb:                        3149824              13        258048\n  journal:                  33554432             128\n  btree:                     2097152               8\n  user:                            0               0\n  cached:                          0               0\n  parity:                          0               0\n  stripe:                          0               0\n  need_gc_gens:                    0               0\n  need_discard:                    0               0\n  capacity:               4294967296           16384\n\n(no label) (device 1):           vdc              rw\n                                data         buckets    fragmented\n  free:                   4255907840           16235\n  sb:                        3149824              13        258048\n  journal:                  33554432             128\n  btree:                     2097152               8\n  user:                            0               0\n  cached:                          0               0\n  parity:                          0               0\n  stripe:                          0               0\n  need_gc_gens:                    0               0\n  need_discard:                    0               0\n  capacity:               4294967296           16384\n<\/pre><\/div>\n\n\n<p>As we currently do not have any user data in this file system, let&#8217;s write a 100MB file into it and check again how this looks like from a usage perspective:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1,5,11]; title: ; notranslate\" title=\"\">\ntumbleweed:~ $ dd if=\/dev\/zero of=\/mnt\/dummy\/dummy bs=1M count=100\n100+0 records in\n100+0 records out\n104857600 bytes (105 MB, 100 MiB) copied, 0.0294275 s, 3.6 GB\/s\ntumbleweed:~ $ ls -lha \/mnt\/dummy\/\ntotal 100M\ndrwxr-xr-x 3 root root    0 Apr 17 17:04 .\ndr-xr-xr-x 1 root root   10 Apr 17 10:41 ..\n-rw-r--r-- 1 root root 100M Apr 17 17:05 dummy\ndrwx------ 2 root root    0 Apr 17 16:54 lost+found\ntumbleweed:~ $ df -h | grep dummy\n\/dev\/vdb:\/dev\/vdc  7.3G  207M  7.0G   3% \/mnt\/dummy\n<\/pre><\/div>\n\n\n<p>So instead of using 100MB on disk, we&#8217;re actually using 200MB, so this makes sense again, you just need to be aware of how the numbers are presented and how you come to this disk usage. Anyway, let&#8217;s have a look at the disk usage as the &#8220;bcachefs&#8221; utility reports it once more:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1,17,31]; title: ; notranslate\" title=\"\">\ntumbleweed:~ $ bcachefs fs usage \/mnt\/dummy\/\nFilesystem: d8a3d289-bb0f-4df0-b15c-7bb4ada51073\nSize:                     7902739968\nUsed:                      290979840\nOnline reserved:                   0\n\nData type       Required\/total  Durability    Devices\nbtree:          1\/2             2             &#x5B;vdb vdc]            7340032\nuser:           1\/2             2             &#x5B;vdb vdc]          209715200\n\n(no label) (device 0):           vdb              rw\n                                data         buckets    fragmented\n  free:                   4148953088           15827\n  sb:                        3149824              13        258048\n  journal:                  33554432             128\n  btree:                     3670016              14\n  user:                    104857600             400\n  cached:                          0               0\n  parity:                          0               0\n  stripe:                          0               0\n  need_gc_gens:                    0               0\n  need_discard:               524288               2\n  capacity:               4294967296           16384\n\n(no label) (device 1):           vdc              rw\n                                data         buckets    fragmented\n  free:                   4148953088           15827\n  sb:                        3149824              13        258048\n  journal:                  33554432             128\n  btree:                     3670016              14\n  user:                    104857600             400\n  cached:                          0               0\n  parity:                          0               0\n  stripe:                          0               0\n  need_gc_gens:                    0               0\n  need_discard:               524288               2\n  capacity:               4294967296           16384\n<\/pre><\/div>\n\n\n<p>This is telling us more or less the same: We have around 100MB of user data on each of the devices, and this 100MB of user data are spread across 400 buckets. A bucket is 512KiB bytes per default, which you can read out of the super block:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1]; title: ; notranslate\" title=\"\">\ntumbleweed:~ $ bcachefs show-super \/dev\/vdb | grep &quot;Bucket size&quot;\n  Bucket size:                              256 KiB\n  Bucket size:                              256 KiB\n<\/pre><\/div>\n\n\n<p>If you do the math: 104857600\/(512*1024) gives 200 buckets, but as we replicate every bucket we have 400. Same story here, you need to know where this 400 buckets come from to make any sense out of it.<\/p>\n\n\n\n<p>In the next post we&#8217;ll look at device labels and targets.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This is the third post in this little series about bcachefs. The first post was all about the basics while the second post introduced bcachefs over multiple devices. What we did not discuss so far is, what bcache has to offer when it comes to mirroring. By default bcachefs stripes your data across all the [&hellip;]<\/p>\n","protected":false},"author":29,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[229,198,42],"tags":[3339,73],"type_dbi":[],"class_list":["post-32670","post","type-post","status-publish","format-standard","hentry","category-database-administration-monitoring","category-database-management","category-operating-systems","tag-bcachefs","tag-linux"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Another file system for Linux: bcachefs (3) \u2013 Mirroring\/Replicas - dbi Blog<\/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:\/\/www.dbi-services.com\/blog\/another-file-system-for-linux-bcachefs-3-mirroring-replicas\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Another file system for Linux: bcachefs (3) \u2013 Mirroring\/Replicas\" \/>\n<meta property=\"og:description\" content=\"This is the third post in this little series about bcachefs. The first post was all about the basics while the second post introduced bcachefs over multiple devices. What we did not discuss so far is, what bcache has to offer when it comes to mirroring. By default bcachefs stripes your data across all the [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/another-file-system-for-linux-bcachefs-3-mirroring-replicas\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2024-04-22T07:15:13+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-04-23T08:59:52+00:00\" \/>\n<meta name=\"author\" content=\"Daniel Westermann\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@westermanndanie\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Daniel Westermann\" \/>\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:\/\/www.dbi-services.com\/blog\/another-file-system-for-linux-bcachefs-3-mirroring-replicas\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/another-file-system-for-linux-bcachefs-3-mirroring-replicas\/\"},\"author\":{\"name\":\"Daniel Westermann\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66\"},\"headline\":\"Another file system for Linux: bcachefs (3) \u2013 Mirroring\/Replicas\",\"datePublished\":\"2024-04-22T07:15:13+00:00\",\"dateModified\":\"2024-04-23T08:59:52+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/another-file-system-for-linux-bcachefs-3-mirroring-replicas\/\"},\"wordCount\":431,\"commentCount\":0,\"keywords\":[\"bcachefs\",\"Linux\"],\"articleSection\":[\"Database Administration &amp; Monitoring\",\"Database management\",\"Operating systems\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/another-file-system-for-linux-bcachefs-3-mirroring-replicas\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/another-file-system-for-linux-bcachefs-3-mirroring-replicas\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/another-file-system-for-linux-bcachefs-3-mirroring-replicas\/\",\"name\":\"Another file system for Linux: bcachefs (3) \u2013 Mirroring\/Replicas - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"datePublished\":\"2024-04-22T07:15:13+00:00\",\"dateModified\":\"2024-04-23T08:59:52+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/another-file-system-for-linux-bcachefs-3-mirroring-replicas\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/another-file-system-for-linux-bcachefs-3-mirroring-replicas\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/another-file-system-for-linux-bcachefs-3-mirroring-replicas\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Another file system for Linux: bcachefs (3) \u2013 Mirroring\/Replicas\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66\",\"name\":\"Daniel Westermann\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g\",\"caption\":\"Daniel Westermann\"},\"description\":\"Daniel Westermann is Principal Consultant and Technology Leader Open Infrastructure at dbi services. He has more than 15 years of experience in management, engineering and optimization of databases and infrastructures, especially on Oracle and PostgreSQL. Since the beginning of his career, he has specialized in Oracle Technologies and is Oracle Certified Professional 12c and Oracle Certified Expert RAC\/GridInfra. Over time, Daniel has become increasingly interested in open source technologies, becoming \u201cTechnology Leader Open Infrastructure\u201d and PostgreSQL expert. \u00a0Based on community or EnterpriseDB tools, he develops and installs complex high available solutions with PostgreSQL. He is also a certified PostgreSQL Plus 9.0 Professional and a Postgres Advanced Server 9.4 Professional. He is a regular speaker at PostgreSQL conferences in Switzerland and Europe. Today Daniel is also supporting our customers on AWS services such as AWS RDS, database migrations into the cloud, EC2 and automated infrastructure management with AWS SSM (System Manager). He is a certified AWS Solutions Architect Professional. Prior to dbi services, Daniel was Management System Engineer at LC SYSTEMS-Engineering AG in Basel. Before that, he worked as Oracle Developper &amp;\u00a0Project Manager at Delta Energy Solutions AG in Basel (today Powel AG). Daniel holds a diploma in Business Informatics (DHBW, Germany). His branch-related experience mainly covers the pharma industry, the financial sector, energy, lottery and telecommunications.\",\"sameAs\":[\"https:\/\/x.com\/westermanndanie\"],\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/daniel-westermann\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Another file system for Linux: bcachefs (3) \u2013 Mirroring\/Replicas - dbi Blog","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:\/\/www.dbi-services.com\/blog\/another-file-system-for-linux-bcachefs-3-mirroring-replicas\/","og_locale":"en_US","og_type":"article","og_title":"Another file system for Linux: bcachefs (3) \u2013 Mirroring\/Replicas","og_description":"This is the third post in this little series about bcachefs. The first post was all about the basics while the second post introduced bcachefs over multiple devices. What we did not discuss so far is, what bcache has to offer when it comes to mirroring. By default bcachefs stripes your data across all the [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/another-file-system-for-linux-bcachefs-3-mirroring-replicas\/","og_site_name":"dbi Blog","article_published_time":"2024-04-22T07:15:13+00:00","article_modified_time":"2024-04-23T08:59:52+00:00","author":"Daniel Westermann","twitter_card":"summary_large_image","twitter_creator":"@westermanndanie","twitter_misc":{"Written by":"Daniel Westermann","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/another-file-system-for-linux-bcachefs-3-mirroring-replicas\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/another-file-system-for-linux-bcachefs-3-mirroring-replicas\/"},"author":{"name":"Daniel Westermann","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66"},"headline":"Another file system for Linux: bcachefs (3) \u2013 Mirroring\/Replicas","datePublished":"2024-04-22T07:15:13+00:00","dateModified":"2024-04-23T08:59:52+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/another-file-system-for-linux-bcachefs-3-mirroring-replicas\/"},"wordCount":431,"commentCount":0,"keywords":["bcachefs","Linux"],"articleSection":["Database Administration &amp; Monitoring","Database management","Operating systems"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/another-file-system-for-linux-bcachefs-3-mirroring-replicas\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/another-file-system-for-linux-bcachefs-3-mirroring-replicas\/","url":"https:\/\/www.dbi-services.com\/blog\/another-file-system-for-linux-bcachefs-3-mirroring-replicas\/","name":"Another file system for Linux: bcachefs (3) \u2013 Mirroring\/Replicas - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2024-04-22T07:15:13+00:00","dateModified":"2024-04-23T08:59:52+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/another-file-system-for-linux-bcachefs-3-mirroring-replicas\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/another-file-system-for-linux-bcachefs-3-mirroring-replicas\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/another-file-system-for-linux-bcachefs-3-mirroring-replicas\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Another file system for Linux: bcachefs (3) \u2013 Mirroring\/Replicas"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66","name":"Daniel Westermann","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g","caption":"Daniel Westermann"},"description":"Daniel Westermann is Principal Consultant and Technology Leader Open Infrastructure at dbi services. He has more than 15 years of experience in management, engineering and optimization of databases and infrastructures, especially on Oracle and PostgreSQL. Since the beginning of his career, he has specialized in Oracle Technologies and is Oracle Certified Professional 12c and Oracle Certified Expert RAC\/GridInfra. Over time, Daniel has become increasingly interested in open source technologies, becoming \u201cTechnology Leader Open Infrastructure\u201d and PostgreSQL expert. \u00a0Based on community or EnterpriseDB tools, he develops and installs complex high available solutions with PostgreSQL. He is also a certified PostgreSQL Plus 9.0 Professional and a Postgres Advanced Server 9.4 Professional. He is a regular speaker at PostgreSQL conferences in Switzerland and Europe. Today Daniel is also supporting our customers on AWS services such as AWS RDS, database migrations into the cloud, EC2 and automated infrastructure management with AWS SSM (System Manager). He is a certified AWS Solutions Architect Professional. Prior to dbi services, Daniel was Management System Engineer at LC SYSTEMS-Engineering AG in Basel. Before that, he worked as Oracle Developper &amp;\u00a0Project Manager at Delta Energy Solutions AG in Basel (today Powel AG). Daniel holds a diploma in Business Informatics (DHBW, Germany). His branch-related experience mainly covers the pharma industry, the financial sector, energy, lottery and telecommunications.","sameAs":["https:\/\/x.com\/westermanndanie"],"url":"https:\/\/www.dbi-services.com\/blog\/author\/daniel-westermann\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/32670","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/29"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=32670"}],"version-history":[{"count":9,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/32670\/revisions"}],"predecessor-version":[{"id":32747,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/32670\/revisions\/32747"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=32670"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=32670"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=32670"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=32670"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}