西数ZN540如何修改sector size

写在前面

因需要在ZN540上挂载F2FS,故需要两块盘。一块传统SSD一块ZNS SSD。
对于ZN540,信息如下
在这里插入图片描述
由于其扇区大小为4KiB,而自己服务器上没有逻辑扇区为4KiB的盘,例如三星883:
在这里插入图片描述
所以当用883做传统盘的时候,格式化mkfs.f2fs会报错:
在这里插入图片描述
因为ZN540不支持分区,如果使用ZN540的传统块接口来挂载则会报空间不足:
在这里插入图片描述
因此,要么把三星883的逻辑扇区大小改为4KiB,要么把ZN540改为512B。

方法一:把三星883的逻辑扇区大小改为4KiB

使用hdparm修改883的扇区大小

06:54:04 ~ # hdparm --set-sector-size 4096 --please-destroy-my-drive /dev/sdb
/dev/sdb:
READ_LOG_EXT(SECTOR_CONFIGURATION) failed: No such file or directory

啊哦,这块硬盘不支持更改扇区尺寸,其实支持更改扇区尺寸的硬盘也比较少,支持的话可以用这个命令改。

方法二:把ZN540的扇区大小改为512B

第一种方法(失败但是常规)

1查看两个名称空间的信息

nvme id-ns -H /dev/nvme0n1

看看最后几行:
在这里插入图片描述
2.通过命令来修改LBA格式

nvme format --lbaf=1 /dev/nvme0n1
NVMe status: INVALID_FORMAT: The LBA Format specified is not supported. This may be due to various conditions(0x610a)

然而也报错。

第二种方法(成功)

只能通过重新创建nvme名称空间的时候指定LBA的格式来改变扇区大小
1.查看两个名称空间的大小

sudo nvme id-ns -H /dev/nvme1n2

主要看一下

nvme1n1:(我的是已经改为512B的状态)
nsze    : 0x400000 #以扇区大小为单位的zone size,实际大小为0x400000 * 512 = 2147483648
ncap    : 0x400000 #以扇区大小为单位的zone capacity 
nvme1n2:
nsze    : 0xe2000000 #以扇区大小为单位的zone size
ncap    : 0x76d94000 #以扇区大小为单位的zone capacity

2.删除旧的名称空间

atr@node3:~$ sudo nvme delete-ns /dev/nvme1 -n 1
delete-ns: Success, deleted nsid:1
atr@node3:~$ sudo nvme delete-ns /dev/nvme1 -n 2
delete-ns: Success, deleted nsid:2

3.创建新的名称空间

# -s为nsze   -c为ncap   是上面各自实际大小/512   //524288    //473956352
atr@node3:~$ sudo nvme create-ns /dev/nvme1 -s 4194304 -c 4194304 -b 512 --csi=0
create-ns: Success, created nsid:1
atr@node3:~$ sudo nvme create-ns /dev/nvme1 -s 3791650816 -c 3791650816 -b 512 --csi=2
create-ns: Success, created nsid:2

4.attach名称空间

atr@node3:~$ sudo nvme attach-ns /dev/nvme1 -n 1 -c 0
attach-ns: Success, nsid:1
atr@node3:~$ sudo nvme attach-ns /dev/nvme1 -n 2 -c 0
attach-ns: Success, nsid:2

5.查看nvme设备信息

sudo nvme list 

在这里插入图片描述
修改成功。

### Flash 存储器的扇区大小规格及其影响 Flash存储设备通常采用不同的物理结构来实现数据擦除和写入操作。对于NOR型闪存而言,其最小可擦除单元被称为扇区(sector),而不同类型的闪存产品可能具有各异的具体参数设置。 在大多数情况下,常见的SLC(Single-Level Cell) NAND flash会拥有相对较小的页(page)尺寸以及较大的擦除区块(erase block)[^1];而对于MLC(Multi-level cell)/TLC(Triple-level cell)来说,则倾向于更大的页面容量与更宽泛的抹除单位范围。具体到sector层面: - NOR Flash: 扇区大小一般介于4KB至128KB之间不等; - SLC NAND Flash: 单个Sector大约为2KB或4KB左右; - MLC/TLC NAND Flash: 可能达到16KB甚至更高数值。 这些差异直接影响着性能表现、成本效益及使用寿命等方面。例如,在执行相同规模的数据更新时,较大扇区意味着每次操作涉及更多冗余位点被重置,从而加速磨损进程并增加错误几率。相反地,细粒度分区有助于优化资源利用率却可能导致管理开销上升。 此外值得注意的是,随着技术进步,制造商不断调整设计标准以平衡各方面需求,因此实际应用中的情况可能会有所变化[^2]。 ```python # Python伪代码展示如何查询特定型号flash芯片的信息 def get_flash_info(model_name): specs = { "NAND_SLC": {"page_size": 2048, "block_size": 128 * 1024}, "NAND_MLC": {"page_size": 8192, "block_size": 512 * 1024} } try: return f"For model {model_name}, page size is {specs[model_name]['page_size']} bytes and block size (which can be considered as sector size in some context) is {specs[model_name]['block_size'] / 1024} KB." except KeyError: return "Model not found." print(get_flash_info('NAND_SLC')) ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值