Linux文件裸写,linux环境先mkfs后写裸盘

本文探讨了在Linux中先进行mkfs.ext4操作后写入裸盘的情况,与先写入后mkfs.ext3的区别。在使用ext4时,由于uninit_bg特性,即使在mkfs前有其他工具写坏block group,也能正常工作,而ext3则会出现错误。这一特性源于ext4在使用block group时才进行初始化。不过,这样的做法仍然存在风险,如super block被破坏会导致文件系统无法恢复。
摘要由CSDN通过智能技术生成

步骤是这样:

1. mkfs.ext4格盘

2. 用fio工具随机写裸盘

3. mount盘为ext4文件系统并开始使用

发现一切使用正常,很多块盘都是这样做的,无一出错,使用了很久dmesg里连WARN都没有。但是一旦换成mkfs.ext3,使用一段时间就有报错了。

这个步骤的顺序肯定是错的,应该先写裸盘再mkfs,但是同事的问题是:为什么ext4不怕而ext3就不行了?

用dumpe2fs查看ext4的feature,嫌疑最大的是uninit_bg,因为带上这个ext4默认的标记后,mkfs.ext4就不会 把block group的信息初始化为0,而是等mount后由内核ext4在使用到该block group时再临时初始化,所以在mount前即使block group被其它工具写坏了也不怕。代码见:

e2fsprogs

misc/mke2fs.c

main() --> ext2fs_initialize()

ext2fs_initialize()

{

for (i = 0; i < fs->group_desc_count; i++) {

/*

* Don't set the BLOCK_UNINIT group for the last group

* because the block bitmap needs to be padded.

*/

if (csum_flag) {

if (i != fs->group_desc_count - 1)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值