Ubuntu日和
【第71回】「GMKtec NucBox G9」でNASを作る。RAID 5や高度なKSMBDの構築とSSDの選定
2025年3月15日 06:14
第70回ではUbuntuの設定だけで終わってしまったので、今回いよいよNASとして使用する方法を紹介する。また、SSDの選定についても軽く紹介したい。
NASの使い方
NucBox G9をNASにするとして、どのような用途にするかが重要である。
そもそも筆者はすでにNASを運用中である。第31回と第64回で少し紹介している。
SG13に無理やり3.5インチHDDを2台積んでいるが、現在の使用状況を見ているとデータ置き場の8TB HDDは4TB SSDでも足りそうだ。
また、前回紹介したClonezilla用の領域はバックアップ用HDDにあり、現在のところ使用量が1.1TB程度なので、当面は2TB SSDでも収まりそうだ。
というわけで、NucBox G9に2TBと4TBのSSD増設して、それぞれを別のフォルダで共有して切り出すことを考えたが、ぶっちゃけ記事にするにはあまりに地味で面白みがない。
そこで視点を変えてみることにした。
安価なNucBox G9に高価なSSDを取り付けるのだろうかという疑問がある。素性がよく分からないSSDを使用すると、信頼性に疑問が残る。そんなときに登場するのがRAIDだ。RAID 5で冗長性と可用性を高めることにした。
使用するSSD
筆者宅には素性がよく分からないSSDはないが、たまたま未使用の2TB SSDが3本あったので、これを使用する。
具体的には次の3本だ。
このうち、SSD-CK2.0N4PLG3Nは未使用であった。キオクシアの新製品で購入当時は安かったので、使ってみたかったのだ。MZ-V7E2T0BWは想定した用途があったものの、2TBでは足りないことが分かってお蔵入りになったと記憶している。SSD-CK2.0N3G2/Nは特に決まった使い道がない遊軍的な使い方をしている。
パーティションの作成
ではSSDを使えるようにしていこう。まずはパーティションの作成からだ。実のところGUIでも設定可能ではあるが、コマンドラインで解説していく。
念のための警告だが、次の操作によりSSDのデータやパーティションはすべて消去される。誤ったSSDを接続しないように気をつけよう。
パーティションは、パーティションテーブルを作成後に実際のパーティションを作成する。パーティションを分割する必要はないので、作成するパーティションはSSD 1台につき1つだ。
認識しているブロックデバイスを確認するために、次のコマンドを実行する。
$ sudo parted -l
長くなるので詳細な出力は詳細するが、今回は次のようになった。
型番 | ブロックデバイス名 |
---|---|
SSD-CK2.0N3G2/N | /dev/nvme0n1 |
MZ-V7E2T0BW | /dev/nvme1n1 |
SSD-CK2.0N4PLG3N | /dev/nvme2n1 |
ファンに近い方から0、1、2となっている。ゼロオリジンというやつだ。
以下がパーティション作成のコマンドとなる。
$ sudo parted /dev/nvme0n1 mklabel gpt
$ sudo parted /dev/nvme1n1 mklabel gpt
$ sudo parted /dev/nvme2n1 mklabel gpt
$ sudo parted /dev/nvme0n1 mkpart exceriag2 ext4 0% 100%
$ sudo parted /dev/nvme1n1 mkpart 970evo ext4 0% 100%
$ sudo parted /dev/nvme2n1 mkpart exceriaplusg3 ext4 0% 100%
$ sudo parted /dev/nvme0n1 'set 1 lvm on'
$ sudo parted /dev/nvme1n1 'set 1 lvm on'
$ sudo parted /dev/nvme2n1 'set 1 lvm on'
なにか質問されたら”y”を入力してエンターキーを押す。
mkpartオプションのすぐ次はボリュームラベルなので、それぞれ型番の要約などにすると分かりやすいだろう。
RAIDの構築とフォーマット
Linuxで広く使用されるRAIDの方式は、LVMとmdraidがあるが、今回は前者を使用する。LVMもGUIで設定できるが、コマンドラインで解説する。
$ sudo apt install lvm2
$ sudo pvcreate /dev/nvme0n1p1
$ sudo pvcreate /dev/nvme1n1p1
$ sudo pvcreate /dev/nvme2n1p1
$ sudo vgcreate nas /dev/nvme0n1p1 /dev/nvme1n1p1 /dev/nvme2n1p1
$ sudo lvcreate --type raid5 -l 100%VG -n lvnas nas
$ sudo mkfs.ext4 /dev/nas/lvnas
$ sudo mkdir /media/nasraid5
$ echo UUID=(UUID) /media/nasraid5/ ext4 defaults 0 0 |sudo tee -a /etc/fstab
$ sudo systemctl daemon-reload
$ sudo mount -a
LVMで使用するコマンドはlvm2パッケージに含まれているため、まずはインストールする。
LVMは物理ボリューム(Physical Volume=pv)、ボリュームグループ(Volume Group=vg)、論理ボリューム(Logical Volume=lv)を組み合わせて作成する。コマンドの冒頭2文字が何を対象にしているのかを表わしている。
重要なのは次の1行だろう。
$ sudo lvcreate --type raid5 -l 100%VG -n lvnas nas
type引数で「raid5」を指定しているのでRAID5となる。ここを「raid1」にすれば、RAID 1となる。
mkfs.ext4コマンドを実行すると、結果に「Filesystem UUID」というのが表示される。それが「UUID=(UUID)」で使用するUUIDなので、置き換えてほしい。
今回は”d72d6bbb-7679-47c9-b19b-969786d5abbd”であった。従って「UUID=d72d6bbb-7679-47c9-b19b-969786d5abbd」となる。
KSMBDの設定
通常であれば、Sambaの設定をするので第27回を参照のこと、以上解散となるのだが、検証段階でSambaだとあまり速度が出なかった。第64回で紹介した通りSambaで速度を稼ごうとしたらそれなりのCPUパワーが必要であるが、力不足のようだ。NucBox G9はただでさえ速いとはいえないN150を、さらに低電圧で動作させているのが原因と思われる。それはそれとして第64回の結果は未だに疑問に思っているが……。
それはさておき、LinuxカーネルにはSMB(Server Message Block)サーバーを提供する「KSBMD」という機能がある。Ubuntuではカーネルモジュールとして提供している。これはSambaとは違ってマルチスレッド対応なので、もう少し速度が向上すると期待できる。
KSBMDとSambaの設定は割と似ているので、第27回を参考にしつつKSMBDサーバーの設定方法を紹介する。
$ sudo apt install ksmbd-tools
$ sudo mkdir -p /media/nasraid5/ksmbd/{public,$USER}
$ sudo adduser --system --group --no-create-home ksmbd
$ sudo chown ksmbd: /media/nasraid5/ksmbd/public/
$ sudo chown $USER: /media/nasraid5/ksmbd/$USER/
$ sudo chmod 755 /media/nasraid5/ksmbd/public/
$ sudo chmod 755 /media/nasraid5/ksmbd/$USER/
$ sudo ksmbd.adduser --add $USER
$ sudo ksmbd.adduser ksmbd
$ sudo cp /etc/ksmbd/ksmbd.conf.example /etc/ksmbd/ksmbd.conf
KSBMDを実際に使用するためには、ksmbd-toolsというパッケージが必要なので、これをインストールする。あとはおおむね第27回でしていることをなぞっているだけだ。KSMBDはSambaとは違い設定のサンプルファイルが設定用フォルダに置かれているので、これをコピーして編集を加える。
今回は次のようにした。なお$USERは「ikuya」となっている。
$ diff -u /etc/ksmbd/ksmbd.conf.example /etc/ksmbd/ksmbd.conf
--- /etc/ksmbd/ksmbd.conf.example 2024-07-27 21:15:21.000000000 +0900
+++ /etc/ksmbd/ksmbd.conf 2025-02-23 17:31:45.759270322 +0900
@@ -4,7 +4,7 @@
; global parameters
bind interfaces only = no
deadtime = 0
- guest account = nobody
+ guest account = ksmbd
interfaces =
ipc timeout = 0
kerberos keytab file =
@@ -13,14 +13,14 @@
max active sessions = 1024
max connections = 128
max open files = 10000
- netbios name = KSMBD SERVER
+ netbios name = GMK-G9
restrict anonymous = 0
root directory =
server max protocol = SMB3_11
server min protocol = SMB2_10
server multi channel support = no
server signing = disabled
- server string = SMB SERVER
+ server string = GMK-G9
share:fake_fscaps = 64
smb2 leases = no
smb2 max credits = 8192
@@ -57,7 +57,20 @@
vfs objects =
write list =
-[example]
- ; share parameters
- comment = read only /tmp access
- path = /tmp
+[Public]
+ writeable = yes
+ path = /media/nasraid5/ksmbd/public
+ create mask = 0664
+ directory mask = 0775
+ force user = ksmbd
+ force group = ksmbd
+ guest ok = yes
+ guest only = yes
+
+[ikuya]
+ writeable = yes
+ path = /media/nasraid5/ksmbd/ikuya
+ create mask = 0664
+ directory mask = 0775
+ force user = ikuya
+ force group = ikuya
次のコマンドを実行して、この設定を反映させる。
$ sudo systemctl restart ksmbd.service
KSMBDの設定としてはこれで完了だが、Ubuntuの「ファイル」やWindowsのエクスプローラーからは共有フォルダが見えるようにはならない。
UbuntuではAvahiを使用する。次の内容のファイルを作成する。
$ cat /etc/avahi/services/smb.service
<?xml version="1.0" standalone='no'?>
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
<name replace-wildcards="yes">%h</name>
<service>
<type>_smb._tcp</type>
<port>445</port>
</service>
</service-group>
そしてavahi-daemonを再起動する。
$ sudo systemctl restart avahi-daemon.service
Windowsではwsdd2をインストールする。
$ sudo apt install wsdd2
wsdd2はSamba向けの設定になっているので、これをKSMBD向けに書き換える。
$ sudo systemctl edit --full wsdd2.service
内容は次の通りだ。
$ cat /etc/systemd/system/wsdd2.service
[Unit]
Description=WSD/LLMNR Discovery/Name Service Daemon
BindsTo=ksmbd.service
After=ksmbd.service
PartOf=ksmbd.service
(後略)
すなわち”smbd.service”を”ksmbd.service”に変更する。
最後にwsdd2を再起動する。
$ sudo systemctl restart wsdd2.service
軽くベンチマーク
CrystalDiskMarkを使用し、別PCからベンチマークを取ってみることにした。条件はHotレビューの時と同じとする。
RND4KQ1T1を除いて、おおむね同等以上の速度が出ている。
NucBox G9に適したSSD
RAID 5で4TBの共有領域ができたので、これで話は終わりとなるが、NucBox G9にどのようなSSDを接続するのがいいかは気になるところであろう。先のレビューによるとSSDの冷却には小さくて静かなファンが内蔵されているということである。ということは、その冷却性能には不安しかない。今回筆者はたまたま同じ条件(2TB)のSSDが3本あったため、どのような傾向のSSDを選定すれば安心して使用できるかの指針くらいは示せるはずだ。
改めて今回使用したSSDは次の3本だ。
実際に装着したのが次の図となる。
主に見るところは左上の温度だ。左からSSD-CK2.0N3G2/N、MZ-V7E2T0BW、SSD-CK2.0N4PLG3Nである。
この状態で、ログイン後5分経過時点でQDiskInfoを起動したところが次の図となる。
QDiskInfoはUbuntu 24.10からリポジトリに入ったパッケージで、パッケージ名は”qdiskinfo”である。どこかで見たことのあるデザインだ。
この状態でKDiskMarkを実行し、負荷をかけたあとにQDiskInfoで確認すると次のようになった。
SSD-CK2.0N3G2/Nの温度が規定を上回ってしまっている。これは危険だ。
というわけで、OWL-SSDHS03PSを装着してみた。もともとはBA-HM02を装着する予定だったが、蓋が閉まらなかったので諦めた。
ログイン後5分経過時点の情報が次となる。
若干下がっていることが分かる。
この状態でKDiskMarkを実行し、負荷をかけたあとにQDiskInfoで確認すると次のようになった。
ファンから近いSSD-CK2.0N3G2/Nはかなり効果があったが、ファンから遠いあとの2本はヒートシンクによる効果はなかったことが分かった。
結論としては、ファンから一番近いところにヒートシンクつきSSDを装着するのがベストであり、あとはファンの効果が期待できないので装着すべきではないということになる。しかしそれだとNucBox G9のコンセプトが台無しだ。
SSD-CK2.0N4PLG3Nは現行のメインストリームモデルであり、入手も容易だ。これが高負荷時でも64°Cというのは救いとなる。上限は85°Cとのことで、かなりの余裕がある。
SSD-CK2.0N4PLG3Nや各社の最新メインストリームモデルを購入し、ヒートシンクを取り付ける。温度を計測してみて、一番高くなるSSDをファンの近くに装着するといいだろう。それでも冷却に不安があれば、下にファンを置くことを検討したい。