Ubuntu Weekly Recipe

第733回大人気ベアボーンASRock DeskMeetとUbuntuでNASを組む[構築編]

第732回ではDeskMeetをNASにするためのパーツ選定が終わったので、いよいよ組み立ててUbuntuをインストールし、LVMでRAIDを組みます。

組み立て

組み立ては、次の順番で行いました。

  1. CPUの取り付け
  2. CPUファンとIFE2の取り付け
  3. メモリーの取り付け
  4. SSDの取り付け
  5. 電源の取り付け

1と2に関してはマニュアルに従えば特に難しいところはないでしょう。CPUは、いわゆるスッポン[1]を防止するためにIFE2を取り付けています。

3のメモリーの取り付けは、取り付ける場所を考慮する必要があります。マニュアルによると1枚差しの場合はB2、すなわちCPUから一番遠いスロットに挿します。4つもスロットがあるのに1枚しか挿さないのはもったいないので、4GB*2を接続するのが理想的です。

4のSSD取り付けは、小さいネジを使用するため難易度が高いです。何かもう少し楽に取り付けられるような工夫があるといいのですが。

図1がCPU(Ryzen 3 PRO 4350G)とIFE2、メモリー、SSDを接続した写真です。

図1 CPU、メモリー、SSDを取り付けたところ
図1

5の電源はマニュアルを読むと事前に小さいネジを付けると記載されていますが、筆者は無視してネジ3つで留めました。この辺にズボラなところが出てきてしまっています。

懸念のCPUクーラーと電源の隙間ですが、本当にギリギリで収まっています図2⁠。少しでも小さい筐体にしつつ必要なサイズを確保するという素晴らしい設計が伺えます。

図2 上部の電源とCPUクーラーがくっついているといってもいいほど近い
図2

UEFI BIOS

基本的なパーツを組み上げたら、電源を入れてUEFI BIOSが起動するか確認してください。

問題なく起動したら、UEFI Versionがいくつか確認しましょう図3⁠。今回はP1.10だったので、執筆時点で最新の1.40にアップデートします。

図3 UEFIのバージョンは1.10だった。ちなみにマザーボードにもバージョンを示すシールが貼られているのでそこでも確認できる
図3

アップデートの前にfTPMをdisabledにする必要があります図4⁠。そしてUEFI BIOSのアップデートファイルをUSBメモリーに入れてマザーボードに接続し、⁠Tool」からアップデートを行います図5⁠。

図4 「Advanced」でTPMをオフにできる
図4
図5 Instant Flash機能を使用する
図5

Ubuntu ServerではTPMを使うところがないので、オフのままでも差し支えありません。

Ubuntu Serverのインストール

Ubuntu Serverのインストールは、基本的にはデフォルトのままの設定でいいでしょう。

ルートパーティションをLVMにするかは好みに応じて決定してください。個人的にはデータ用HDDを別途用意するのであればLVMは不要だと考えます。またNextcloudサーバーをインストールするかどうかも好みに応じて決定してください。今回この時点ではインストールしません。

インストール完了後、何はなくともavahi-daemonパッケージをインストールします。NASには必須のパッケージです。今どきmDNSでの名前解決はWindowsでも使えます。

ECCメモリーの動作確認

ECCが正しく動作しているか気になるところです。確認方法はいくつかありますが、次のコマンドを実行するのが簡単です。

$ sudo dmidecode -t memory|grep -i error
Error Correction Type: Multi-bit ECC
Error Information Handle: 0x000D
Error Information Handle: 0x0014
Error Information Handle: 0x0016
Error Information Handle: 0x0018
Error Information Handle: 0x001A

ECCありの場合は上記のような表示を確認できます。

なおECCなしの場合は次のような表示となり、ECCが動作していないことがわかります。

$ sudo dmidecode -t memory|grep -i error
Error Correction Type: None
Error Information Handle: 0x000A
Error Information Handle: 0x0011
Error Information Handle: 0x0013
Error Information Handle: 0x0016
Error Information Handle: 0x0018

HDD2台の取り付け

HDD2台の取り付けは、マニュアルに従って行えば特に難しいところはないでしょう。

LVMでHDDのセットアップ

取り付けたHDDはフォーマットし、LVMでRAIDを組みます。

まずは、何はなくとも現在の状態を確認してください。次のコマンドを実行してください。

$ sudo parted -l
Model: ATA ST8000VN0022-2EL (scsi)
Disk /dev/sda: 8002GB
Sector size (logical/physical): 512B/4096B
Partition Table: loop
Disk Flags:

Number  Start  End     Size    File system  Flags
 1      0.00B  8002GB  8002GB

Model: ATA ST8000VN004-2M21 (scsi)
Disk /dev/sdb: 8002GB
Sector size (logical/physical): 512B/4096B
Partition Table: loop
Disk Flags:

Number  Start  End     Size    File system  Flags
 1      0.00B  8002GB  8002GB

Model: WDC WDS100T2B0C-00PXH0 (nvme)
Disk /dev/nvme0n1: 1000GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name  Flags              
 1      1049kB  1128MB  1127MB  fat32              boot, esp
 2      1128MB  1000GB  999GB   ext4

通常増設したHDDは/dev/sdaと/dev/sdbになるはずです。しかしそうではない場合もありますので、念のために確認するのが上記のコマンドです。ここでは間違いなく/dev/sdaと/dev/sdbでした。

続けて次のコマンドを入力し、/dev/sdaのパーティションを作成します。

