背景
之前寫過,我在家里用了一臺舊的工作站筆記本做了服務器,連上一個綠聯的5位硬盤盒實現簡單的網盤功能,然而,還是覺的不太理想,比如使用filebrowser
雖然可以備份文件和圖片,當使用手機使用網頁,由于網頁無法獲到實況圖片的視頻文件,上傳到硬盤后就丟失了實況圖片,所以就繼續折騰一下
使用環境
mdadm
:實現軟raid的軟件mt photos
:備份照片的客戶端- 4T機械盤兩張
Ubuntu
服務器
軟raid
首先既然要備份家里的圖片,那就要搞個raid
,保證至少可以做到鏡像備份,這里推薦使用mdadm
實現軟raid
將需要實現raid兩個磁盤插入單硬盤盒里面,接上筆記本
df -h
查看磁盤的掛載路徑,如圖,可以看到有個3.5T磁盤掛載到了raid1路徑上,這里的md1實際上是兩張磁盤
使用
lsblk
指令就看sdc
和sdd
在raid1
下
這是我之前已經完成了軟raid
的配置,接下來就看看如何用指令去實現
第一步 安裝mdadm
sudo apt update
sudo apt install mdadm
第二步 使用上一步的指令lsblk查看我們掛載的兩個磁盤的name
第三步 構建raid1
sudo mdadm --create --verbose /dev/md1 --level=1 --raid-devices=2 /dev/sdc /dev/sdd
這條命令將創建一個名為md0
的RAID 1設備,使用/dev/sdb1
和/dev/sdc1
兩個分區作為其成員。
命令解釋 - 這是一個使用mdadm
工具創建磁盤陣列的命令。
mdadm --create
:這是創建磁盤陣列的主要指令部分。
--create
選項告訴mdadm
要創建一個新的磁盤陣列。
--verbose
:這個選項用于在創建過程中顯示詳細的信息,這樣你可以看到陣列創建的每一個步驟和相關的參數設置情況。
mdadm
首先會對指定的磁盤(/dev/sdc
和/dev/sdd
)進行檢查,確保它們適合構建磁盤陣列。如果磁盤上已經有數據,可能會提示你數據將會丟失(這取決于磁盤的狀態和已有數據情況)然后,它會開始創建RAID1陣列。
在--verbose
選項的作用下,可以看到構建的詳情
mdadm: layout defaults to left - symmetric mdadm: chunk size defaults to 512K mdadm: /dev/sdc appears to be part of a raid array: level=raid1 devices=2 ctime=Thu, 01 Jan 1970 00:00:00 GMT mdadm: /dev/sdd appears to be part of a raid array: level=raid1 devices=2 ctime=Thu, 01 Jan 1970 00:00:00 GMT mdadm: partition table exists on /dev/sdc but will be lost or meaningless after creating array mdadm: partition table exists on /dev/sdd but will be lost or meaningless after creating array mdadm: size set to 1000215296K mdadm: automatically enabling write - intent bitmap on large array mdadm: creating array /dev/md1 with level=raid1, num - devices=2 mdadm: device /dev/sdc assumed to be in clean state mdadm: device /dev/sdd assumed to be in clean state mdadm: array /dev/md1 started.
保存 RAID 配置
執行指令,保存mdadm的配置
mdadm -D --scan > /etc/mdadm.conf
創建成功后,系統會將/dev/md1
作為一個新的磁盤設備看待,就像對普通磁盤一樣對它進行格式化(如mkfs.ext4 /dev/md1
將其格式化為ext4文件系統),掛載操作(如mount /dev/md1 /raid1
將其掛載到/raid1
目錄),以便查看操作
比如,我就是永久掛載raid1目錄下,使用上會有點問題,開機的時候,要是磁盤盒沒有插入的話,由于無法加載到磁盤,就會無法進入系統
實現掛載
- 在根目錄創建一個文件夾
mkdir raid1
- 查看硬盤id
blkid /dev/md1
獲取到硬盤的uuid
、類型等信息
- 添加掛載配置
編輯/etc/fstab
文件,添加硬盤信息
vim /etc/fstab
UUID=ae596716-0794-4f54-8ae5-1f1768ae732f /raid1 xfs defaults 0 0
- 檢查掛載
sudo mount -a
如果沒有報錯信息,就證明硬盤被永久掛載到指定目錄
當完成這些操作過,我們的raid1
就實現了,可以將其中一個主磁盤標記為故障,然后查看能不能訪問備份的磁盤,然后重啟恢復,看從備份寫入的東西,會不會同步到,回到主磁盤
測試備份
查看狀態
mdadm -D /dev/md1
可以看到目前的狀態是clean
,也就是正常
mdadm --manage /dev/md1 --fail /dev/sdc
來標記/dev/sdc
為故障狀態
模擬故障
測速同步文件
我們在磁盤中加個文件,然后在重啟恢復正常,查看文件是否已經從備份同步到
重啟后
可以看到磁盤恢復正常后,文件也從備份同步到了主磁盤中
相冊應用
mt-photos
完成這些配置后,就開始需要實現我們的相冊備份了,
這里我使用了mt-photos
作為客戶端,相比較其他軟件,mt-photos
- 本土化方面,相比較其他相冊管理軟件,操作簡單
- 更新及時,可以加群,開發者有問必答
- 功能比較豐富,支持圖片格式很多,連我的相機的
raw
格式也支持 - 多端支持,客戶端包括網頁和移動端(安卓和IOS)
- 它的相冊創建模式和添加文件夾的操作一致,不用考慮脫離軟件,照片無法查看的問題
- 最主要原因可以使用
docker
構建,構建簡單
唯一的問題這是一個買斷制的應用,99塊錢終身(現在128一個月),可以免費試用一個月
搭建mt-photos服務
拉取鏡像
docker pull mtphotos/mt-photos:latest
創建應用的文件夾
mkdir /usr/local/mtphotos/config
mkdir /usr/local/mtphotos/upload
創建服務
docker run -d \--name="mt-photos" \
-v /usr/local/mtphotos/config:/config \
-v /raid1/upload/photos:/upload \
-v /raid1/劉浩/photos:/lh \
-p 8163:8063 \
-e TZ="Asia/Shanghai" \
--restart="unless-stopped" \
mtphotos/mt-photos:latest
登陸相冊
等應用創建完,登陸網頁進行配置
查看相冊
更多功能可以參考官網文檔 ,個人覺得他們的文檔還是很豐富的
移動端登陸
題外話
既然,家里都有服務器了,那使用ip訪問服務器還是不太方便
所以,在家自建一個dns
服務需求就出現,一開始我是使用了樹莓派安裝smartdns
作為dns服務器(主路由器的dns
配置為樹莓派地址)使用了幾個月,后面覺得有點臃腫
目前,我采用軟路由做主路由作為網關,在軟路由上設置home.kura.ren
的指向到筆記本做的服務器上,在服務器上配置了nginx
進行了轉發,如圖還使用 sun-panel
做了一個家庭內網的主頁,這塊內容,我打算寫到家庭網絡升級中