iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 10
0
DevOps

Oops Step ( Home lab of a kind ) 系列 第 10

More storage space ( Overlay file-system )

如果各位跟著一起操作到今天,相信你的路由器已經被折騰的要上訪了。那麼會發生什麼事呢?路由器上訪會神秘消失,需要孟姜女哭倒長城。您需要科學上網、科學辦案。
說真的,第一個應該是內建儲存空間爆了。不知道大家經歷過多少次類似事件。在某個晚上,不知不覺下個指令,但是系統給你相應不理。你摸不清頭緒,直到系統告訴你檔案系統爆炸了。
老師,Music~~~~

前面在介紹安裝Budgie系統時,有介紹利用FUSE掛載(mount --bind)。而這類似的功能,在OpenWrt也一樣有類似運用,但是它叫做Overlay Filesystem。
具體地說,系統上會區分成兩種區域,一個是原始的系統,可能是jffs也可能是squashfs。而所有新的設定、檔案其實可以視作另一個可寫層(對!是不是感覺很像Docker?根本就是同一種技術重複利用)。因此當系統要進行reset,按鍵後行為就是把overlay清除掉,系統就回到出廠值(Factory Reset)。
好的,我們先聚焦,處理如何讓OpenWrt類路由器,可以用USB碟存放資料。

https://ithelp.ithome.com.tw/upload/images/20190910/20094403NkGH14myOB.png

乍看之下luci有功能耶。但是我試過,這不是男人的浪漫,不能用。
真男人就算是隨身碟,也是這樣

這個轉換前置條件是你要確定你的目前firmware可以讀取隨身碟的檔案系統,而我一定是選ext4或ext2。

sudo opkg update && sudo opkg install kmod-usb-storage block-mount kmod-fs-ext4 fdisk e2fsprogs
fdisk /dev/sda # 切好分割區

我的作法是整個送給它,不要切swap,甚至更懶,連分割都跳過(啊?可以這樣)直接mkfs.ext4 /dev/sda
是的,真的可以。
再來是把目/overlay移轉

mount /dev/sda /mnt
(tar -C /overlay -cvf - . | tar -C /mnt -xf - )|| (cp -a -f /overlay/. /mnt)
umount /mnt

讓我們看看

root@Bosley:/home/icekimo# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/root                13568     13568         0 100% /rom
tmpfs                    62516       112     62404   0% /tmp
/dev/mtdblock6             384       268       116  70% /overlay
overlayfs:/overlay         384       268       116  70% /
tmpfs                      512         0       512   0% /dev
root@Bosley:/home/icekimo#umount /dev/mtdblock6 || umount /overlay #就是卸載
root@Bosley:/home/icekimo# mount /dev/sda /overlay && df # 試試看新的區域
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/root                13568     13568         0 100% /rom
tmpfs                    62516       112     62404   0% /tmp
overlayfs:/overlay         384       268       116  70% /
tmpfs                      512         0       512   0% /dev
/dev/sda              29428620     45368  27865276   0% /overlay
root@Bosley:/home/icekimo# vi /etc/config/fstab && 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 uuid '09a26c75-73c2-48b0-87e2-79e9e5896d5c'
        option fstype 'ext4'
        option target '/overlay'
        option enabled '1'

root@Bosley:/home/icekimo#reboot #確認uuid就是你要的/dev/sda,不然你會中無限月讀。

回到我們主題的第一件功課,我的目標就是發展出好維護的實驗環境(Value),而這幾天陸續記下的就是對應的活動。
在架構中我將系統內的數據定義為三種
1.可再生的,如OS、AP
2.獨創需版控的、需備份的
3.中繼可被清除的
然後再依據各系統設備上的特性去安排(layout),同時運用適當技術去管理。那麼路由器創造出這[sword of thousand truths] USB碟具有什麼神奇能力?/images/emoticon/emoticon31.gif 我不知道
除了拓展系統儲存空間外,也可作為設定檔的備份處。接下來的日子中Bosley還會持續的一直被折騰,就像

所以重置後資料不見了怎麼辦?從overlay掛回去啊,簡單。相同的答案也一樣會出現在很多場景。VM掛回硬碟、Docker掛回Volume。


上一篇
NGINX -s reload (Part 1)
下一篇
libvirt
系列文
Oops Step ( Home lab of a kind ) 34

尚未有邦友留言

立即登入留言