ProxmoxにNASを追加してみた

## はじめに
ProxmoxにNASを追加してLVMとして使えるようにしてみましたので、備忘録をかねて書いてみました。

自分はubuntuのミラーサーバを立ててみたいなと思ったときに、ストレージが足りなくなると思ったので追加しました。せっかくなので、最後にミラーサーバの立て方も紹介しているので見ていってください。

## 手順
### NAS側の設定
NASはSynologyのDS220jを使用しています。

まずは、iSCSIの場所をつくっていきます。
SynologyのDSMからSAN Managerを起動します。

SAN Manager > iSCSI > 作成
![スクリーンショット 2024-07-01 140732.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2631217/1b8c3065-65aa-6d41-3d8e-f8199b844f9c.png)

作成ボタンを押して適当にポチポチしていってください。（名前と容量以外はデフォルトで大丈夫だと思います。）

![スクリーンショット 2024-07-01 202149.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2631217/a74dd83b-27ee-100a-4a2d-31bf293c73f4.png)

こんな感じでできると思いますので、Proxmoxに追加したいと思います。
（あとで使うので、IQNは覚えといてください。）

では、いよいよProxmoxに追加していきます。

:::note info　
複数ノードで使用する場合は、作ったiSCSIストレージの編集から赤で囲った場所を許可してください。
![スクリーンショット 2024-07-01 202523.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2631217/fd19d0af-146c-57a5-fbf7-fc7ff74ce6aa.png)
:::

:::note warn
Proxmoxのフォーラムにも上がっていますが、SynologyのNASを接続するとProxmoxのコントロールパネルのグラフが表示されなくなることがあります。（自分もなりました。）そのために、SynologyのIPv6を無効にするなどしておいた方がいいかもしれません。
詳細は[フォーラム](https://forum.proxmox.com/threads/after-8-1-3-upgrade-summary-graphs-are-blank.137262/)を見てみてください。(うんちゃまさんのTwitterで一番最初に見つかりました、ありがとうございました。)

ちなみに、DMS > コントロールパネル > ネットワーク > ネットワークインターフェース の編集でIPv6を無効にしたら自分は解決しました。

:::



### Proxmox側の設定

まず、**すべてのノード**にopen-iscsiをインストールします。
```
 apt-get install open-iscsi
```

データセンター > ストレージ > 追加 > iSCSIを選択してください。
![スクリーンショット 2024-07-01 135607.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2631217/fa3a3980-d8b0-93d4-43dd-9632b73c83c7.png)　

IDは任意のID を、PortalにはNASのIPアドレスを、ターゲットは先ほど覚えたIQNが選択されていることを確認して、LUNsを直接使用のチェックを外して追加してください。
![スクリーンショット 2024-07-01 203233.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2631217/c1dc047c-5018-8b54-1712-7afc6f8fc9b2.png)


ここで無事接続されるとSAN Manager > iSCSIで以下の画像のようになって黄色の部分にProxmoxのノードのIPアドレスが表示されていると思います。
![スクリーンショット 2024-07-02 015600.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2631217/2365567e-4955-7bbd-ee2c-cf53fa49e76a.png)


次に、追加したiSCSI上にLVMを作成します。（iSCSIを直接使っている記事もありましたが、公式がLVMを勧めていたので、それに合わせます。）

データセンター > ストレージ > 追加 > LVMを選択してください。
![スクリーンショット 2024-07-02 004404.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2631217/d807e099-3082-2af5-21c2-5efd07e1e35e.png)

IDは任意のIDを、ベースモジュールは先ほど追加したiSCSIを選択、ベースボリュームは1つしかないと思うのでそれを選択、ボリュームグループは任意のモジュールグループを指定して追加してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2631217/c26e77a0-882b-77a5-9dea-aacb4388baec.png)


これで、今後は普通にVMを作成する際のディスクの指定で今作成したLVMを指定すると使えます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2631217/7b30ca4c-284c-0381-04f8-9ea5d3654a5b.png)


## 自分の使い方の紹介：ミラーサーバの立て方

まず、ストレージを多めにVMを作成してubuntuをインストールします。（お好きなように設定してください。）

<details><summary>ストレージの設定の一例</summary>


ストレージの設定もいろいろあるので何でもいいですが、一番説明しやすいものを紹介しておきます。（若干ないように自信がないです。）

ubuntuのインストールの時のストレージの設定で、
Storage Configuration > DEVICE > free spaceを選択して
![スクリーンショット 2024-07-02 011715.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2631217/37d64f05-1ff2-565d-18b2-e081547f1ee5.png)
マウント先を ```/var/spool/apt-mirror``` にしてください。
![スクリーンショット 2024-07-02 011831.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2631217/1938538c-6ac4-d1b8-4980-4aa8cdcddb6d.png)
結果。
![スクリーンショット 2024-07-02 011845.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2631217/5c7fadb8-d29b-ad2c-696f-c0c167865727.png)


</details>

