1 软件安装
sudo apt install mdadm
sudo apt install bcache-tools
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

1881

被折叠的 条评论
为什么被折叠?



