我一直在阅读分手的 页面,但似乎无法找到有关有效参数的任何文档.我正在尝试将具有特定分区大小的USB CompactFlash分区(无论CF大小如何).但我想确保我的对齐完全正确和最佳.
例如,当我使用以下命令时:
parted -s -a optimal $DEV mkpart primary ext3 1 1600
parted -s -a optimal $DEV mkpart primary ext3 1600 3200
parted -s -a optimal $DEV mkpart primary ext3 3200 3600
Run Code Online (Sandbox Code Playgroud)
目前尚不清楚第一个分区是否应为1或0?我得到的唯一提示是它应该从1而不是0开始是我运行的时候:
parted /dev/sdc align-check optimal 1
Run Code Online (Sandbox Code Playgroud)
这告诉我它在以1开始时是对齐的而在从0开始时没有对齐.但是当我以1开始并且我执行'打印'时,开始是1049kB ...这是正常的吗?当我转储由其他工具创建的打印分区时,我发现它们以32kB开始.如果我使用0的开头,它会输出512kB的开头.哪个是对的,我不知道!
另外,我在网络上看到了许多使用第二个和第三个分区的起始值作为其前面分区的结束值的人的示例(即:1600和3200值).我们假设重叠或增量为1吗?手册页对此没有任何说明.我已经看到一些网页,他们说它的错误是为了开始时与上一端的价值相同.
当我使用'-a optimal'时,它似乎甚至不会影响我的分区.不使用对齐标志似乎产生相同的结果.这是为了什么目的?有什么我想念的吗?
我真的希望分手会更聪明,不需要一个开始,而是可以自己推断它.实际上很多人似乎都需要这个确切的功能,所以我不是唯一有这种需求的奇怪球.希望那里的一些极客会看到这种需求,并实际上将其添加为功能.
请注意,我正在使用自动构建脚本,这就是我使用'-s'标志的原因.
如果有人能在这方面给我启发,我将非常感谢...提前感谢!
jll*_*dom 18
我想你在这里提出了几个有趣的问题,可惜之前没有人回答过,所以我会尽力去做.
目前尚不清楚第一个分区是否应为1或0?
第一个分区start必须为1,因为磁盘的第一个字节包含主引导记录和某些磁盘标签的结构,例如MS-DOS.因此,如果您使用值0作为第一个分区启动,libparted将在磁盘的开头留下几个字节以允许此内容,将分区的开头紧接在第一个扇区之后.
开始时间是1049kB ......这是正常的吗?
这是正常的.为了解释这一点,首先你必须知道,对于libparted,千字节不等于1024字节,而是等于1000字节.
KB = KiloByte = 1000Bytes
KiB = KibiByte = 1024Bytes
更多信息:
http://en.wikipedia.org/wiki/Kilobyte
http://www.gnu.org/software/parted/manual/html_node/unit.html
如果将单位更改为字节,则分区偏移量以KB(千字节)为单位,其值为近似值:
parted /dev/sdf unit b print
Run Code Online (Sandbox Code Playgroud)
你会看到真正的价值:1048576B这就是1MiB(1048576B~ = 1049KB),正是你想要的.
我看到他们从32kB开始
是的,分区从32KB开始,因为您使用的工具可能太旧了,并且您正在使用扇区大小为512字节的磁盘.分区的实际起始偏移量可能是32256,对应于扇区63.多年前,分区工具将第一个分区的起点放在第63个扇区,以使其与旧的CHS几何体对齐.这太长了,无法解释,但我建议您阅读此链接以获取更多详细信息:
https://superuser.com/questions/352572/why-does-the-partition-start-on-sector-2048-instead-of-63 http://lwn.net/Articles/377895/
如果我使用0的开头,它会输出512kB的开头
我认为它打印的开始是512B,而不是KB,我错了吗?
在512字节扇区的磁盘中,第一个扇区以偏移511结束,所以就像我上面告诉你的那样,第一个分区在第一个扇区之后开始.
我们假设重叠或增量为1吗?
我将单位更改为字节,您将看到分区的实际位置,并可以检查它们是否重叠.
这是为了什么目的?有什么我想念的吗?
这是因为,默认情况下,parted适用于MiB.键入时:
parted -s -a optimal $DEV mkpart primary ext3 1 1600
Run Code Online (Sandbox Code Playgroud)
你要求分开在MiB#1和#1600对应的偏移之间创建一个分区.与MiB对齐的偏移始终对齐以获得最佳性能,因此无需指定-a optimal.如果将单位更改为字节,则可以创建不对齐的分区:
parted $DEV unit b mkpart primary 1000000 160MB
parted $DEV align-check optimal 1
Run Code Online (Sandbox Code Playgroud)
它显示了错误: The resulting partition is not properly aligned for best performance.
所以,尝试使用相同的-a none选项:
parted -a none $DEV unit b mkpart primary 1000000 160MB
Run Code Online (Sandbox Code Playgroud)
现在没有错误,这是此选项的目的.
我真的希望分手会更聪明,不需要一个开始,而是可以自己推断它.
我认为该功能将由任何使用libparted的工具实现,但我认为在库中没有必要......但谁知道呢?也许一些libparted开发人员正在听...你试图发送错误报告吗?
bug-parted@gnu.org