まず、NGINXをインストールします。（好みでNGINXを使っていますが、Apacheでも何でもいいです。）

```
# apt-get update
# apt-get install nginx
```

設定ファイルを作成します。
``` /etc/nginx/sites-available/mirror.conf
server {
        listen 80;
        server_name サーバ名;

        location /ubuntu {
                alias /var/spool/apt-mirror/mirror/archive.ubuntu.com/ubuntu/;
                autoindex on;
        }
}
```
設定を反映
```
# ln -s /etc/nginx/sites-available/mirror.conf /etc/nginx/sites-enabled/mirror.conf
# systemctl restart nginx.service
```

本題、apt-mirrorをインストールしていく。
```
# apt update
# apt install apt-mirror bzip2
```
本来はこれでいいのだが、@を含むデータでエラーが発生するとかいう問題があるらしいので、[GitHub](https://github.com/apt-mirror/apt-mirror)から拾ってくる。

```
$ git clone https://github.com/apt-mirror/apt-mirror.git
Cloning into 'apt-mirror'...
remote: Enumerating objects: 494, done.
remote: Counting objects: 100% (191/191), done.
remote: Compressing objects: 100% (59/59), done.
remote: Total 494 (delta 156), reused 157 (delta 132), pack-reused 303
Receiving objects: 100% (494/494), 160.57 KiB | 6.42 MiB/s, done.
Resolving deltas: 100% (274/274), done.
```
GitHubからのものを元のと置き換える

```
# mv /usr/bin/apt-mirror /usr/bin/apt-mirror.ori   # 元のファイルを避難
# cp apt-mirror/apt-mirror /usr/bin/               # 移動
# chown root:root /usr/bin/apt-mirror              # 権限を変更
```
設定ファイルをいじっていく。
(ミラー先は```/etc/apt/sources.list```を参考にするなり、理研などを使わせていただくのでも...)
自分の設定ファイルは以下の通りです。
``` /etc/apt/mirror.list
############# config ##################
#
# set base_path    /var/spool/apt-mirror
#
# set mirror_path  $base_path/mirror
# set skel_path    $base_path/skel
# set var_path     $base_path/var
# set cleanscript $var_path/clean.sh
# set defaultarch  <running host architecture>
# set postmirror_script $var_path/postmirror.sh
# set run_postmirror 0
#set nthreads     20
set nthreads     8           # 適宜変更
set _tilde 0
#
############# end config ##############

deb http://archive.ubuntu.com/ubuntu jammy main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu jammy-security main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu jammy-updates main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu jammy-proposed main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu jammy-backports main restricted universe multiverse
deb-i386 http://archive.ubuntu.com/ubuntu jammy main restricted universe multiverse
deb-i386 http://archive.ubuntu.com/ubuntu jammy-updates main restricted universe multiverse

#deb-src http://archive.ubuntu.com/ubuntu jammy main restricted universe multiverse
#deb-src http://archive.ubuntu.com/ubuntu jammy-security main restricted universe multiverse
#deb-src http://archive.ubuntu.com/ubuntu jammy-updates main restricted universe multiverse
#deb-src http://archive.ubuntu.com/ubuntu jammy-proposed main restricted universe multiverse
#deb-src http://archive.ubuntu.com/ubuntu jammy-backports main restricted universe multiverse

clean http://archive.ubuntu.com/ubuntu
```

このまま実行すると最後に```/var/spool/apt-mirror/var/postmirror.sh```に関するエラーが発生しますが、特に実害がないです(笑)が、[GitHub](https://github.com/apt-mirror/apt-mirror/blob/master/postmirror.sh)のコードをコピペしたら解決します。

最後に、勝手に更新されるようにcronを設定(コメントアウト)して準備は完了です、
```/etc/cron.d/apt-mirror
0 4     * * *   apt-mirror      /usr/bin/apt-mirror > /var/spool/apt-mirror/var/cron.log
```

あとは、最初のダウンロードをすれば完成です。（結構時間かかります。）
```
$ sudo -u apt-mirror apt-mirror
Downloading 15 release files using 8 threads...

~~~以下省略~~~

```

案外簡単にミラーサーバが立てられたと思います。自分の設定だと463GB程度使っています。NASがあるのであればそんなに負担にもならないと思います。

実際メリットあるかと聞かれると、「まぁ、家に帰ればミラーサーバあるしな」の生ハムの原木の話しかないと思いますが、ぜひ一家に一台立ててみてもいいのではないでしょうか（笑）





## 参考にさせていただいたサイト
- [Proxmox Support Forum](https://forum.proxmox.com/)
- [Proxmox Wiki](https://pve.proxmox.com/wiki/Main_Page)
- [お金をかけずにサーバーの勉強をしよう PROXMOXクラスター](https://subro.mokuren.ne.jp/1890.html)
- [yoshida95 Ubuntu のパッケージリポジトリのミラーをローカルに建てたら幸せになった話](https://yosida95.com/2013/05/19/003744.html)