使用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,并且能充分利用两块磁盘的大小,这一点我觉得非常好,不过数据超过最小的盘 之后如果数据损坏会怎样,这个目前还没有查到结论。



更多文章
  • OAuth2 为什么需要 Authorization Code?
  • 任务队列怎么写?python rq源码阅读与分析
  • XMonad 配置教程
  • Haskell简明教程(三):Haskell语法
  • Haskell简明教程(二):从命令式语言进行抽象
  • Haskell简明教程(一):从递归说起
  • 2017年必装的VIM插件推荐
  • TCP/IP简明教程 - 从零构建TCP/IP协议(二)连接,断开与拥塞控制
  • TCP/IP简明教程 - 从零构建TCP/IP协议(这次叫PCT协议)
  • Lua Manual 阅读笔记
  • Golang Map 源码阅读与分析
  • MySQL 零碎知识 - MySQL必知必会
  • Golang slice 源码阅读与分析
  • 经典好书推荐(2017)
  • Golang log库 源码阅读与分析