您尚未登录。

#16 2018-12-16 13:54:51

apersonlikesc
兔子春
所在地: 喧闹之地
注册时间: 2018-01-21
帖子: 89
个人网站

Re: 不懂就问:分区单位问题

提个小问题,分区改变的是什么?查了一下有起始扇区和扇区数,还有其他吗


越过山丘,遇见十九岁的我

离线

#17 2018-12-16 18:24:37

xtricman
エクス·トリクマン
注册时间: 2012-12-26
帖子: 696

Re: 不懂就问:分区单位问题

那不能从命令行启动这个单独的程序?不点下一步它不会写入磁盘?

离线

#18 2018-12-18 01:30:17

yw662
大会员
注册时间: 2018-10-10
帖子: 136

Re: 不懂就问:分区单位问题

AMOR 说:

debian的网络安装镜像可以做到分区后不自动安装系统,因为在分区后还有一步让你选择最快的源


arch就不一样,arch除了可以给你选择源服务器的机会之外,还允许你安装其他发行版,比如gentoo。


ecmascript是世界上最好的语言

离线

#19 2018-12-18 01:32:31

yw662
大会员
注册时间: 2018-10-10
帖子: 136

Re: 不懂就问:分区单位问题

AMOR 说:

强迫症在gnome磁盘管理中看到非整数分区会很不舒服

你觉得65536是整数么?那你凭啥歧视更大的2^n :那你把这个数字当整数就好了


ecmascript是世界上最好的语言

离线

#20 2018-12-18 07:38:56

AMOR
会员
注册时间: 2018-11-16
帖子: 25

Re: 不懂就问:分区单位问题

apersonlikesc 说:

提个小问题,分区改变的是什么?查了一下有起始扇区和扇区数,还有其他吗

分区应该只改变了分区列表,分区列表记录了硬盘从哪个位置到哪个位置之间是一个分区


这家伙很懒,就留下这么一行字

离线

#21 2018-12-18 07:45:25

AMOR
会员
注册时间: 2018-11-16
帖子: 25

Re: 不懂就问:分区单位问题

xtricman 说:

那不能从命令行启动这个单独的程序?不点下一步它不会写入磁盘?

Debian wiki没找到相关内容,只看到wiki提到了parted相关命令
现在怀疑用户在图形界面分区后,partman会换算成扇区数,然后调用parted以扇区数分区,至于4k对齐,只要把扇区数后三位抹零,按整千扇区分区就行了
以上只是怀疑,需要虚拟机用Debian或ubuntu分一下区然后查看分区信息确认


这家伙很懒,就留下这么一行字

离线

#22 2018-12-18 07:51:19

AMOR
会员
注册时间: 2018-11-16
帖子: 25

Re: 不懂就问:分区单位问题

yw662 说:
AMOR 说:

强迫症在gnome磁盘管理中看到非整数分区会很不舒服

你觉得65536是整数么?那你凭啥歧视更大的2^n :那你把这个数字当整数就好了

从程序员的思维看,你说的是整数,从gnome桌面环境看,你说的不是整数
因为gnome默认是以1000进制计算的,如果你分区10GiB,你在gnome磁盘管理器下查看分区,会显示11.几GB,不是整数
所以按照你的说法,不是我歧视更大的2^n ,而是gnome歧视更大的2^n


这家伙很懒,就留下这么一行字

离线

#23 2018-12-18 11:36:21

AMOR
会员
注册时间: 2018-11-16
帖子: 25

Re: 不懂就问:分区单位问题

已确认

cfdisk工具不支持以B为单位分区,但是支持以扇区s为单位分区
比如按照1000进制分区100M,计算得应该分区100 000 000 B,除以512得195312.5个扇区,取整,然后取能被8整除的最接近数字(4k对齐),得195312
在cfdisk上输入195312s分区,分区工具自动分区大小为194560个扇区,应该还有其它限制
或者直接以195312个扇区分区,cfdisk会根据4k对齐和其它限制自动分区为194560个扇区

用ubuntu进入安装程序,分区100M,然后fdisk -l查看,分区大小也是194560个扇区


这家伙很懒,就留下这么一行字

离线

#24 2018-12-18 12:33:54

xtricman
エクス·トリクマン
注册时间: 2012-12-26
帖子: 696

Re: 不懂就问:分区单位问题

分区限制的问题,首先肯定要按逻辑扇区对齐,你写到分区表的数字单位就是那个,所以不对齐是不可能的。

一般默认前面64个扇区全部是给分区表和bootloader用的,所以分区工具就不让你第一个分区太靠前了。

然后分区工具为了磁盘IO性能可能会选择十分保守的超大对齐方案,例如按64逻辑扇区对齐,这样即使是物理4k,逻辑512的磁盘也不会有问题。这就造成了你给出的数字和最终数字差异巨大。

然后分区表的数值单位是逻辑扇区。

最简单的就是把问题抛给用户,只接受逻辑扇区单位输入,然后程序完全不需要知道扇区多大,只需要将扇区数字按64对齐就行,不对的数值提醒用户你这个不对,愿意接受用户强制命令还是直接拒绝操作那就取决于分区工具的实现。

那字节单位输入怎么办呢?很简单,按照逻辑扇区大小进行换算,就从/sys读出逻辑扇区大小,实际上计算的时候还是按照扇区数进行计算,显示给你看的时候使用字节单位。

最近编辑记录 xtricman (2018-12-19 15:38:27)

离线

#25 2018-12-18 12:41:44

xtricman
エクス·トリクマン
注册时间: 2012-12-26
帖子: 696

Re: 不懂就问:分区单位问题

磁盘分区这件事情其实很不标准化,即便标准存在,OS通常能支持不太标准的分区表,如果应用程序使用的格式有一点不一样,就会有一天出问题。类似于DOCX格式在WPS与Word下的不同。

现代MBR与GPT都没有真正解决这个问题,它们的数据结构设计存在大量冗余。

离线

页脚