【用Ubuntu构建家庭服务器】01 硬盘Raid配置

1 软件安装

sudo apt install mdadm
sudo apt install bcache-tools

Raid5官方文档
bcache官方文档

2 分区组Raid5

# 分区,用GPT
sudo fdisk /dev/sdx #g、n、w

## 以下是几种方式,自选
# 创建镜像Raid1
sudo mdadm --create --verbose /dev/md0 --name=data --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1

# 创建Raid5
sudo mdadm --create --verbose /dev/md0 --name=data --level=5 --raid-devices=3 /dev/sda1 /dev/sdb1 /dev/sdc1
sudo mdadm --create --verbose /dev/md0 --name=data --level=5 --raid-devices=4 /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1

# 多种确认状态的方法
sudo mdadm -D /dev/md0
lsblk

## Raid配置保存,确保启动开启(!!!!!!需要确认conf路径)
sudo mdadm -D --scan
# ARRAY /dev/md/data  metadata=1.2 UUID=7bf85248:f04fd2c7:1755cbca:40323a3f
sudo vim /etc/mdadm.conf
## # definitions of existing MD arrays
## ARRAY /dev/md/data  metadata=1.2 UUID=7bf85248:f04fd2c7:1755cbca:40323a3f

sudo update-initramfs -u

3 配置缓存盘

SSD数据备份之后开始配置缓存盘

# 自动关联
sudo make-bcache -B /dev/md0 -C /dev/nvme1 # format

# 创建磁盘文件系统
sudo mkfs.ext4 /dev/bcache0

# 查看状态
sudo bcache-super-show -f /dev/md0
lsblk
df -h

# 设置writeback模式提升写性能
su # 必须切换root账号才能修改模式
echo writeback > /sys/block/bcache0/cache_mode

# fstab启动挂载 /dev/bcache0
sudo vim /etc/fstab
# 

4 机械硬盘替换

# 确认硬盘信息
df -h
lsblk

# 将writeback_percent调整至0, 将所有dirty data刷到机械硬盘
sudo echo 0 > /sys/block/bcache0/bcache/writeback_percent
sudo cat /sys/block/bcache0/bcache/dirty_data # 查询缓存脏数据,确认是0

# 关机,拔掉想替换的硬盘
sudo unmount /mnt/data # 卸载Raid
sudo mdadm -D /dev/md0 # 确认硬盘缺失是否与想要卸载的对应

# 初始化新盘
sudo fdisk /dev/sdc # 初始化分区,用GPT
sudo mkfs.ext4 /dev/sdc1

sudo mdadm -f /dev/md0 /dev/sda1 -r /dev/md0 /dev/sda1 # fail & remove
sudo mdadm -a /dev/md0 /dev/sdc1 # add
# 等待漫长的同步
sudo mdadm -D /dev/md0 # 确认硬盘重建状态
sudo mount /dev/bcache0 /mnt/data # 同步完成后挂载确认数据

5 加硬盘扩容

# 确认硬盘信息
df -h
lsblk

# 将writeback_percent调整至0, 将所有dirty data刷到机械硬盘
sudo echo 0 > /sys/block/bcache0/bcache/writeback_percent
sudo cat /sys/block/bcache0/bcache/dirty_data # 查询缓存脏数据,确认是0

sudo unmount /mnt/data # 卸载Raid
sudo mdadm -D /dev/md0 # 确认硬盘缺失是否与想要卸载的对应

# 初始化新盘
sudo fdisk /dev/sdc # 初始化分区,用GPT
sudo mkfs.ext4 /dev/sdc1
sudo mdadm -a /dev/md0 /dev/sdc1 # add
mdadm --grow /dev/md0 --raid-devices=4

# 等待漫长的同步
sudo mdadm -D /dev/md0 # 确认硬盘重建状态

# Raid扩容
sudo mdadm --grow /dev/md0 --size=max
# 等待漫长的同步 ????
sudo mdadm -D /dev/md0 # 确认硬盘重建状态

# 文件系统扩容
sudo resize2fs /dev/bcache0

sudo echo 10 > /sys/block/bcache0/bcache/writeback_percent # 恢复回写默认值
sudo mount /dev/bcache0 /mnt/data # 同步完成后挂载确认数据
lsblk # 确认硬盘状态
df -h

6 缓存盘替换

# 确认硬盘信息
df -h
lsblk

# 将writeback_percent调整至0, 将所有dirty data刷到机械硬盘
sudo echo 0 > /sys/block/bcache0/bcache/writeback_percent
sudo cat /sys/block/bcache0/bcache/dirty_data # 查询缓存脏数据,确认是0

