折騰日記:如何讓吃灰筆記本發揮余熱——搭建一個相冊服務

背景

之前寫過,我在家里用了一臺舊的工作站筆記本做了服務器,連上一個綠聯的5位硬盤盒實現簡單的網盤功能,然而,還是覺的不太理想,比如使用filebrowser雖然可以備份文件和圖片,當使用手機使用網頁,由于網頁無法獲到實況圖片的視頻文件,上傳到硬盤后就丟失了實況圖片,所以就繼續折騰一下

使用環境

  1. mdadm:實現軟raid的軟件
  2. mt photos :備份照片的客戶端
  3. 4T機械盤兩張
  4. Ubuntu服務器

軟raid

首先既然要備份家里的圖片,那就要搞個raid,保證至少可以做到鏡像備份,這里推薦使用mdadm實現軟raid
將需要實現raid兩個磁盤插入單硬盤盒里面,接上筆記本

df -h

查看磁盤的掛載路徑,如圖,可以看到有個3.5T磁盤掛載到了raid1路徑上,這里的md1實際上是兩張磁盤

在這里插入圖片描述

使用
lsblk
指令就看sdc sddraid1
在這里插入圖片描述

這是我之前已經完成了軟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目錄下,使用上會有點問題,開機的時候,要是磁盤盒沒有插入的話,由于無法加載到磁盤,就會無法進入系統

實現掛載

在這里插入圖片描述

  1. 在根目錄創建一個文件夾
mkdir raid1
  1. 查看硬盤id
blkid /dev/md1

獲取到硬盤的uuid、類型等信息

在這里插入圖片描述

  1. 添加掛載配置

編輯/etc/fstab文件,添加硬盤信息

vim /etc/fstab
UUID=ae596716-0794-4f54-8ae5-1f1768ae732f /raid1  xfs defaults 0 0
  1. 檢查掛載
sudo mount -a

如果沒有報錯信息,就證明硬盤被永久掛載到指定目錄

當完成這些操作過,我們的raid1就實現了,可以將其中一個主磁盤標記為故障,然后查看能不能訪問備份的磁盤,然后重啟恢復,看從備份寫入的東西,會不會同步到,回到主磁盤

測試備份

查看狀態
 mdadm -D /dev/md1

在這里插入圖片描述

可以看到目前的狀態是clean,也就是正常
mdadm --manage /dev/md1 --fail /dev/sdc來標記/dev/sdc為故障狀態

模擬故障

在這里插入圖片描述

測速同步文件

我們在磁盤中加個文件,然后在重啟恢復正常,查看文件是否已經從備份同步到

在這里插入圖片描述

重啟后

在這里插入圖片描述

可以看到磁盤恢復正常后,文件也從備份同步到了主磁盤中

相冊應用

mt-photos

完成這些配置后,就開始需要實現我們的相冊備份了,
這里我使用了mt-photos 作為客戶端,相比較其他軟件,mt-photos

  1. 本土化方面,相比較其他相冊管理軟件,操作簡單
  2. 更新及時,可以加群,開發者有問必答
  3. 功能比較豐富,支持圖片格式很多,連我的相機的raw格式也支持
  4. 多端支持,客戶端包括網頁和移動端(安卓和IOS)
  5. 它的相冊創建模式和添加文件夾的操作一致,不用考慮脫離軟件,照片無法查看的問題
  6. 最主要原因可以使用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做了一個家庭內網的主頁,這塊內容,我打算寫到家庭網絡升級中
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/64407.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/64407.shtml
英文地址,請注明出處:http://en.pswp.cn/web/64407.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

使用seata實現分布式事務管理

配置 版本說明:springCloud Alibaba組件版本關系 我用的是spring cloud Alibaba 2.2.1.RELEASE 、springboot 2.2.1.RELEASE、nacos 2.0.1、seata1.2.0,jdk1.8 seata 主要用于在分布式系統中對數據庫進行事務回滾,保證全局事務的一致性。 seata的使用…

【總結】動態規劃

線性dp LeetCode題單, 從記憶化搜索到遞推 Pre: 從最初狀態到最終狀態等價,那么從最終狀態開始和最初狀態開始結果一樣。 遞歸時不會產生其他負面結果,即無論何時進入遞歸,只要遞歸參數相同,結果就相同。 …

RabbitMQ中的異步Confirm模式:提升消息可靠性的利器

在現代分布式系統中,消息隊列(Message Queue)扮演著至關重要的角色,它能夠解耦系統組件、提高系統的可擴展性和可靠性。RabbitMQ作為一款廣泛使用的消息隊列中間件,提供了多種機制來確保消息的可靠傳遞。其中&#xff…

買賣預測工具

設計一個用于在交易市場中尋找確定性或大概率盈利的買賣預測工具是一個具有挑戰性但非常有潛力的項目。你可以通過以下幾個步驟進行思路規劃: 1. 明確目標 大概率盈利:工具的目的是找出大概率盈利的交易機會。不能完全依賴于100%確定性,因為…

【數據結構】數據結構簡要介紹

數據結構是計算機科學中用于組織、管理和存儲數據的方式,以便于高效地訪問和修改數據。 數據結構的分類: 數據結構可以大致分為兩類:線性結構和非線性結構。 1. 線性結構 線性結構中的數據按順序排列,每個元素有唯一的前驅和后…

note 41:賬務系統開發規范

