<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="https://www.bigdick.live/feed_style.xsl" type="text/xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans">
    <tabi:metadata xmlns:tabi="https://github.com/welpo/tabi">
        <tabi:base_url>https:&#x2F;&#x2F;www.bigdick.live</tabi:base_url>
        <tabi:separator>
            •
        </tabi:separator>
        <tabi:about_feeds>这是Web Feed，又称为Atom Feed，把现在的网址复制到新闻阅读器即可订阅本站文章。造访「About Feeds」来了解更多资讯。</tabi:about_feeds>
        <tabi:visit_the_site>造访网站</tabi:visit_the_site>
        <tabi:recent_posts>近期文章</tabi:recent_posts>
        <tabi:last_updated_on>更新于 $DATE</tabi:last_updated_on>
        <tabi:default_theme></tabi:default_theme>
        <tabi:post_listing_date>date</tabi:post_listing_date>
        <tabi:current_section>OMV</tabi:current_section>
    </tabi:metadata><link rel="extra-stylesheet" href="https://www.bigdick.live/skins/black-orange.css?h=c64b7f81e34a143cd725" /><title>孙瑜 - OMV</title>
        <subtitle>孙瑜的个人首页：生物信息、数据科学、软件工程，以及公开简历、项目和文章。</subtitle>
    <link href="https://www.bigdick.live/tags/omv/atom.xml" rel="self" type="application/atom+xml"/>
    <link href="https://www.bigdick.live/tags/omv/" rel="alternate" type="text/html"/>
    <generator uri="https://www.getzola.org/">Zola</generator><updated>2024-06-13T00:00:00+00:00</updated><id>https://www.bigdick.live/tags/omv/atom.xml</id><entry xml:lang="zh-Hans">
        <title>家用NAS配置指北</title>
        <published>2024-06-13T00:00:00+00:00</published>
        <updated>2024-06-13T00:00:00+00:00</updated>
        <author>
            <name>孙瑜</name>
        </author>
        <link rel="alternate" href="https://www.bigdick.live/blog/nas/" type="text/html"/>
        <id>https://www.bigdick.live/blog/nas/</id>
        
            <content type="html">&lt;h2 id=&quot;jian-yi-cai-liao&quot;&gt;建议材料&lt;&#x2F;h2&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;类别&lt;&#x2F;th&gt;&lt;th&gt;型号&lt;&#x2F;th&gt;&lt;th&gt;理由&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h2 id=&quot;ospei-zhi&quot;&gt;OS配置&lt;&#x2F;h2&gt;