sudo unmount /mnt/data # 卸载Raid

# 老cache删除
sudo ls /sys/fs/bcache/ # 查询高速缓存盘UUID
sudo echo 1 >/sys/fs/bcache/354761ed-4f32-4064-8df3-3c74bbaf389b/unregister # 取消缓存盘注册

# 新cache注册
sudo bcache-super-show -f /dev/md127 #
# sb.magic		ok
# sb.first_sector		8 [match]
# sb.csum			5BC2701C499E2D36 [match]
# sb.version		1 [backing device]
# 
# dev.label		(empty)
# dev.uuid		f36bcf4b-978d-42f3-908f-e09a24090d03
# dev.sectors_per_block	1
# dev.sectors_per_bucket	1024
# dev.data.first_sector	16
# dev.data.cache_mode	0 [writethrough]
# dev.data.cache_state	1 [clean]
# 
# cset.uuid		80ee73b0-b827-4c7b-a5fa-08394f0d9bff

sudo wipefs -a /dev/nvme0n1
sudo make-bcache --cset-uuid=80ee73b0-b827-4c7b-a5fa-08394f0d9bff -C /dev/nvme0n1 # cset.uuid

# 加载完成后的配置
sudo echo 30 > /sys/block/bcache0/bcache/writeback_percent # 恢复回写默认值
sudo mount /dev/bcache0 /mnt/data # 同步完成后挂载确认数据
lsblk # 确认硬盘状态
df -h

7 其他Raid相关命令

# Raid状态监控
sudo mdadm --monitor --mail=root@example.com --delay=300 --scan # 300s检查一次

# Raid停和删,慎用,销毁
sudo mdadm --stop /dev/md0
sudo mdadm --remove /dev/md0

8 其他bcache相关命令

su
# 先删除后端低速盘md0
bcache-super-show /dev/md0 # 获取详细信息,查询cset.uuid
echo <cset.uuid> > /sys/block/bcache0/bcache/detach # 解绑对应UUID的后端低速盘
sudo echo 1 > /sys/block/bcache0/bcache/stop # 删除后端盘
wipefs -a /dev/md0

# 删除前端缓存盘
sudo ls /sys/fs/bcache/ # 查询高速缓存盘cset.uuid
sudo echo 1 >/sys/fs/bcache/d50405d0-cefa-428a-be37-0c895b5e1f29/unregister # 取消缓存盘注册
wipefs -a /dev/nvme0n1

# 手动关联
sudo make-bcache -B /dev/sda /dev/sdb # 单独建立后端低速盘
sudo make-bcache -C /dev/sdl # 单独建立cache
sudo bcache attach /dev/sdl /dev/sda # 手动关联
sudo bcache attach /dev/sdl /dev/sdb

sudo echo /dev/md0 > /sys/fs/bcache/register # register to kernel
sudo echo /dev/md0 > /sys/fs/bcache/register_quiet # auto register to kernel

sudo mount /dev/bcache0 /mnt/data

# 数据缓存状态
sudo cat /sys/block/bcache0/bcache/dirty_data # 查询缓存脏数据(未写入硬盘的数据)

# 将writeback_percent调整至0, 也就意味着会将所有的dirty data都刷到backing device中
sudo echo 0 > /sys/block/bcache0/bcache/writeback_percent

# 有几个参数来控制缓存的回写时机, 参数均在: /sys/block/bcache0/bcache/ 目录下
# - writeback_percent: 如果非零, bcache会尝试保持这个百分比的缓存脏数据, 限制后台回写并使用PD控制器平滑调整比率, 默认10 (脏数据量占SSD磁盘空间的百分之十时才开始回写, 否则一直在SSD中?)
# - writeback_delay: 当脏数据写入缓存并且之前没有包含任何数据时, 在启动写回之前等待一些秒数. 默认为30
# - writeback_rate: 每秒扇区速率, 如果writeback_percent非零, 则回写被限制到这个速率. 由bcache不断调整, 但可能也可以由用户设置
# - writeback_running: 如果关闭, 则不会发生脏数据的回写, 脏数据仍将被添加到缓存中, 直到其将要满时. 仅用于基准测试. 默认开启
sudo cat /sys/block/bcache0/bcache/cache_mode # 查询当前策略选择
sudo echo writeback > /sys/block/bcache0/bcache/cache_mode # 修改缓存策略为: writeback
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值