目錄 系統設計 防重控制 流量控制 并發控制 異常處理 備份機制 系統開發??????? 前端隊列操作 外系統交互 ?????????????? 系統設計 防重控制 對于進入到系統中的數據(文件導入、手工錄入、系統直連等)以及本系統發往外…

Circular Spanning Tree(樹的性質)

Circular Spanning Tree 本道題目加深理解樹的性質: 思路: 首先考慮什么情況是NO,那么不難想當字符串全是0的時候一定是不行的,因為這樣就構成環了,還有一種情況是1的個數為奇數的時候是不行的,一棵樹中為…

linux安裝nginxs報錯:openssl not found

系統: linux 版本:centOS7 nginx版本:nginx-1.20.2 linux安裝nginx時 執行下面命令時報錯: ./configure --with-http_stub_status_module --with-http_ssl_module --prefix/usr/local/nginxchecking for OpenSSL library ... not …

【論文筆記】Contrastive Learning for Sign Language Recognition and Translation

🍎個人主頁:小嗷犬的個人主頁 🍊個人網站:小嗷犬的技術小站 🥭個人信條:為天地立心,為生民立命,為往圣繼絕學,為萬世開太平。 基本信息 標題: Contrastive Learning for…

docker redis安裝

一.鏡像拉取 docker pull redis:5.0新建文件 touch /home/redis/redis.conf touch /home/redis/redis_6379.pid # bind 192.168.1.100 10.0.0.1 # bind 127.0.0.1 ::1 #bind 127.0.0.1protected-mode noport 6379tcp-backlog 511requirepass roottimeout 0tcp-keepali…

【CSS in Depth 2 精譯_096】16.4:CSS 中的三維變換 + 16.5:本章小結

當前內容所在位置(可進入專欄查看其他譯好的章節內容) 第五部分 添加動效 ??【第 16 章 變換】 ?? 16.1 旋轉、平移、縮放與傾斜 16.1.1 變換原點的更改16.1.2 多重變換的設置16.1.3 單個變換屬性的設置 16.2 變換在動效中的應用 16.2.1 放大圖標&am…

小程序租賃系統開發的優勢與實踐探索

內容概要 小程序租賃系統開發正在引起廣泛關注,特別是在數字化快速發展的今天。很多企業開始意識到,小程序不僅能為他們帶來更多的客戶,還能極大地提高管理效率。借助小程序,用戶在租賃時可以更加方便地瀏覽和選擇產品&#xff0…

機器人C++開源庫The Robotics Library (RL)使用手冊(二)

由于RL庫采用跨平臺CMake源碼,可以輕松在win、ubantu等平臺部署、編譯,win通常用VS編譯器,為了便于使用、閱讀,需要將CMake編譯成VS工程。 1、準備三個工具:CMake、VS、QT 為了在Windows上編譯RL和依賴項,您需要安裝一個編譯器(例如。,Visual Studio 2017)和跨平臺構…

如何在LabVIEW中更好地使用ActiveX控件?

在LabVIEW中,ActiveX控件可以幫助實現與其他應用程序或第三方組件的集成(例如Microsoft Excel、Word、Internet Explorer等)。以下是一些建議,幫助您更好地在LabVIEW中使用ActiveX控件: ? 1. 理解ActiveX控件的基本原…

如何使用Python從SACS結構數據文件中提取節點數據信息并導出到EXCEL

在現代工程設計中,結構分析和數據處理是不可或缺的一部分。特別是在海洋工程、橋梁建設等領域,SACS文件被廣泛應用。這種文件格式包含了結構模型的各種重要信息,包括節點(JOINT)、構件(ELEMENT)…

如何判斷一個學術論文是否具有真正的科研價值?ChatGPT如何提供幫助?

目錄 1.創新性與學術貢獻的超級加分? 2.科研過程中的各個環節—從0到1? 3.創新性與理論深度的完美結合? 4.論證與寫作的清晰性? 5.數據整理和文獻回顧——效率與精準并存? 6.創新性要求輔助? 總結 寶子們,學術論文寫作的旅程是不是感覺像是走進了迷霧森…

學習threejs,THREE.CircleGeometry 二維平面圓形幾何體

👨??? 主頁: gis分享者 👨??? 感謝各位大佬 點贊👍 收藏? 留言📝 加關注?! 👨??? 收錄于專欄:threejs gis工程師 文章目錄 一、🍀前言1.1 ??THREE.CircleGeometry 圓形…

【微服務】SpringBoot 自定義消息轉換器使用詳解

目錄 一、前言 二、SpringBoot 內容協商介紹 2.1 什么是內容協商 2.2 內容協商機制深入理解 2.2.1 內容協商產生的場景 2.3 內容協商實現的常用方式 2.3.1 前置準備 2.3.2 通過HTTP請求頭 2.3.2.1 操作示例 2.3.3 通過請求參數 三、SpringBoot 消息轉換器介紹 3.1 H…

深入理解Composer自動加載機制

Composer是PHP生態系統中最常用的依賴管理工具之一,它不僅能夠幫助開發者管理項目的依賴關系,還能夠自動加載這些依賴項。自動加載機制是Composer的核心功能之一,通過自動加載,開發者可以在運行時按需加載所需的類和文件&#xff…

【游戲設計原理】35 - 委員會設計

一、 分析并總結 核心內容 定義:委員會設計(Design by Committee)是指游戲開發團隊通過集體協作完成設計,這種模式結合了多樣化的創意和個體專長,但也可能因缺乏一致性而導致設計的混亂。優勢:多樣性帶來…