&lt;p&gt;OMV安装完毕后，暂时不要在UI里更新系统。尽管安装过程可能按照指引已经配置了国内的Apt源，但有些（比如Debian Security）未覆盖到，会导致&lt;code&gt;apt update&lt;&#x2F;code&gt;等速度非常慢。&lt;&#x2F;p&gt;
&lt;p&gt;因此建议先&lt;a class=&quot;external&quot; rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;help.mirrors.cernet.edu.cn&#x2F;OpenMediaVault&#x2F;&quot;&gt;配置镜像&lt;&#x2F;a&gt;。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;rong-qi-yun-xing-huan-jing&quot;&gt;容器运行环境&lt;&#x2F;h2&gt;
&lt;p&gt;为方便管理容器和Docker Compose部署的服务等，还是要装一下&lt;code&gt;openmediavault-compose&lt;&#x2F;code&gt;这个插件。&lt;&#x2F;p&gt;
&lt;p&gt;官方文档建议先安装OMV-Extras，然后就可以在界面里操作安装Docker CE。但事实上两者并无强绑定关系。&lt;&#x2F;p&gt;
&lt;p&gt;虽然但是，如果添加了OMV-Extras的源，在界面中可以方便查看各种插件的安装状态，会提供一定的方便。还是鼓励装一下：&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;涉及GayHub的资源，最好还是加个反代来用，这里我选了&lt;a class=&quot;external&quot; rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;kkgithub.com&quot;&gt;https:&#x2F;&#x2F;kkgithub.com&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;pre class=&quot;giallo z-code&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;wget&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; -O - https:&#x2F;&#x2F;kkgithub.com&#x2F;OpenMediaVault-Plugin-Developers&#x2F;packages&#x2F;raw&#x2F;master&#x2F;install&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator&quot;&gt; |&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt; sed&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-string z-string&quot;&gt; &amp;#39;s&#x2F;github&#x2F;kkgithub&#x2F;g&amp;#39;&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator&quot;&gt; |&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt; bash&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;这里装完就装完了，在国内就别指望用它来装Docker等等。&lt;&#x2F;p&gt;
&lt;p&gt;接下来，就是使用国内的Docker CE镜像来安装Docker。装好后设置镜像&#x2F;反代方便拉取images。&lt;&#x2F;p&gt;
&lt;p&gt;最后来到&lt;code&gt;openmediavault-compose&lt;&#x2F;code&gt;插件：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo z-code&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;apt&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; install openmediavault-compose&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;另外，一些插件（比如&lt;code&gt;openmediavault-photoprism&lt;&#x2F;code&gt;）用到Podman。&lt;&#x2F;p&gt;
&lt;p&gt;但照旧要&lt;a class=&quot;external&quot; rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;podman.io&#x2F;docs&#x2F;installation#registriesconf&quot;&gt;配置国内镜像&lt;&#x2F;a&gt;。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;wen-jian-xi-tong&quot;&gt;文件系统&lt;&#x2F;h2&gt;
&lt;p&gt;文件系统我选了Btrfs&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-1-1&quot;&gt;&lt;a href=&quot;#fn-1&quot;&gt;1&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;我认为Btrfs是拥抱未来的文件系统，虽然当下尚有很多缺陷（比如社区报告的RAID5&#x2F;6不稳定等），但把RAID、LVM等功能集成到文件系统中是大势所趋。&lt;&#x2F;p&gt;
&lt;p&gt;虽然使用它自带的RAID0&#x2F;1&#x2F;10或者&lt;code&gt;DUP&lt;&#x2F;code&gt;模式都是安全的，但我嫌弃这些方案：要么磁盘利用率低，要么不安全。&lt;&#x2F;p&gt;
&lt;p&gt;所以最后还是用&lt;code&gt;openmediavault-md&lt;&#x2F;code&gt;做了软RAID。然后Btrfs在RAID后的卷上创建，模式选了&lt;code&gt;Single&lt;&#x2F;code&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;但默认的挂载参数不够理想。最后采取了如下设置&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-2-1&quot;&gt;&lt;a href=&quot;#fn-2&quot;&gt;2&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo z-code&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;omv-env&lt;&#x2F;span&gt;&lt;span class=&quot;z-string z-punctuation z-definition z-string&quot;&gt; set -- OMV_FSTAB_MNTOPS_BTRFS &amp;quot;defaults,nofail,compress=zstd,autodefrag,noatime&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;monit&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; restart omv-engined&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;omv-salt&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; stage run prepare&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;omv-salt&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; stage run deploy&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;bcachehuan-cun&quot;&gt;bcache缓存&lt;&#x2F;h2&gt;
&lt;blockquote&gt;
&lt;p&gt;我是使用了一段时间才苟到一块NVMe做缓存盘的。如果文件系统上有数据，理应先&lt;a class=&quot;external&quot; rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;wiki.omv-extras.org&#x2F;doku.php?id=omv7:utilities_maint_backup#full_disk_mirroring_backup_with_rsync&quot;&gt;备份全盘&lt;&#x2F;a&gt;。&lt;br &#x2F;&gt;
理论上用&lt;a class=&quot;external&quot; rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;g2p&#x2F;blocks&quot;&gt;blocks&lt;&#x2F;a&gt;工具直接转换也是可以的，但依赖环境看着很吓人。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h3 id=&quot;que-ren-ssdde-erase-block-size&quot;&gt;确认SSD的erase block size&lt;&#x2F;h3&gt;
&lt;p&gt;创建高速缓存的时候尽量还是尊重一下SSD固有的erase block size，这样可以减少&lt;a class=&quot;external&quot; rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Write_amplification&quot;&gt;write amplification&lt;&#x2F;a&gt;现象的发生。但多数SSD的参数规格中并未提及这点，如果不想将就，可以用&lt;a class=&quot;external&quot; rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;bradfa&#x2F;flashbench&quot;&gt;flashbench&lt;&#x2F;a&gt;工具去猜。&lt;&#x2F;p&gt;
&lt;p&gt;安装flashbench：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo z-code&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;apt&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; install flashbench&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;猜：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo z-code&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-comment z-comment&quot;&gt;# 建议先写入一定量的随机数据，猜起来准一些&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-comment z-comment&quot;&gt;# dd if=&#x2F;dev&#x2F;urandom of=&#x2F;dev&#x2F;nvme1n1 bs=4096 status=progress&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;flashbench&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; -a &#x2F;dev&#x2F;nvme1n1  --blocksize=1024&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;在我的case里，虽然pattern不甚明显，还是值得参考的：&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;www.bigdick.live&#x2F;blog&#x2F;nas&#x2F;pattern.png&quot; alt=&quot;pattern&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h3 id=&quot;pei-zhi-huan-cun&quot;&gt;配置缓存&lt;&#x2F;h3&gt;
&lt;p&gt;bcache已经并入内核很久了，但还是需要安装&lt;code&gt;bcache-tools&lt;&#x2F;code&gt;来配置：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo z-code&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;apt&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; install bcache-tools&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;先擦除文件系统，若出现&lt;code&gt;Device or resource busy&lt;&#x2F;code&gt;错误请参照&lt;a href=&quot;https:&#x2F;&#x2F;www.bigdick.live&#x2F;blog&#x2F;nas&#x2F;#device-or-resource-busy&quot;&gt;这节&lt;&#x2F;a&gt;：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo z-code&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;wipefs&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; -a &#x2F;dev&#x2F;md0&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;wipefs&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; -a &#x2F;dev&#x2F;nvme1n1&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;然后格式化后端和缓存设备&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-3-1&quot;&gt;&lt;a href=&quot;#fn-3&quot;&gt;3&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo z-code&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-comment z-comment&quot;&gt;# 这里会创建&#x2F;dev&#x2F;bcache0&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;make-bcache&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; --data-offset 1290240k -B &#x2F;dev&#x2F;md0&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;make-bcache&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; --bucket 4M -C &#x2F;dev&#x2F;nvme1n1&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;搞定后检查一下uuid，并将其绑定至&lt;code&gt;&#x2F;dev&#x2F;bcache0&lt;&#x2F;code&gt;:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo z-code&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;bcache-super-show&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; &#x2F;dev&#x2F;nvme1n1&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator&quot;&gt; |&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt; grep&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; cset&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-support z-function z-builtin&quot;&gt;echo&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; 9b72f96d-7e85-4fd3-a78f-a283504b938c&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator&quot;&gt; &amp;gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; &#x2F;sys&#x2F;block&#x2F;bcache0&#x2F;bcache&#x2F;attach&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;hou-xu-pei-zhi&quot;&gt;后续配置&lt;&#x2F;h3&gt;
&lt;p&gt;到这里就可以在UI中创建Btrfs分区并且挂载了。&lt;&#x2F;p&gt;
&lt;p&gt;检查状态：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo z-code&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;cat&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; &#x2F;sys&#x2F;block&#x2F;bcache0&#x2F;bcache&#x2F;state&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;如果返回内容是&lt;code&gt;clean&lt;&#x2F;code&gt;，说明一切正常。&lt;&#x2F;p&gt;
&lt;p&gt;修改为只用于读缓存：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo z-code&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-support z-function z-builtin&quot;&gt;echo&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; writearound&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator&quot;&gt; &amp;gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; &#x2F;sys&#x2F;block&#x2F;bcache0&#x2F;bcache&#x2F;cache_mode&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;device-or-resource-busy&quot;&gt;Device or resource busy&lt;&#x2F;h3&gt;
&lt;p&gt;进行配置过程中常见&lt;code&gt;Device or resource busy&lt;&#x2F;code&gt;错误。针对不同的对象，有不同的处理方式。&lt;&#x2F;p&gt;
&lt;h4 id=&quot;gao-su-huan-cun-pan&quot;&gt;高速缓存盘&lt;&#x2F;h4&gt;
&lt;pre class=&quot;giallo z-code&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-support z-function z-builtin&quot;&gt;echo&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric&quot;&gt; 1&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator&quot;&gt; &amp;gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; &#x2F;sys&#x2F;fs&#x2F;bcache&#x2F;9b72f96d-7e85-4fd3-a78f-a283504b938c&#x2F;unregister&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h4 id=&quot;hou-duan-di-su-pan&quot;&gt;后端低速盘&lt;&#x2F;h4&gt;
&lt;p&gt;在擦除文件系统之前，后端低速盘往往已经挂载并有服务相关联，首先要先停止服务并解挂载。&lt;&#x2F;p&gt;
&lt;p&gt;如果盘已经被配置作为bcache后端，则需要先停掉：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo z-code&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-support z-function z-builtin&quot;&gt;echo&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-numeric&quot;&gt; 1&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator&quot;&gt; &amp;gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; &#x2F;sys&#x2F;block&#x2F;bcache0&#x2F;bcache&#x2F;stop&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;xin-jian-yong-hu&quot;&gt;新建用户&lt;&#x2F;h2&gt;
&lt;p&gt;在新建好的Btrfs分区上创建一个&lt;code&gt;home&lt;&#x2F;code&gt;目录作为用户的家目录。&lt;&#x2F;p&gt;
&lt;p&gt;新建用户时不选择用户组，则默认会赋予一个&lt;code&gt;users&lt;&#x2F;code&gt;的组，一般来讲权限足够用。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;photoprism&quot;&gt;PhotoPrism&lt;&#x2F;h2&gt;
&lt;p&gt;PhotoPrism（下简称&lt;strong&gt;PP&lt;&#x2F;strong&gt;）虽然可以在UI里选择&lt;code&gt;openmediavault-podman&lt;&#x2F;code&gt;安装，但事实上由于连接速度的问题，&lt;code&gt;podman pull&lt;&#x2F;code&gt;拉取images的过程会非常长且在UI里没有正常的进度显示。&lt;&#x2F;p&gt;
&lt;p&gt;这会大大增长（心理上的）不确定性，因此还是建议命令行安装：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo z-code&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;apt&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; install openmediavault-photoprism&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;安装完毕后可以在UI中设置将其启动起来，建议按照&lt;a class=&quot;external&quot; rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;docs.photoprism.app&#x2F;getting-started&#x2F;nas&#x2F;openmediavault&#x2F;&quot;&gt;官方文档&lt;&#x2F;a&gt;中截图方式设置（目录需预先创建）：&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;docs.photoprism.app&#x2F;getting-started&#x2F;img&#x2F;omv_photoprism_plugin_ui.png&quot; alt=&quot;omv_photoprism_plugin_ui.png&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;caddy&quot;&gt;Caddy&lt;&#x2F;h2&gt;
&lt;p&gt;PP如果想在公网访问需要通过SSL加密的连接，我选用Caddy来做反代。&lt;&#x2F;p&gt;
&lt;p&gt;这里因为PP已经在Podman下跑起来了，最理想的路线就是在host上直接跑Caddy&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-4-1&quot;&gt;&lt;a href=&quot;#fn-4&quot;&gt;4&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;定制Caddy（带&lt;a class=&quot;external&quot; rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;caddy-dns&#x2F;cloudflare&quot;&gt;CF插件&lt;&#x2F;a&gt;去编译）：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo z-code&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-comment z-comment&quot;&gt;# 苟一下七牛云的CDN&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;go&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; env -w GO111MODULE=on&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;go&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; env -w  GOPROXY=https:&#x2F;&#x2F;goproxy.cn,direct&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;xcaddy&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; build --with github.com&#x2F;caddy-dns&#x2F;cloudflare&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;然后就可以删掉Go了：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo z-code&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;rm&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; -rf &#x2F;usr&#x2F;local&#x2F;go&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation&quot;&gt; &amp;amp;&amp;amp;&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt; rm&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; -rf ~&#x2F;go&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable&quot;&gt;*&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;为了使Caddy能提供稳定的代理，可以按照&lt;a class=&quot;external&quot; rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;caddyserver.com&#x2F;docs&#x2F;running#linux-service&quot;&gt;官方文档&lt;&#x2F;a&gt;创建service。&lt;&#x2F;p&gt;
&lt;p&gt;最后，为了让PP能够正确处理web请求，需要将配置好的地址绑定上：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo z-code&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;omv-env&lt;&#x2F;span&gt;&lt;span class=&quot;z-string z-punctuation z-definition z-string&quot;&gt; set -- OMV_PHOTOPRISM_APP_CONTAINER_START_OPTIONS &amp;quot;-e PHOTOPRISM_SITE_URL=http:&#x2F;&#x2F;localhost:2342&#x2F;photo&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;omv-salt&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; stage run prepare&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;omv-salt&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; deploy run photoprism&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;hr &#x2F;&gt;
&lt;pre class=&quot;giallo z-code&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;mdadm&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; -D &#x2F;dev&#x2F;mdX&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator&quot;&gt; |&lt;&#x2F;span&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt; grep&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; Chunk&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;如果RAID是通过其他方式创建的，那么可以参考&lt;a class=&quot;external&quot; rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;docs.kernel.org&#x2F;admin-guide&#x2F;bcache.html#troubleshooting-performance&quot;&gt;内核文档&lt;&#x2F;a&gt;里的叙述去计算这个数值。&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;当然也可以把PP和Caddy都用Docker跑，把&lt;code&gt;podman build&lt;&#x2F;code&gt;替换成&lt;code&gt;docker build&lt;&#x2F;code&gt;就可以，但OMV既然已经提供了插件，就费事自己去抄作业&#x2F;改作业了。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;也可以在制作镜像时用代理：&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;Dockerfile&lt;&#x2F;code&gt;&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo z-code&quot;&gt;&lt;code data-lang=&quot;docker&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-keyword&quot;&gt;FROM&lt;&#x2F;span&gt;&lt;span class=&quot;z-source&quot;&gt; caddy:builder-alpine &lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword&quot;&gt;AS&lt;&#x2F;span&gt;&lt;span class=&quot;z-source&quot;&gt; builder&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-keyword&quot;&gt;RUN&lt;&#x2F;span&gt;&lt;span class=&quot;z-source&quot;&gt; xcaddy build \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-source&quot;&gt;    --with github.com&#x2F;caddy-dns&#x2F;cloudflare&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-keyword&quot;&gt;FROM&lt;&#x2F;span&gt;&lt;span class=&quot;z-source&quot;&gt; caddy:alpine&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-keyword&quot;&gt;COPY&lt;&#x2F;span&gt;&lt;span class=&quot;z-source&quot;&gt; --from=builder &#x2F;usr&#x2F;bin&#x2F;caddy &#x2F;usr&#x2F;bin&#x2F;caddy&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;pre class=&quot;giallo z-code&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;podman&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; build&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-character z-escape&quot;&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-string z-punctuation z-definition z-string&quot;&gt;    --build-arg &amp;quot;HTTP_PROXY=http:&#x2F;&#x2F;192.168.31.151:7890&amp;quot;&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-character z-escape&quot;&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-string z-punctuation z-definition z-string&quot;&gt;    --build-arg &amp;quot;HTTPS_PROXY=http:&#x2F;&#x2F;192.168.31.151:7890&amp;quot;&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-character z-escape&quot;&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-string z-punctuation z-definition z-string&quot;&gt;    --build-arg &amp;quot;NO_PROXY=localhost,127.0.0.1&amp;quot;&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-character z-escape&quot;&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-string&quot;&gt;    -t caddy:cf .&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;由于同个 pod 间的网络才是互通的（可参考 &lt;a class=&quot;external&quot; rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;docs.podman.io&#x2F;en&#x2F;latest&#x2F;markdown&#x2F;podman-pod.1.html&quot;&gt;Podman pod 文档&lt;&#x2F;a&gt;），所以先确认已经跑起来的&lt;code&gt;photoprism-app&lt;&#x2F;code&gt;属于哪个 pod：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo z-code&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;podman&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; ps --pod&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;然后尝试在&lt;code&gt;photoprism&lt;&#x2F;code&gt;这个pod里启动Caddy：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo z-code&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-entity z-name z-function&quot;&gt;podman&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt; run -d --pod photoprism --name photoprism_caddy&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-character z-escape&quot;&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-string&quot;&gt;    -v caddy_data:&#x2F;data&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-character z-escape&quot;&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-string&quot;&gt;    -v caddy_config:&#x2F;config&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-character z-escape&quot;&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-string&quot;&gt;    -v&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-definition z-variable z-source&quot;&gt; $PWD&lt;&#x2F;span&gt;&lt;span class=&quot;z-string&quot;&gt;&#x2F;Caddyfile:&#x2F;etc&#x2F;caddy&#x2F;Caddyfile&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-character z-escape&quot;&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-string&quot;&gt;    -e CF_API_TOKEN=the_fucking_token&lt;&#x2F;span&gt;&lt;span class=&quot;z-constant z-character z-escape&quot;&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-string&quot;&gt;    caddy:cf&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;到这里就不对劲了，因为同一 pod 中的所有容器共享端口映射规则，我们没办法为 Caddy 指定新的映射规则，也就意味着没有端口给它用了，那还转发个锤子的host流量，这条路走不通。&lt;&#x2F;p&gt;
&lt;section class=&quot;footnotes&quot;&gt;
&lt;ol class=&quot;footnotes-list&quot;&gt;
&lt;li id=&quot;fn-1&quot;&gt;
&lt;p&gt;各文件系统对比：&lt;a class=&quot;external&quot; rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Comparison_of_file_systems&quot;&gt;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Comparison_of_file_systems&lt;&#x2F;a&gt; &lt;a href=&quot;#fr-1-1&quot;&gt;↩&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li id=&quot;fn-2&quot;&gt;
&lt;p&gt;OMV的文件系统环境变量：&lt;a class=&quot;external&quot; rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;docs.openmediavault.org&#x2F;en&#x2F;stable&#x2F;various&#x2F;fs_env_vars.html&quot;&gt;https:&#x2F;&#x2F;docs.openmediavault.org&#x2F;en&#x2F;stable&#x2F;various&#x2F;fs_env_vars.html&lt;&#x2F;a&gt;&lt;br &#x2F;&gt;
Btrfs挂载选项：&lt;a class=&quot;external&quot; rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;btrfs.readthedocs.io&#x2F;en&#x2F;latest&#x2F;btrfs-man5.html#mount-options&quot;&gt;https:&#x2F;&#x2F;btrfs.readthedocs.io&#x2F;en&#x2F;latest&#x2F;btrfs-man5.html#mount-options&lt;&#x2F;a&gt; &lt;a href=&quot;#fr-2-1&quot;&gt;↩&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li id=&quot;fn-3&quot;&gt;
&lt;p&gt;如果全程按照本文配置，那就没必要在意&lt;code&gt;--data-offset&lt;&#x2F;code&gt;的值了。&lt;br &#x2F;&gt;
这是因为OMV中通过UI创建的RAID5的stripe size默认是&lt;code&gt;512&lt;&#x2F;code&gt;k。可以通过如下命令查看： &lt;a href=&quot;#fr-3-1&quot;&gt;↩&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li id=&quot;fn-4&quot;&gt;
&lt;p&gt;我有设想和尝试过把Caddy也放在容器里运行，直接的想法就是由于Podman和Docker的容器网络互不联通，所以需要将Caddy也用Podman跑起来。 &lt;a href=&quot;#fr-4-1&quot;&gt;↩&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;&#x2F;section&gt;
</content>
        <summary type="html">基于OMV7</summary>
        </entry>
</feed>
