当前位置: 首页 > article >正文

折腾日记:如何让吃灰笔记本发挥余热——搭建一个相册服务

背景

之前写过,我在家里用了一台旧的工作站笔记本做了服务器,连上一个绿联的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. 客户端支持,包括网页和移动端
  5. 它的相册创建模式和添加文件夹的操作一致,不用考虑脱离软件,照片无法查看
  6. 最主要原因可以使用docker构建,构建简单
    唯一的问题这是一个买断制的应用,99块钱终身(现在好像一个月),可以免费试用一个月

搭建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.kler.cn/a/457458.html

相关文章:

  • 框架模块说明 #09 日志模块_01
  • 电子应用设计方案85:智能 AI门前柜系统设计
  • 深入 Redis:高级特性与最佳实践
  • 迟来的前端面试经验
  • 第二十六天 自然语言处理(NLP)词嵌入(Word2Vec、GloVe)
  • linux文件类型和根目录结构
  • 工程师如何平衡工作和生活?
  • redis开发与运维-redis04-redis客户端Jedis与连接池及客户端异常模拟
  • python学习笔记——类和对象
  • 道路倒角 三角网 两侧偏移
  • 2025最新植物大战僵尸杂交版3.0.2版本
  • 埃斯顿机器人程序案例多个点位使用变量
  • 微服务架构与 Spring Cloud 相关技术解读
  • 程序猿成长之路之设计模式篇——结构型设计模式
  • C 中如何在For中生成不重复的随机数
  • 【Chrome】浏览器提示警告Chrome is moving towards a new experience
  • 邮件传输协议
  • Linux系统编程(一)--基础指令
  • 【Spring】基于注解的Spring容器配置——基于Java类的配置(@Configuration与@Bean)
  • 【MySQL篇】使用Java操作MySQL实现数据交互
  • 基于python的ai五子棋游戏
  • .net core 的算法与数据结构
  • 【华为OD-E卷-取出尽量少的球 100分(python、java、c++、js、c)】
  • 【Pandas】pandas Series to_numpy
  • 路由器刷机TP-Link tp-link-WDR5660 路由器升级宽带速度
  • TCP/IP网络协议攻击