<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>JUICE on Pigsty v5.0</title>
    <link>https://pgsty.pro/module/juice/</link>
    <description>Recent content in JUICE on Pigsty v5.0</description>
    <generator>Hugo</generator>
    <language>en-US</language>
    
    
    
      <lastBuildDate>Mon, 01 Jan 0001 00:00:00 +0000</lastBuildDate>
    
    
      <atom:link href="https://pgsty.pro/module/juice/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
        <title>Module: JUICE</title>
        <link>https://pgsty.pro/docs/juice/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/juice/</guid>
        <description>&lt;p&gt;&lt;a href=&#34;https://juicefs.com/&#34;&gt;JuiceFS&lt;/a&gt; is a high-performance POSIX-compatible distributed filesystem that can mount object storage or databases as a local filesystem.&lt;/p&gt;&#xA;&lt;p&gt;The &lt;code&gt;JUICE&lt;/code&gt; module depends on &lt;a href=&#34;https://pgsty.pro/docs/node/&#34;&gt;&lt;code&gt;NODE&lt;/code&gt;&lt;/a&gt; for infrastructure and package repo, and typically uses &lt;a href=&#34;https://pgsty.pro/docs/pgsql/&#34;&gt;&lt;code&gt;PGSQL&lt;/code&gt;&lt;/a&gt; as the metadata engine.&#xA;Data storage can be PostgreSQL (in a &lt;code&gt;jfs_blob&lt;/code&gt; table) or Silo / S3-compatible object storage provided by the &lt;a href=&#34;https://pgsty.pro/docs/minio/&#34;&gt;&lt;code&gt;MINIO&lt;/code&gt;&lt;/a&gt; module. Monitoring relies on &lt;a href=&#34;https://pgsty.pro/docs/infra/&#34;&gt;&lt;code&gt;INFRA&lt;/code&gt;&lt;/a&gt; VictoriaMetrics.&lt;/p&gt;&#xA;&lt;pre class=&#34;mermaid&#34;&gt;flowchart LR&#xA;    subgraph Client[&amp;#34;App/User&amp;#34;]&#xA;        app[&amp;#34;POSIX Access&amp;#34;]&#xA;    end&#xA;&#xA;    subgraph JUICE[&amp;#34;JUICE&amp;#34;]&#xA;        jfs[&amp;#34;JuiceFS Mount&amp;#34;]&#xA;    end&#xA;&#xA;    subgraph PGSQL[&amp;#34;PGSQL&amp;#34;]&#xA;        meta[&amp;#34;Metadata DB&amp;#34;]&#xA;        blob[&amp;#34;Data DB / jfs_blob (optional)&amp;#34;]&#xA;    end&#xA;&#xA;    subgraph Object[&amp;#34;Object Storage (optional)&amp;#34;]&#xA;        s3[&amp;#34;Silo / S3&amp;#34;]&#xA;    end&#xA;&#xA;    subgraph INFRA[&amp;#34;INFRA (optional)&amp;#34;]&#xA;        vm[&amp;#34;VictoriaMetrics&amp;#34;]&#xA;    end&#xA;&#xA;    app --&amp;gt; jfs&#xA;    jfs --&amp;gt; meta&#xA;    jfs -.-&amp;gt;|alternative data backend| blob&#xA;    jfs -.-&amp;gt;|alternative data backend| s3&#xA;    jfs --&amp;gt;|/metrics| vm&#xA;&#xA;    style JUICE fill:#5B9CD5,stroke:#4178a8,color:#fff&#xA;    style PGSQL fill:#3E668F,stroke:#2d4a66,color:#fff&#xA;    style Object fill:#FCDB72,stroke:#d4b85e,color:#333&#xA;    style INFRA fill:#999,stroke:#666,color:#fff&lt;/pre&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;features&#34;&gt;Features&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;PostgreSQL metadata&lt;/strong&gt;: Metadata stored in PostgreSQL for easy management and backup&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Multi-instance&lt;/strong&gt;: One node can mount multiple independent filesystem instances&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Multiple data backends&lt;/strong&gt;: PostgreSQL, Silo/MinIO, S3, and more; metadata and file data remain separate roles&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Monitoring integration&lt;/strong&gt;: Each instance exposes Prometheus / Victoria-format metrics port&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Simple config&lt;/strong&gt;: Describe instances with the &lt;a href=&#34;https://pgsty.pro/docs/juice/param/#juice_instances&#34;&gt;&lt;strong&gt;&lt;code&gt;juice_instances&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt; dict&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;quick-start&#34;&gt;Quick Start&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Minimal config example (single instance):&lt;/p&gt;</description>
      </item>
    <item>
        <title>Configuration</title>
        <link>https://pgsty.pro/docs/juice/config/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/juice/config/</guid>
        <description>&lt;hr&gt;&#xA;&lt;h2 id=&#34;concepts-and-implementation&#34;&gt;Concepts and Implementation&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;JuiceFS consists of a &lt;strong&gt;metadata engine&lt;/strong&gt; and &lt;strong&gt;data storage&lt;/strong&gt;.&#xA;In the current version, &lt;code&gt;meta&lt;/code&gt; is passed through to &lt;code&gt;juicefs&lt;/code&gt; as the metadata engine URL, and PostgreSQL is typically used in production.&#xA;Data storage is defined by &lt;code&gt;data&lt;/code&gt; options passed to &lt;code&gt;juicefs format&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;JUICE module core commands:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-9387b696-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;5&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-9387b696-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Format (only effective on first creation)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;juicefs format --no-update &amp;lt;data&amp;gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;lt;meta&amp;gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;lt;name&amp;gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Mount&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;juicefs mount &amp;lt;mount_opts&amp;gt; --cache-dir &amp;lt;juice_cache&amp;gt; --metrics 0.0.0.0:&amp;lt;port&amp;gt; &amp;lt;meta&amp;gt; &amp;lt;path&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;Notes:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Parameters</title>
        <link>https://pgsty.pro/docs/juice/param/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/juice/param/</guid>
        <description>&lt;p&gt;JUICE module has &lt;strong&gt;2&lt;/strong&gt; parameters:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsty.pro/docs/juice/param/#juice_cache&#34;&gt;&lt;code&gt;juice_cache&lt;/code&gt;&lt;/a&gt;: shared cache directory&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsty.pro/docs/juice/param/#juice_instances&#34;&gt;&lt;code&gt;juice_instances&lt;/code&gt;&lt;/a&gt;: instance definition dict&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;parameter-overview&#34;&gt;Parameter Overview&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--full td-table-scroll--static&#34;&gt;&#xA;&lt;table class=&#34;full-width&#34;&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Parameter&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Type&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Level&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/juice/param/#juice_cache&#34;&gt;&lt;code&gt;juice_cache&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;path&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;C&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;JuiceFS shared cache directory&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/juice/param/#juice_instances&#34;&gt;&lt;code&gt;juice_instances&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;dict&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;I&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;JuiceFS instance definition dict (can be empty)&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;Level&lt;/strong&gt;: &lt;code&gt;C&lt;/code&gt; = cluster level, &lt;code&gt;I&lt;/code&gt; = instance level.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;default-parameters&#34;&gt;Default Parameters&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Defined in &lt;a href=&#34;https://github.com/pgsty/pigsty/blob/main/roles/juice/defaults/main.yml&#34;&gt;&lt;code&gt;roles/juice/defaults/main.yml&lt;/code&gt;&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-d8e92c9f-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;yaml&#34; data-td-line-count=&#34;5&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-d8e92c9f-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;#-----------------------------------------------------------------&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# JUICE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;#-----------------------------------------------------------------&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;juice_cache&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;/data/juice&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;juice_instances&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;{}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;juice_cache&#34;&gt;&lt;code&gt;juice_cache&lt;/code&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Parameter: &lt;code&gt;juice_cache&lt;/code&gt;, type: &lt;code&gt;path&lt;/code&gt;, level: &lt;code&gt;C&lt;/code&gt;&lt;/p&gt;</description>
      </item>
    <item>
        <title>Playbook</title>
        <link>https://pgsty.pro/docs/juice/playbook/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/juice/playbook/</guid>
        <description>&lt;p&gt;JUICE module provides &lt;code&gt;juice.yml&lt;/code&gt; playbook to deploy and remove JuiceFS instances.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;juiceyml&#34;&gt;&lt;code&gt;juice.yml&lt;/code&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Task structure in &lt;a href=&#34;https://github.com/pgsty/pigsty/blob/main/juice.yml&#34;&gt;&lt;code&gt;juice.yml&lt;/code&gt;&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-bc40b6df-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;10&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-bc40b6df-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;juice_id        : validate config, check port conflicts&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;juice_install   : install juicefs package&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;juice_cache     : create shared cache dir&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;juice_clean     : remove instance &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;state&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;absent&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;juice_instance  : create instance &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;state&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;create&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - juice_init  : format filesystem &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;--no-update&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - juice_dir   : create mount dir&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - juice_config: render env file and systemd unit&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - juice_launch: start service and &lt;span class=&#34;nb&#34;&gt;wait&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; metrics port&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;juice_register  : register to VictoriaMetrics targets&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;scope&#34;&gt;Scope&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--full td-table-scroll--static&#34;&gt;&#xA;&lt;table class=&#34;full-width&#34;&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Scope&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Limit&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Node&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-l &amp;lt;host&amp;gt;&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Deploy all instances on the node&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Instance&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;-l &amp;lt;host&amp;gt; -e fsname=&amp;lt;name&amp;gt;&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Only handle specified instance&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;Examples:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Administration</title>
        <link>https://pgsty.pro/docs/juice/admin/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/juice/admin/</guid>
        <description>&lt;p&gt;Common operations:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsty.pro/docs/juice/admin/#initialize-instance&#34;&gt;Initialize Instance&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsty.pro/docs/juice/admin/#reconfigure&#34;&gt;Reconfigure&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsty.pro/docs/juice/admin/#remove-instance&#34;&gt;Remove Instance&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsty.pro/docs/juice/admin/#add-new-instance&#34;&gt;Add New Instance&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsty.pro/docs/juice/admin/#shared-mount-across-nodes&#34;&gt;Shared Mount Across Nodes&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsty.pro/docs/juice/admin/#pitr-recovery&#34;&gt;PITR Recovery&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsty.pro/docs/juice/admin/#troubleshooting&#34;&gt;Troubleshooting&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsty.pro/docs/juice/admin/#performance-tuning&#34;&gt;Performance Tuning&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;See &lt;a href=&#34;https://pgsty.pro/docs/juice/faq/&#34;&gt;FAQ&lt;/a&gt; for more.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;initialize-instance&#34;&gt;Initialize Instance&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-90c680cd-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;2&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-90c680cd-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./juice.yml -l &amp;lt;host&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./juice.yml -l &amp;lt;host&amp;gt; -e &lt;span class=&#34;nv&#34;&gt;fsname&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&amp;lt;name&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;Initialization steps:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Install &lt;code&gt;juicefs&lt;/code&gt; package&lt;/li&gt;&#xA;&lt;li&gt;Create shared cache dir (default &lt;code&gt;/data/juice&lt;/code&gt;)&lt;/li&gt;&#xA;&lt;li&gt;Run &lt;code&gt;juicefs format --no-update&lt;/code&gt; (only effective on first creation)&lt;/li&gt;&#xA;&lt;li&gt;Create mount point and set permissions&lt;/li&gt;&#xA;&lt;li&gt;Render systemd unit and env files&lt;/li&gt;&#xA;&lt;li&gt;Start service and wait for metrics port&lt;/li&gt;&#xA;&lt;li&gt;Register to VictoriaMetrics (if infra node exists)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;reconfigure&#34;&gt;Reconfigure&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;After changing config, it&amp;rsquo;s recommended to run (update config and ensure service is online):&lt;/p&gt;</description>
      </item>
    <item>
        <title>Monitoring</title>
        <link>https://pgsty.pro/docs/juice/monitor/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/juice/monitor/</guid>
        <description>&lt;p&gt;JuiceFS instances expose Prometheus metrics via &lt;code&gt;juicefs mount --metrics&lt;/code&gt;.&#xA;In JUICE, metrics listen on &lt;code&gt;0.0.0.0:&amp;lt;port&amp;gt;&lt;/code&gt;, default port &lt;code&gt;9567&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;monitoring-architecture&#34;&gt;Monitoring Architecture&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-d9871b71-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;text&#34; data-td-line-count=&#34;5&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-d9871b71-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;JuiceFS Mount (metrics: 0.0.0.0:&amp;lt;port&amp;gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ↓&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;VictoriaMetrics (scrape)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ↓&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Grafana Dashboard&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;If &lt;a href=&#34;https://pgsty.pro/docs/infra/&#34;&gt;&lt;code&gt;INFRA&lt;/code&gt;&lt;/a&gt; is deployed, &lt;code&gt;juice_register&lt;/code&gt; writes scrape targets to:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-d9871b71-fence-1&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;text&#34; data-td-line-count=&#34;1&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-d9871b71-fence-1-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/infra/targets/juice/&amp;lt;hostname&amp;gt;.yml&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;The current source includes the &lt;a href=&#34;https://demo.pigsty.io/d/node-juice&#34;&gt;Node JuiceFS&lt;/a&gt; dashboard (UID: &lt;code&gt;node-juice&lt;/code&gt;) for capacity, cache, object-storage, metadata-transaction, and client-resource metrics across JuiceFS mounts on a node.&lt;/p&gt;</description>
      </item>
    <item>
        <title>FAQ</title>
        <link>https://pgsty.pro/docs/juice/faq/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/juice/faq/</guid>
        <description>&lt;hr&gt;&#xA;&lt;h2 id=&#34;port-conflicts&#34;&gt;Port Conflicts?&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Multiple instances on the same node must use different &lt;code&gt;port&lt;/code&gt; values. Example:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-7a4f68bd-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;yaml&#34; data-td-line-count=&#34;9&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-7a4f68bd-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;juice_instances&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;fs1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;/fs1&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;meta&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;postgres://...&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;port&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;9567&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;fs2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;/fs2&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;meta&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;postgres://...&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;port&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;9568&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;why-does-changing-data-not-take-effect&#34;&gt;Why does changing &lt;code&gt;data&lt;/code&gt; not take effect?&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;code&gt;data&lt;/code&gt; is only used by &lt;code&gt;juicefs format --no-update&lt;/code&gt;. After filesystem creation it will not change.&#xA;To switch backend, migrate data and reformat manually.&lt;/p&gt;</description>
      </item>
    
  </channel>
</rss>
