{"id":51025,"date":"2025-07-29T11:14:18","date_gmt":"2025-07-29T11:14:18","guid":{"rendered":"https:\/\/www.devopsschool.com\/blog\/?p=51025"},"modified":"2025-07-30T06:50:11","modified_gmt":"2025-07-30T06:50:11","slug":"artifactory-guide-to-change-artifactory-filestore-to-aws-efs-elastic-file-system","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/artifactory-guide-to-change-artifactory-filestore-to-aws-efs-elastic-file-system\/","title":{"rendered":"Artifactory: Guide to change Artifactory filestore to AWS EFS (Elastic File System)"},"content":{"rendered":"\n<p>Here\u2019s a <strong>comprehensive, step-by-step tutorial<\/strong> for migrating or configuring <strong>JFrog Artifactory 7.117.7+ (self-hosted, Linux)<\/strong> to use <strong>AWS EFS (Elastic File System) as its filestore<\/strong>. This guide brings together all best practices from JFrog documentation, AWS, and real-world experience.<br><em>(Suitable for both single-node and HA Artifactory setups.)<\/em><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\ud83d\udfe2 <strong>JFrog Artifactory 7.117.7+ with AWS EFS: Step-by-Step Guide<\/strong><\/h1>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Step 1: Prepare Your AWS EFS<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Create an EFS File System<\/strong> in the AWS Console.<\/li>\n\n\n\n<li><strong>Create Mount Targets<\/strong> for each AZ where your Artifactory servers run.<\/li>\n\n\n\n<li>Set <strong>security group rules<\/strong>: Allow NFS (port 2049) inbound from your EC2(s).<\/li>\n\n\n\n<li><strong>Note your EFS DNS name<\/strong> (looks like <code>fs-xxxx.efs.&lt;region>.amazonaws.com<\/code>).<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Step 2: Mount EFS on Your Artifactory Server(s)<\/strong><\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Install NFS Client:<\/strong> <code>sudo apt update &amp;&amp; sudo apt install -y nfs-common # Ubuntu\/Debian # OR sudo yum install -y nfs-utils # RHEL\/CentOS\/Amazon Linux<\/code><\/li>\n\n\n\n<li><strong>Create a Mount Directory:<\/strong> <code>sudo mkdir -p \/mnt\/efs<\/code><\/li>\n\n\n\n<li><strong>Mount EFS:<\/strong> <code>sudo mount -t nfs4 -o nfsvers=4.1 fs-xxxx.efs.&lt;region>.amazonaws.com:\/ \/mnt\/efs<\/code> <em>(Replace <code>fs-xxxx...<\/code> with your EFS DNS name.)<\/em><\/li>\n\n\n\n<li><strong>Add to <code>\/etc\/fstab<\/code> for Persistent Mount:<\/strong> <code>fs-xxxx.efs.&lt;region>.amazonaws.com:\/ \/mnt\/efs nfs4 defaults,_netdev 0 0<\/code><\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Step 3: (Optional) Copy Existing Filestore Data<\/strong><\/h2>\n\n\n\n<p><em>If migrating existing artifacts:<\/em><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Stop Artifactory:<\/strong> <code>sudo systemctl stop artifactory<\/code><\/li>\n\n\n\n<li><strong>Copy data to EFS:<\/strong> <code>sudo cp -a \/opt\/jfrog\/artifactory\/var\/data\/artifactory\/filestore\/* \/mnt\/efs\/<\/code> <em>(Use <code>rsync -av<\/code> for large data or HA setups.)<\/em><\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Step 4: Configure Artifactory to Use EFS<\/strong><\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Edit the binarystore.xml file:<\/strong> <code>sudo vi \/opt\/jfrog\/artifactory\/var\/etc\/artifactory\/binarystore.xml<\/code><\/li>\n\n\n\n<li><strong>Replace the content with:<\/strong> <code>&lt;config version=\"2\"> &lt;chain template=\"file-system\"\/> &lt;provider id=\"file-system\" type=\"file-system\"> &lt;fileStoreDir>\/mnt\/efs&lt;\/fileStoreDir> &lt;\/provider> &lt;\/config><\/code> <em>If you used a subdir, use <code>\/mnt\/efs\/filestore<\/code> above and adjust the copy commands accordingly.<\/em><\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Step 5: Fix Permissions<\/strong><\/h2>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">sudo chown -R artifactory:artifactory \/mnt\/efs\n<\/code><\/span><\/pre>\n\n\n<p><em>(Repeat for <code>\/mnt\/efs\/filestore<\/code> if using a subdirectory.)<\/em><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Step 6: Start Artifactory<\/strong><\/h2>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">sudo systemctl start artifactory\nsudo systemctl status artifactory\n<\/code><\/span><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Step 7: Verify<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Check UI:<\/strong> Log in to <code>http:\/\/&lt;server-ip>:8082<\/code><\/li>\n\n\n\n<li><strong>Upload or download artifacts<\/strong> to confirm they are now stored in EFS (check files appear in <code>\/mnt\/efs<\/code>).<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Additional Best Practices &amp; Notes<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>For HA:<\/strong> All Artifactory nodes <strong>must<\/strong> mount EFS to the <em>exact same<\/em> path and share the same <code>binarystore.xml<\/code>.<\/li>\n\n\n\n<li><strong>Always backup<\/strong> your filestore and database before making changes.<\/li>\n\n\n\n<li><strong>Use NFSv4<\/strong> (EFS default) for full compatibility.<\/li>\n\n\n\n<li><strong>Monitor EFS performance<\/strong>\u2014provision throughput if needed for high load.<\/li>\n\n\n\n<li><strong>For Kubernetes:<\/strong> Use Artifactory\u2019s Helm chart and set <code>artifactory.persistence.type=file-system<\/code>, then map your PVC to EFS.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Quick Reference Table<\/strong><\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Step<\/th><th>Command\/Action<\/th><\/tr><\/thead><tbody><tr><td>Install NFS client<\/td><td><code>apt install nfs-common<\/code> or <code>yum install nfs-utils<\/code><\/td><\/tr><tr><td>Mount EFS<\/td><td><code>mount -t nfs4 ...<\/code><\/td><\/tr><tr><td>Add to fstab<\/td><td>Edit <code>\/etc\/fstab<\/code><\/td><\/tr><tr><td>Stop Artifactory<\/td><td><code>systemctl stop artifactory<\/code><\/td><\/tr><tr><td>Copy filestore<\/td><td><code>cp -a<\/code> or <code>rsync -av<\/code><\/td><\/tr><tr><td>Edit binarystore<\/td><td>Edit <code>\/opt\/jfrog\/artifactory\/var\/etc\/artifactory\/binarystore.xml<\/code><\/td><\/tr><tr><td>Fix permissions<\/td><td><code>chown -R artifactory:artifactory \/mnt\/efs<\/code><\/td><\/tr><tr><td>Start Artifactory<\/td><td><code>systemctl start artifactory<\/code><\/td><\/tr><tr><td>Verify<\/td><td>Web UI &amp; file checks<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>References<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/jfrog.com\/help\/r\/jfrog-installation-setup-documentation\/advanced-storage-options\" target=\"_blank\" rel=\"noopener\">Official: Advanced Storage Options<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/jfrog.com\/help\/r\/jfrog-installation-setup-documentation\/filestore-configuration\" target=\"_blank\" rel=\"noopener\">Official: Filestore Configuration<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/media.jfrog.com\/wp-content\/uploads\/2019\/12\/13085121\/Best_Practices_for_Managing_Your_Artifactory_Filestore_2023-compressed.pdf\" target=\"_blank\" rel=\"noopener\">Best Practices for Artifactory Filestore (JFrog Whitepaper)<\/a><\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><\/h3>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Here\u2019s a comprehensive, step-by-step tutorial for migrating or configuring JFrog Artifactory 7.117.7+ (self-hosted, Linux) to use AWS EFS (Elastic File System) as its filestore. This guide brings together all best&#8230; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_joinchat":[],"footnotes":""},"categories":[4879],"tags":[],"class_list":["post-51025","post","type-post","status-publish","format-standard","hentry","category-artifactory"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/51025","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/comments?post=51025"}],"version-history":[{"count":3,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/51025\/revisions"}],"predecessor-version":[{"id":51028,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/51025\/revisions\/51028"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=51025"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=51025"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=51025"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}