[ReadyNAS Duo v2][OpenWrt] ストレージを拡張する ============================================= 概要 ---- OpenWrt化したReadyNAS Duo v2のストレージを拡張する。 OpenWrt化したあとのルート`/`のストレージデバイスは、容量128MBしかないNANDフラッシュであるため、パッケージをじゃんじゃんインストールしているとすぐに容量不足に陥ってしまう。 ReadyNASは、2本のHDDスロットを持つNASなので、このHDD上にシステム領域を持たせて、容量不足の心配をなくしてしまうが目的。 戦略 ---- もともとのReadyNASのファームウェアで動いていたときから、HDDのパーティション構成自体は変更していない。 2台のHDDを使って、パーティション構成はそのまま踏襲し、下図のようにRAIDを構成(md*デバイス作成)する。 1番目の領域をシステム、2番目の領域をスワップ、3番目の領域をデータ領域とする。 {{:nas:readynas_raid.drawio.png?400|}} ### 事前調査 いまのストレージはこんな感じ ``` hiroshi@OpenWrt:/mnt/md3/homes/hiroshi$ df -h Filesystem Size Used Available Use% Mounted on /dev/root 2.5M 2.5M 0 100% /rom tmpfs 122.3M 2.5M 119.8M 2% /tmp /dev/ubi0_1 104.0M 18.7M 80.6M 19% /overlay overlayfs:/overlay 104.0M 18.7M 80.6M 19% / tmpfs 512.0K 0 512.0K 0% /dev /dev/md3 2.7T 60.0K 2.5T 0% /mnt/md3 hiroshi@OpenWrt:/mnt/md3/homes/hiroshi$ ``` 2つほど分からないことがある。 まず、ルート`/`がマウントされている`overlayfs:/overlay`がマウントされている(ややこしい)`/dev/ubi0_1`というのは耳慣れないけどなんだろう? https://tech-blog.cerevo.com/archives/177/ 上のページによると、NANDフラッシュメモリ向けのUBIFSというファイルシステムらしい。詳しいことはよく分からないが、ナマの(?)NANDフラッシュメモリはHDDとはアクセスの仕方とかが違うので、そういうのをOSからうまく扱えるようにしているのだ、とざっくり理解した(つもりになった)。 もう一つは、`overlayfs:/overlay`のoverlayfsって何? https://wiki.archlinux.jp/index.php/Overlayfs https://qiita.com/awakia/items/a9296840349f0b6f4482 上のページなどを読むが、まだよくわからない。リードオンリー(そもそも書き込めない)や書き込み回数が制限される(のであんまり頻繁に書き換えを行いたくない)デバイスとHDDやSSD、USBメモリのような書き換えてナンボのデバイスをガッチャンコして、表面的には一つの自由に読み書きが行えるストレージデバイスに見せかける仕組み、といったところだろうか。 OpenWrtのルート`/`を拡張した先例を下に見つけた。この方はUSBメモリへ、だが、こちらはRAIDデバイスの/dev/md1 へ。 https://qiita.com/somainit/items/014aea356946b13957ff その前に、OpenWrt公式の下記には目を通しておくべきだな。 https://openwrt.org/docs/guide-user/storage/usb-drives https://openwrt.org/docs/techref/filesystems https://openwrt.org/docs/guide-user/additional-software/extroot_configuration 手順 ---- スワップとデータ領域はすでに[[nas:readynas_duo_v2_openwrt_raid|こちら]]で作業済みなので、1番目のパーティションをRAID構築、ファイルシステム作成、移行の順で実施する。 ``` hiroshi@OpenWrt:/mnt/md3/homes/hiroshi$ sudo mdadm --create /dev/md1 --level=1 - -raid-devices=2 /dev/sda1 /dev/sdb1 Password: mdadm: /dev/sda1 appears to be part of a raid array: level=raid1 devices=2 ctime=Thu May 26 21:28:45 2022 mdadm: Note: this array has metadata at the start and may not be suitable as a boot device. If you plan to store '/boot' on this device please ensure that your boot-loader understands md/v1.x metadata, or use --metadata=0.90 mdadm: /dev/sdb1 appears to be part of a raid array: level=raid1 devices=2 ctime=Thu May 26 21:28:45 2022 Continue creating array? y mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md1 started. hiroshi@OpenWrt:/mnt/md3/homes/hiroshi$ cat /proc/mdstat Personalities : [raid0] [raid1] [raid10] md1 : active raid1 sdb1[1] sda1[0] 4189184 blocks super 1.2 [2/2] [UU] [===>.................] resync = 18.1% (762560/4189184) finish=0.3min speed=152512K/sec md3 : active raid1 sda3[0] sdb3[1] 2925413760 blocks super 1.2 [2/2] [UU] bitmap: 2/22 pages [8KB], 65536KB chunk md2 : active raid0 sda2[0] sdb2[1] 1044480 blocks super 1.2 512k chunks unused devices: hiroshi@OpenWrt:/mnt/md3/homes/hiroshi$ sudo mkfs.ext4 /dev/md1 mke2fs 1.46.5 (30-Dec-2021) Creating filesystem with 1047296 4k blocks and 262144 inodes Filesystem UUID: d6426954-4eed-4d17-af56-85f15dfce2b8 Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736 Allocating group tables: done Writing inode tables: done Creating journal (16384 blocks): done Writing superblocks and filesystem accounting information: done hiroshi@OpenWrt:/mnt/md3/homes/hiroshi$ ``` /etc/config/mdadm に下記を追加して、 ``` config array option device /dev/md1 option name OpenWrt:1 list devices /dev/sda1 list devices /dev/sdb1 ``` こちらの[[nas:readynas_duo_v2_openwrt_fstab|fstab設定]]をもう一度やって(追加された/mnt/md1もenabledを1に) ReadyNASをreboot。 これで /mnt/md1 が起動時にマウントされるようになりました。 ``` hiroshi@OpenWrt:/mnt/md3/homes/hiroshi$ df -h Filesystem Size Used Available Use% Mounted on /dev/root 2.5M 2.5M 0 100% /rom tmpfs 122.3M 2.3M 120.0M 2% /tmp /dev/ubi0_1 104.0M 18.7M 80.6M 19% /overlay overlayfs:/overlay 104.0M 18.7M 80.6M 19% / tmpfs 512.0K 0 512.0K 0% /dev /dev/md3 2.7T 60.0K 2.5T 0% /mnt/md3 /dev/md1 3.9G 24.0K 3.6G 0% /mnt/md1 hiroshi@OpenWrt:/mnt/md3/homes/hiroshi$ ``` (これからどうやるんだ?) --- 参考にしたサイト https://qiita.com/somainit/items/12797800741c73369fa8 現状 ``` root@OpenWrt:~# cat /etc/mtab /dev/root /rom squashfs ro,relatime 0 0 proc /proc proc rw,nosuid,nodev,noexec,noatime 0 0 sysfs /sys sysfs rw,nosuid,nodev,noexec,noatime 0 0 cgroup2 /sys/fs/cgroup cgroup2 rw,nosuid,nodev,noexec,relatime,nsdelegate 0 0 tmpfs /tmp tmpfs rw,nosuid,nodev,noatime 0 0 /dev/ubi0_1 /overlay ubifs rw,noatime,assert=read-only,ubi=0,vol=1 0 0 overlayfs:/overlay / overlay rw,noatime,lowerdir=/,upperdir=/overlay/upper,workdir=/overlay/work 0 0 tmpfs /dev tmpfs rw,nosuid,noexec,noatime,size=512k,mode=755 0 0 devpts /dev/pts devpts rw,nosuid,noexec,noatime,mode=600,ptmxmode=000 0 0 debugfs /sys/kernel/debug debugfs rw,noatime 0 0 none /sys/fs/bpf bpf rw,nosuid,nodev,noexec,noatime,mode=700 0 0 /dev/md3 /mnt/md3 ext4 rw,relatime 0 0 /dev/md1 /mnt/md1 ext4 rw,relatime 0 0 root@OpenWrt:~# ``` ``` root@OpenWrt:~# block info /dev/ubiblock0_0: UUID="bc4defb3-13efe5ce-fb9e8b21-f367bc4f" VERSION="4.0" MOUNT="/rom" TYPE="squashfs" /dev/ubi0_1: UUID="683a0be3-91b9-43b0-837b-9f66dd5f0336" VERSION="w5r0" MOUNT="/overlay" TYPE="ubifs" /dev/sda1: UUID="d1675450-f945-d915-a2ae-2789536908f1" LABEL="OpenWrt:1" TYPE="linux_raid_member" /dev/sda2: UUID="133d7fd3-0120-9fbf-5004-cb32421736b5" LABEL="OpenWrt:2" TYPE="linux_raid_member" /dev/sda3: UUID="bee41517-55b3-802c-f940-4605bc06b2d9" LABEL="OpenWrt:3" TYPE="linux_raid_member" /dev/sdb1: UUID="d1675450-f945-d915-a2ae-2789536908f1" LABEL="OpenWrt:1" TYPE="linux_raid_member" /dev/sdb2: UUID="133d7fd3-0120-9fbf-5004-cb32421736b5" LABEL="OpenWrt:2" TYPE="linux_raid_member" /dev/sdb3: UUID="bee41517-55b3-802c-f940-4605bc06b2d9" LABEL="OpenWrt:3" TYPE="linux_raid_member" /dev/md1: UUID="d6426954-4eed-4d17-af56-85f15dfce2b8" VERSION="1.0" MOUNT="/mnt/md1" TYPE="ext4" /dev/md2: VERSION="1" TYPE="swap" /dev/md3: UUID="eddcf2be-32f6-4be7-9c58-85dccafcf382" VERSION="1.0" MOUNT="/mnt/md3" TYPE="ext4" root@OpenWrt:~# ``` う〜ん。現在`/dev/ubi0_1`をどこで`/overlay`にマウントするように設定しているのか分からない。 /etc/config/fstabにはそれっぽい記述無いんだね。 現在`/mnt/md1`にマウントされている`/dev/md1`を新たに`/overlay`にマウントするようにすればよさそうなんだけど。 現在のrootfs(/overlay)を/mnt/md1にコピーする ``` root@OpenWrt:~# tar -C /overlay -cvf - . | tar -C /mnt/md1/ -xf - ``` fstabを変更する。 ``` root@OpenWrt:/etc/config# cat /etc/config/fstab config global option anon_swap '0' option anon_mount '0' option auto_swap '1' option auto_mount '1' option delay_root '5' option check_fs '0' config mount option target '/mnt/sda1' option uuid 'd1675450-f945-d915-a2ae-2789536908f1' option enabled '0' config mount option target '/mnt/sda2' option uuid '133d7fd3-0120-9fbf-5004-cb32421736b5' option enabled '0' config mount option target '/mnt/sda3' option uuid 'bee41517-55b3-802c-f940-4605bc06b2d9' option enabled '0' config mount option target '/mnt/sdb1' option uuid 'd1675450-f945-d915-a2ae-2789536908f1' option enabled '0' config mount option target '/mnt/sdb2' option uuid '133d7fd3-0120-9fbf-5004-cb32421736b5' option enabled '0' config mount option target '/mnt/sdb3' option uuid 'bee41517-55b3-802c-f940-4605bc06b2d9' option enabled '0' config mount option target '/overlay' option uuid 'd6426954-4eed-4d17-af56-85f15dfce2b8' option enabled '1' config swap option device '/dev/md2' option enabled '1' config mount option target '/mnt/md3' option uuid 'eddcf2be-32f6-4be7-9c58-85dccafcf382' option enabled '1' root@OpenWrt:/etc/config# ``` /mnt/md1 のところを /overlay に書き換えた。 /etc/config/fstabを直接編集してたけど、どうも本来はuciコマンドで変更するのが正しいやり方っぽい ### 失敗 えいやあ、で再起動してみたが、やっぱり失敗 `/overlay` は `/dev/ubi0_1` のままだ。`/dev/md0`は`/overlay`にマウントできずどこかへ消えてしまった。 ``` hiroshi@VPCF24AJ-ubuntu:~$ ssh openwrt.local BusyBox v1.35.0 (2022-05-20 19:00:24 UTC) built-in shell (ash) _______ ________ __ | |.-----.-----.-----.| | | |.----.| |_ | - || _ | -__| || | | || _|| _| |_______|| __|_____|__|__||________||__| |____| |__| W I R E L E S S F R E E D O M ----------------------------------------------------- OpenWrt SNAPSHOT, r19689-19ef3b54f4 ----------------------------------------------------- hiroshi@OpenWrt:/mnt/md3/homes/hiroshi$ df Filesystem 1K-blocks Used Available Use% Mounted on /dev/root 2560 2560 0 100% /rom tmpfs 125256 2392 122864 2% /tmp /dev/ubi0_1 106536 19144 82556 19% /overlay overlayfs:/overlay 106536 19144 82556 19% / tmpfs 512 0 512 0% /dev /dev/md3 2878354352 60 2732067220 0% /mnt/md3 hiroshi@OpenWrt:/mnt/md3/homes/hiroshi$ ``` `/dev/ubi0_1` をどこか別の場所にマウントするようにしないといけないのかな:-/ まだ勉強が必要そうだね。 https://openwrt.org/docs/techref/block_mount https://openwrt.org/docs/techref/flash.layout