使用btrfs组建RAID1

最近在折腾 syncthing 这个 P2P 的私人云盘,原本是在vps上搭建了一个,但是考虑到vps的数据也不安全,于是还是决定把数据 保存在本地。但是由于单块硬盘是不可靠的,因此需要组一个RAID。

对于个人来说,数据安全且划算的方案就是RAID1了。RAID1就是两块硬盘进行计算,因此需要两块硬盘,其中一块损毁,数据仍然安全, 如果想要提高数据安全程度,则可以加一个备份,不过对于我来说,两块硬盘已经够了,如果有这么背那只能认了(其实最好能有一个 异地备份,但还是算了吧)。

我的笔记本上共有三块硬盘,sda, sdb, sdc。其中 sdb 是系统盘,文件系统是btrfs,sda 是一块 mSATA 接口的数据盘, 由于是一块非常老的SSD,容量也比较小,我用来存储虚拟机的镜像,因为相对来说,虚拟机没有那么重要,数据损坏了损失也不大, sdc 是一块hdd。因此我决定使用 sdbsdc 来组RAID1。

这是执行的命令:

$ sudo btrfs device add -f /dev/sdc /  # 把sdc加入到 `/` 上。`sdb` 挂载的路径就是 `/`
$ sudo btrfs device usage /  # 查看一下使用情况
$ sudo btrfs balance start -dconvert=raid1 -mconvert=raid1 / # 开始做raid1

其中第三步需要等待一段时间。不过做完之后发现磁盘写入速度被hdd拖慢了,因此下单买了一块ssd,等到货之后把 sdc 卸了, 重新组RAID1,这个过几天再记录一下。

2019.04.05更新:

$ sudo btrfs balance start -f -mconvert=single -dconvert=single /  # 把/转换为单盘,如果有多块盘,则不需要执行这一步
$ sudo btrfs device delete /dev/sdb /  # 把 /dev/sdb 从 / 删除

比较好的一点是,btrfs支持不同大小的磁盘组RAID1,并且能充分利用两块磁盘的大小,这一点我觉得非常好,不过数据超过最小的盘 之后如果数据损坏会怎样,这个目前还没有查到结论。



更多文章
  • Golang 分布式异步任务队列 Machinery 教程
  • 使用geohash完成地理距离计算
  • 2018年就要到了,这一年都做了什么呢?
  • 算法导论阅读笔记 --- 排序算法
  • 短链系统的实现
  • Git HTTPS 如何保存密码
  • 程序员修炼之道 阅读笔记
  • Python开发实践经验
  • Golang实现平滑重启(优雅重启)
  • traefik 教程
  • Web开发系列(十):事务和锁
  • Web开发系列(十一):数据库扩展
  • Nginx作为TCP/UDP的负载均衡
  • Web开发简介系列
  • Web开发系列(九):消息队列,异步任务