DeskPi Proセットアップ
やること
- 一度SDカードにRaspberry Pi OSを入れて起動(パーティション編集&USB起動設定用)
- USBから起動する設定
- USB接続したSSDにOSインストール
- メモリ4GBしかないのでSwapに8GB割り当てる
SDカードにOSを入れて起動
Raspberry Pi OSのイメージをダウンロード www.raspberrypi.com ダウンロードしたイメージを解凍してddでSDカードに書き込み
sudo dd bs=4M if=<イメージファイル> of=/dev/sd* status=progress conv=fsync
OSアップデート&DeskPiセットアップ
起動出来たらアップデートを実行して再起動
sudo apt update
sudo apt upgrade
再起動したらDeskPiのインストールスクリプトを実行する。 wiki.deskpi.com スクリプトがエラーになるのでWikiの手順を実行する前にgccをインストールする。
sudo apt install gcc
cd ~
git clone https://github.com/DeskPi-Team/deskpi.git
cd ~/deskpi/
chmod +x install.sh
sudo ./install.sh
インストール出来たら再起動。
USB SSDから起動する設定
wiki.deskpi.com DeskPiのWikiに記載されている手順でUSB SSDから起動する設定をする。 起動したら設定ツールを起動
sudo raspi-config
Advanced OptionsのBoot OrderでUSB Bootを選択 Boot Loader VersionでLatest Versionを選択 保存したら再起動して以下を実行
sudo -E rpi-eeprom-config --edit
何も変更しないでCtrl+Xで抜ける
SSDにOSインストール
Ubuntuのイメージを落としてきてSSDに書き込み ubuntu.com
sudo dd bs=4M if=<イメージファイル> of=/dev/sd* status=progress conv=fsync
SDカードを抜いて起動してSSDに入れたUbuntuで起動することを確認する。 起動出来たらシャットダウンしてSSDを抜いて、SDカードに入れたOSを起動。 480GBのSSDを以下のように使いたいので、GPartedを使用してパーティションをリサイズしていく。/dev/sda1は/boot/firemwareで使われているのでsda2以降を編集する。
/dev/sda2 32GB /以下用
/dev/sda3 8GB Swap用
/dev/sda4 残り その他
終わったらシャットダウンしてSDを抜いてSSDで起動 完成すると以下のような感じ
Disk /dev/sda: 447.13 GiB, 480103981056 bytes, 937703088 sectors
Disk model: 480CG3VX
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 33553920 bytes
Disklabel type: dos
Disk identifier: 0xdeca7dfc
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 526335 524288 256M c W95 FAT32 (LBA)
/dev/sda2 526336 67635199 67108864 32G 83 Linux
/dev/sda3 67635200 84412415 16777216 8G 83 Linux
/dev/sda4 84412416 937701375 853288960 406.9G 83 Linux
ubuntu@ubuntu:~$ df -h
Filesystem Size Used Avail Use% Mounted on
tmpfs 380M 3.0M 377M 1% /run
/dev/sda2 32G 3.4G 27G 12% /
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
/dev/sda1 253M 103M 150M 41% /boot/firmware
tmpfs 380M 4.0K 380M 1% /run/user/1000
Swap作成
Swapを作成
ubuntu@ubuntu:~$ sudo mkswap /dev/sda3
Setting up swapspace version 1, size = 8 GiB (8589930496 bytes)
no label, UUID=cb0d5595-6359-4ad1-add8-9bd58e6a1a65
ubuntu@ubuntu:~$ sudo swapon /dev/sda3
ubuntu@ubuntu:~$ free -m
total used free shared buff/cache available
Mem: 3790 211 3172 3 405 3414
Swap: 8191 0 8191
fstabに追加しておく
sudo vi /etc/fstab
/dev/sda3 swap swap defaults 0 0
モジュール追加
sudo apt install linux-modules-extra-raspi
Ubuntu21.10でKVMのbridge作成
KVMでVMが利用するbridgeネットワークを作成する。OSはUbuntu21.10を使用。
bridgeを作成する
netplanを利用するので設定を記述するyamlファイルを作成する。IPアドレスはルーター側で固定しているのでdhcpはyesで作成する。
vi /etc/netplan/99_config.yaml
network:
version: 2
renderer: networkd
ethernets:
enp9s0:
dhcp4: yes
bridges:
br0:
dhcp4: yes
interfaces:
- enp9s0
設定を反映する。nmcliでコマンドを色々うつよりyamlに設定を書いてapplyするだけのnetplanのほうが楽。
hoge@hoge-desktop:~$ sudo netplan apply
hoge@hoge-desktop:~$ nmcli c s
NAME UUID TYPE DEVICE
enp9s0 848d316f-7ef5-41e4-9c17-7937195b7fbf ethernet enp9s0
br0 08d2ea2b-7d18-4ee7-a0e3-9ad825b9d48c bridge br0
KVMで使う用に定義する
bridge用の定義ファイルを作成する。
vi /usr/share/libvirt/networks/bridged-network.xml
<network>
<name>bridged-network</name>
<forward mode="bridge" />
<bridge name="br0" />
</network>
作成したファイルを引数に入れてnet-defineする。
hoge@hoge-desktop:~$ virsh net-define /usr/share/libvirt/networks/bridged-network.xml
Network bridged-network defined from /usr/share/libvirt/networks/bridged-network.xml
これだけではまだinactiveなので--allをつけないと表示されない。
hoge@hoge-desktop:~$ virsh net-list --all
Name State Autostart Persistent
------------------------------------------------------
bridged-network inactive no yes
ネットワークの有効化と自動起動を設定する。
root@hoge-desktop:~$ virsh net-start bridged-network
Network bridged-network started
hoge@hoge-desktop:~$ virsh net-list
Name State Autostart Persistent
----------------------------------------------------
bridged-network active no yes
hoge@hoge-desktop:~$ virsh net-autostart bridged-network
Network bridged-network marked as autostarted
hoge@hoge-desktop:~$ virsh net-list
Name State Autostart Persistent
----------------------------------------------------
bridged-network active yes yes
BtrfsでRAID5を使う
btrfsは複数のデバイスから1つのプールを作成することができる。プールはbtrfsが備えるRAID機能を用いることができる。今回は6本のディスクでRAID5を使用したプールを作成する。
btrfsについてはBtrfsの薄い本を参考にした。
追加したディスクの判別
fdisk -lでディスクの情報を表示してDisk Modelで追加したディスクか判別した。ディスクは秋葉原のショップインバースで500GB1200円で売られていたものを5本と、別の日に特価で640GB1200円の1本の合計6本を追加した。通常RAIDはディスクのサイズを揃えて置かないと容量が無駄になるがbtrfsのRAIDは容量が異なっていてもいい感じに使用してくれる。
hoge@hoge-desktop:~$ sudo fdisk -l
--- 中略 ---
ディスク /dev/sda: 596.17 GiB, 640135028736 バイト, 1250263728 セクタ
Disk model: ST9640320AS
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスク /dev/sdb: 465.76 GiB, 500107862016 バイト, 976773168 セクタ
Disk model: ST500LT012-1DG14
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 4096 バイト
I/O サイズ (最小 / 推奨): 4096 バイト / 4096 バイト
ディスク /dev/sdc: 465.76 GiB, 500107862016 バイト, 976773168 セクタ
Disk model: ST500LT012-1DG14
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 4096 バイト
I/O サイズ (最小 / 推奨): 4096 バイト / 4096 バイト
ディスク /dev/sdd: 465.76 GiB, 500107862016 バイト, 976773168 セクタ
Disk model: ST500LM021-1KJ15
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 4096 バイト
I/O サイズ (最小 / 推奨): 4096 バイト / 4096 バイト
ディスクラベルのタイプ: dos
ディスク識別子: 0xc28aee7b
デバイス 起動 開始位置 最後から セクタ サイズ Id タイプ
/dev/sdd1 2048 976769023 976766976 465.8G 7 HPFS/NTFS/exFAT
ディスク /dev/sde: 465.76 GiB, 500107862016 バイト, 976773168 セクタ
Disk model: ST500LT012-1DG14
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 4096 バイト
I/O サイズ (最小 / 推奨): 4096 バイト / 4096 バイト
--- 中略 ---
ディスク /dev/sdg: 465.76 GiB, 500107862016 バイト, 976773168 セクタ
Disk model: ST500LT012-1DG14
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 4096 バイト
I/O サイズ (最小 / 推奨): 4096 バイト / 4096 バイト
RAID5でプールを作成する
最初にbtrfs関係のパッケージを追加する。
sudo apt install btrfs-progs -y
-dでraid5を指定 -mはメタデータの設定でこちらもraid5にしておく データはRAID5でメタデータはRAID1みたいな構成もできる。
hoge@hoge-desktop:~$ mkfs.btrfs -m raid5 -d raid5 /dev/sda /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdg
btrfs-progs v5.10.1
See http://btrfs.wiki.kernel.org for more information.
probe of /dev/sda failed, cannot detect existing filesystem.
ERROR: use the -f option to force overwrite of /dev/sda
エラーが出て失敗。gdiskでGPTとMBRを消す。
hoge@hoge-desktop:~$ sudo gdisk /dev/sda
GPT fdisk (gdisk) version 1.0.8
Partition table scan:
MBR: not present
BSD: not present
APM: not present
GPT: not present
Creating new GPT entries in memory.
Command (? for help): m
b back up GPT data to a file
c change a partition's name
d delete a partition
i show detailed information on a partition
l list known partition types
n add a new partition
o create a new empty GUID partition table (GPT)
p print the partition table
q quit without saving changes
r recovery and transformation options (experts only)
s sort partitions
t change a partition's type code
v verify disk
w write table to disk and exit
x extra functionality (experts only)
? print this menu
Command (? for help): d
No partitions
Command (? for help): x
Expert command (? for help): z
About to wipe out GPT on /dev/sda. Proceed? (Y/N): y
GPT data structures destroyed! You may now partition the disk using fdisk or
other utilities.
Blank out MBR? (Y/N): y
再実行したものの今度はsddにdosパーティションがあるので失敗(これはfdisk -lでみた時点でわかっていた)。これもgdiskで消す。
hoge@hoge-desktop:~$ sudo mkfs.btrfs -m raid5 -d raid5 /dev/sda /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdg
btrfs-progs v5.10.1
See http://btrfs.wiki.kernel.org for more information.
/dev/sdd appears to contain a partition table (dos).
ERROR: use the -f option to force overwrite of /dev/sdd
消したあとにもう一度mkfs.btrfsを実行。 今度は正常に作成することができた。465.76GiB*5+596.17GiB(Total 2924.97GiB)の変則的な構成だと 2.86TiBになった。
hoge@hoge-desktop:~$ sudo mkfs.btrfs -m raid5 -d raid5 /dev/sda /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdg
btrfs-progs v5.10.1
See http://btrfs.wiki.kernel.org for more information.
Label: (null)
UUID: ba3f187a-bfb3-47b5-aa02-334b15f2ea33
Node size: 16384
Sector size: 4096
Filesystem size: 2.86TiB
Block group profiles:
Data: RAID5 5.00GiB
Metadata: RAID5 853.12MiB
System: RAID5 13.12MiB
SSD detected: no
Incompat features: extref, raid56, skinny-metadata
Runtime features:
Checksum: crc32c
Number of devices: 6
Devices:
ID SIZE PATH
1 596.17GiB /dev/sda
2 465.76GiB /dev/sdb
3 465.76GiB /dev/sdc
4 465.76GiB /dev/sdd
5 465.76GiB /dev/sde
6 465.76GiB /dev/sdg
btrfs filesystemc show
hoge@hoge-desktop:~$ sudo btrfs filesystem show ba3f187a-bfb3-47b5-aa02-334b15f2ea33
Label: none uuid: ba3f187a-bfb3-47b5-aa02-334b15f2ea33
Total devices 6 FS bytes used 128.00KiB
devid 1 size 596.17GiB used 1.17GiB path /dev/sda
devid 2 size 465.76GiB used 1.17GiB path /dev/sdb
devid 3 size 465.76GiB used 1.17GiB path /dev/sdc
devid 4 size 465.76GiB used 1.17GiB path /dev/sdd
devid 5 size 465.76GiB used 1.17GiB path /dev/sde
devid 6 size 465.76GiB used 1.17GiB path /dev/sdg
マウントする
マウントするときにcompressオプションを使うと透過圧縮が使える。
sudo mount -o compress=lzo UUID=ba3f187a-bfb3-47b5-aa02-334b15f2ea33 /data
ついでにラベルをつける
sudo btrfs filesystem label /data pool01
hoge@hoge-desktop:~$ sudo btrfs filesystem show /data
Label: 'pool01' uuid: ba3f187a-bfb3-47b5-aa02-334b15f2ea33
Total devices 6 FS bytes used 1.56MiB
devid 1 size 596.17GiB used 1.17GiB path /dev/sda
devid 2 size 465.76GiB used 1.17GiB path /dev/sdb
devid 3 size 465.76GiB used 1.17GiB path /dev/sdc
devid 4 size 465.76GiB used 1.17GiB path /dev/sdd
devid 5 size 465.76GiB used 1.17GiB path /dev/sde
devid 6 size 465.76GiB used 1.17GiB path /dev/sdg
最後にfstabに追加して起動したときにマウントするようにしておく。
UUID=ba3f187a-bfb3-47b5-aa02-334b15f2ea33 /data btrfs compress=lzo 0 0
KVMのストレージプールのディレクトリを変更する
KVMをインストールしたときのデフォルトだと、ディスクのイメージは以下のディレクトリに格納されている。
/var/lib/libvirt/images/ hoge@hoge-desktop:~$ sudo ls -l /var/lib/libvirt/images/ 合計 16955880 -rw-r--r-- 1 libvirt-qemu kvm 11065622528 1月 29 01:02 CentOS-Stream-8-x86_64-latest-dvd1.iso -rw------- 1 root root 21478441031 3月 12 14:24 centos-stream8.qcow2 -rw-r--r-- 1 libvirt-qemu kvm 1261371392 8月 24 2021 ubuntu-20.04.3-live-server-amd64.iso -rw-rw-r-- 1 libvirt-qemu kvm 1269377024 1月 8 20:38 ubuntu-21.10-live-server-amd64.iso
別のディスクなどにディレクトリを作成して、そちらを使用するように設定する。
既存のプールを表示する。今回だとインストールしたときに作成されたdefaultしかない状態。
hoge@hoge-desktop:~$ virsh pool-list Name State Autostart ------------------------------- default active yes hoge@hoge-desktop:~$ virsh pool-info default Name: default UUID: 4b810024-19ca-4f6d-bcf2-388a85f53e95 State: running Persistent: yes Autostart: yes Capacity: 456.96 GiB Allocation: 57.19 GiB Available: 399.76 GiB
poolを停止して定義を解除する。
hoge@hoge-desktop:~$ sudo virsh pool-destroy default Pool default destroyed hoge@hoge-desktop:~$ sudo virsh pool-undefine default Pool default has been undefined
ここで新しく使用するディレクトリを作成。今回は/data/vmimagesというディレクトリを作成した。 ディレクトリを作成したらpoolを定義する。
virsh pool-define-as --name default --type dir --target /data/vmimages
このままだとまだ利用できないので設定を変更する。 Autostart yesに変更
hoge@hoge-desktop:~$ virsh pool-info default Name: default UUID: f5780d48-787f-4a5c-b27d-7f14ace00754 State: inactive Persistent: yes Autostart: no hoge@hoge-desktop:~$virsh pool-autostart default Pool default marked as autostarted hoge@hoge-desktop:/data$ virsh pool-info default Name: default UUID: f5780d48-787f-4a5c-b27d-7f14ace00754 State: inactive Persistent: yes Autostart: yes
poolをstartすると利用できるようになる
hoge@hoge-desktop:~$virsh pool-start default Pool default started hoge@hoge-desktop:~$virsh pool-list Name State Autostart ------------------------------- default active yes hoge@hoge-desktop:~$ virsh pool-info default Name: default UUID: f5780d48-787f-4a5c-b27d-7f14ace00754 State: running Persistent: yes Autostart: yes Capacity: 2.86 TiB Allocation: 4.83 MiB Available: 2.86 TiB