折腾日记:如何让吃灰笔记本发挥余热——搭建一个相册服务
背景
之前写过,我在家里用了一台旧的工作站笔记本做了服务器,连上一个绿联的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
格式也支持 - 客户端支持,包括网页和移动端
- 它的相册创建模式和添加文件夹的操作一致,不用考虑脱离软件,照片无法查看
- 最主要原因可以使用
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
做了一个家庭内网的主页,这块内容,我打算写到家庭网络升级中