分享

linux – parted命令行没有得到相同的结果

 印度阿三17 2019-08-15

我创建了我的虚拟磁盘(1024MB):

~$dd if=/dev/zero of=MyDrive.img iflag=fullblock bs=1M count=1024 && sync

情况1:

现在我要用parted内部配置它来分区/格式化MyDrive.img:

~$parted MyDrive.img
(parted) mklabel msdos
(parted) mkpart primary NTFS 1 1024
(parted) align-check optimal 1

结果:

(parted) print
 Model:  (file)
 Disk /home/user/test/MyDrive.img: 1074MB
 Sector size (logical / physical): 512B / 512B
 Table of partitions: msdos
 Disk Flags: 

 Start Number  End     Size    Type    File system  Flags
  1   1049kB  1024MB  1023MB  primary     ntfs       lba

Verifying partition:

~$sudo losetup loop1 MyDrive.img
~$sudo -H gparted /dev/loop1

到现在为止还挺好.现在问题……

案例2:

如果我想从命令行启动“parted”(在终端;在parted之外),使用相同的命令,我得不到相同的结果:

  ~$parted -s MyDrive.img mklabel msdos
  ~$parted -s MyDrive.img mkpart primary NTFS 1 1024
  ~$parted -s MyDrive.img align-check optimal 1
  ~$parted -s MyDrive.img set 1 lba on

日期:

  ~$parted -s MyDrive.img print
     Model:  (file)
     Disk /home/user/test/MyDrive.img: 1074MB
     Sector size (logical / physical): 512B / 512B
     Table of partitions: msdos
     Disk Flags: 

     Start Number  End     Size    Type    File system  Flags
       1   1049kB  1024MB  1023MB  primary         

问题:缺少NTFS和LBA(ext3,ext4等也会发生同样的事情)

原因:

   ~$parted -s MyDrive.img mklabel msdos # Works
   ~$parted -s MyDrive.img mkpart primary NTFS 1 1024 # Not Work
   ~$parted -s MyDrive.img align-check optimal 1  # Works
   ~$parted -s MyDrive.img set 1 lba on  # Not Work

题:

如何直接从终端(案例2)的命令行中使用选项“-s”( – script)正确执行“parted”以获得相同的输出(案例1)?

谢谢

解决方法:

parted默认使用奇数单位,因此最好指定它.

(parted) unit MiB

要么

(parted) mkpart ... 1MiB 1024MiB

如果您知道分区以1MiB开始,则无需进行对齐检查.

set 1 lba on命令实际上将分区类型更改为Linux.这可能有点意外,但是parted的设置更改分区类型是正常的(其他选项是raid,lvm,…).

除了这些细节,您的操作结果完全相同.输出的差异仅仅是光学问题.

它可能是用于创建文件系统本身而不是仅用于分区的旧分区的残余.(*)如果你想要ntfs坚持,你实际上必须使用mkntfs.

您的互动方式:

# dd if=/dev/zero of=MyDrive.img iflag=fullblock bs=1M count=1024 && sync
# parted MyDrive.img 
GNU Parted 3.2
Using /dev/shm/MyDrive.img
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel msdos                                                    

我此时创建了它的副本,以便我们检查并比较其他方法:

(parted) ^Z                                                               
[1]   Stopped                 parted MyDrive.img
# cp MyDrive.img MyDrive-Copy.img
# fg

向前:

(parted) mkpart primary NTFS 1 1024
(parted) align-check optimal 1                                            
1 aligned
(parted) print                                                            
Model:  (file)
Disk /dev/shm/MyDrive.img: 1074MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  1024MB  1023MB  primary  ntfs         lba

显示ntfs和lba但再次打印它已经消失了:

# parted MyDrive.img
GNU Parted 3.2
Using /dev/shm/MyDrive.img
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print                                                            
Model:  (file)
Disk /dev/shm/MyDrive.img: 1074MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  1024MB  1023MB  primary

使用终端命令的第二种方法,在副本上执行:

# parted MyDrive-Copy.img mkpart primary NTFS 1 1024
# parted MyDrive-Copy.img align-check optimal 1
1 aligned
# parted MyDrive-Copy.img print
Model:  (file)
Disk /dev/shm/MyDrive-Copy.img: 1074MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  1024MB  1023MB  primary

实际上有什么不同吗?

# cmp -l MyDrive.img MyDrive-Copy.img && echo Identical || echo Different
Identical

(如果没有复制方法,它们会有不同的磁盘标识符,因为每次你mkpart它都是随机的.使用GPT分区,每个单独的分区也会有一个唯一的PARTUUID,因此该方法不适用于其他分区方案,或者你必须检查不同的字节代表什么.)

所以,你总是得到相同的结果,除非命令不同(你的第一个例子中没有设置).

(*)

为了使混淆完美,在分区上的mkntfs之后,parted检测到NTFS存在并设置1 lba on不再将Linux设置为分区类型.这也意味着磁盘上的随机数据可能会在分区表中得到随机结果.

所以当你mkpart毕竟可能有一点指定NTFS. parted会记住当前会话的此类型,并在选择分区类型时采取相应措施.转换到终端,最好在一个命令中完成所有操作.

# parted MyDrive.img     mklabel msdos     mkpart primary NTFS 1 1024     set 1 lba on     align-check optimal 1     print

Model:  (file)
Disk /dev/shm/MyDrive.img: 1074MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  1024MB  1023MB  primary  ntfs         lba
来源:https://www./content-3-391851.html

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多