$ sudo parted /dev/sda
GNU Parted 3.4
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel gpt #入力項目
Warning: The existing disk label on /dev/sda will be destroyed and all data on this disk will be lost. Do you want to continue?
Yes/No? y #入力項目
(parted) mkpart #入力項目
Partition name?  []?
File system type?  [ext2]? ext4 #入力項目
Start? 0% #入力項目
End? 100% #入力項目
(parted) set 1 lvm on #入力項目
(parted) p #入力項目
Model: ATA ST8000VN0022-2EL (scsi)
Disk /dev/sda: 8002GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:
Number  Start   End     Size    File system  Name  Flags
 1      1049kB  8002GB  8002GB  ext4               lvm

なお上記で「入力項目」とコメントしている部分では入力が必要です。

同じことを/dev/sdbに対しても行います。

パーティションの作成ができたところで、いよいよLVMを設定していきます。LVMは物理ボリューム(Physical Volume⁠⁠、ボリュームグループ(Volume Group⁠⁠、論理ボリューム(Logical Volume)の3つがそろってはじめて機能します。よってそれらを設定する必要があります。端末から次のコマンドを実行してください。

$ sudo pvcreate /dev/sda1 
$ sudo pvcreate /dev/sdb1
$ sudo vgcreate nas /dev/sda1 /dev/sdb1
$ sudo lvcreate --type raid1 -l 100%VG -n lvnas nas

これによって/dev/sda1と/dev/sda2の物理ボリュームが作成され、それらを包含する「nas」というボリュームグループが作成されます。さらに「lvnas」という名称のRAID1の論理ボリュームが作成されます。

この状態で論理ボリュームを確認するコマンドを実行してみます。

$ sudo lvdisplay
  --- Logical volume ---
  LV Path                /dev/nas/lvnas
  LV Name                lvnas
  VG Name                nas
  LV UUID                lOzJvL-HjgL-1XeN-QIsU-IP1p-4Z2a-jP3YSe
  LV Write Access        read/write
  LV Creation host, time deskmeetx300, 2022-10-01 13:57:21 +0000
  LV Status              available
  # open                 0
  LV Size                <7.28 TiB
  Current LE             1907719
  Mirrored volumes       2
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:4 

/dev/nas/lvnasというパスで作成されたことがわかります。ここをExt4でフォーマットします。次のコマンドを実行してください。

$ sudo mkfs.ext4 /dev/nas/lvnas 

/media/nasdriveとしてマウントするようにします。次のコマンドを実行してください。

$ sudo mkdir /media/nasdrive
$ sudo sh -c  "echo /dev/nas/lvnas /media/nasdrive ext4 defaults 0 0 >>/etc/fstab"
$ sudo mount -a

mountコマンドで実際にマウントされているか確認してください。

Nextcloudのセットアップ

NASで使用するサーバーといえばSambaですが、第703回でも取り上げたようにNextcloudをNASで動作させるのも悪くない選択です図6⁠。NextcloudはWebDAV互換サーバー機能もあるため、Nextcloudクライアント必須というわけではないのもいいです。ただしWindowsではWebDAVクライアントを別途インストールするといいでしょう。

図6 Nextcloudサーバーをセットアップし、別のUbuntuからオンラインアカウントで設定しているところ
図6

SambaにせよNextcloudにせよその他にせよ、セットアップや設定方法はいくらでも他で解説されているため省略します。

NICをどうするか(ふたたび)

第732回でも紹介したように、DeskMeetのNICはGbEで、NASとして使用するには今となっては充分な速度とはいえません。

普通に考えればPCI Expressスロットに空きがあるため、ここにNICを増設することになります。しかしGPE-2500Tを増設した場合にHDDとの隙間があまりありません図7⁠。

図7 HDDとNICの隙間があまりない
図7

これを問題ないと判断するか、近すぎると判断するかは難しいところです。HDDと近すぎることによって熱の影響を受ける可能性はあるものの、RTL8125Bはそもそも発熱があまりないNICです。それでも怖いというのであればAS-U2.5G2のようなUSB接続のものを選択しましょう。

GPE-2500Tを接続した場合はNICのポートが2つになりますが、実際にGPE-2500Tを接続したあとに、どちらのポートにもLANケーブルを接続してみてもIPアドレスを取得しなかったので焦りました。

ネットワークの設定が書かれている/etc/netplan/00-installer-config.yamlを確認したところ、次のようになっていました。

This is the network config written by 'subiquity'
network:
  ethernets:
    enp2s0:
      dhcp4: true
  version: 2

さらにip aコマンドを実行してみると、次のような結果が返ってきました。

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp1s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
    link/ether 88:c9:b3:b0:65:cc brd ff:ff:ff:ff:ff:ff
    inet6 fe80::8ac9:b3ff:feb0:65cc/64 scope link 
       valid_lft forever preferred_lft forever
3: enp3s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
    link/ether a8:a1:59:af:64:76 brd ff:ff:ff:ff:ff:ff

つまりenp2s0がなくなり、enp1s0とenp3s0になっていたのが原因とわかります。

そこで、/etc/netplan/00-installer-config.yamlを次のように変更します。

# This is the network config written by 'subiquity'
network:
  ethernets:
    enp1s0:
      dhcp4: true
    enp3s0:
      dhcp4: true
  version: 2

そしてこの変更を次のコマンドで適用します。

$ sudo netplan try

しばらく待っていると変更が適用されます。適用後LANケーブルを接続するとIPアドレスが取得できました。

おすすめ記事

記事・ニュース一覧