解决方法

解决方法

创建新分区似乎会产生不良副作用,如果该分区以前存在,它将自动挂载,甚至在格式化之前也是如此。

这对于一个脚本来说很麻烦,例如:

parted -sm /dev/sdb mklabel gpt
parted -sm /dev/sdb mkpart primary ext4 1 1.8T
mkfs.ext4 -L drive /dev/sdb1

mkfs 在这里失败,因为分区已挂载。

在 CentOS 7 中观察到此行为,自上次启动以来目标磁盘之前已格式化并安装的时间

/etc/fstab卸载、删除挂载点目录中的条目,仍然触发该条件;将创建挂载点并自动挂载分区。

目前尚不清楚谁创建了挂载点目录,也不清楚parted从哪里获取信息。

在 fstab 清除和分离调用之间重新启动将解决此问题。 parted 中没有关于自动安装的参数记录。

那么这种行为对于parted来说是正常的吗?有没有可靠的方法来防止它自动安装?

答案1

经过一些彻底的测试,截至 2018 年 3 月,答案是没有办法分手了阻止系统重新创建后自动重新挂载分区,除非事先在 /etc/fstab 中使用 noauto 显式配置。

解决方法

正如@AB 所暗示的,另一个工具如磁盘驱动器或者g磁盘可以用来代替分手了在重新创建之前正确清除分区信息。唯一的缺点是这些工具使用交互式 shell,并不是为脚本中的批处理而设计的。

交互模式

# gdisk /dev/sda
GPT fdisk (gdisk) version 0.8.6

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.

Command (? for help): o
This option deletes all partitions and creates a new protective MBR.
Proceed? (Y/N): Y

Command (? for help): n
Partition number (1-128, default 1):
First sector (34-3907029134, default = 2048) or {+-}size{KMGTP}:
Last sector (2048-3907029134, default = 3907029134) or {+-}size{KMGTP}:
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300):
Changed type of partition to 'Linux filesystem'

Command (? for help): w

Final checks complete. About to write GPT data.
THIS WILL OVERWRITE EXISTING PARTITIONS!!

Do you want to proceed? (Y/N): Y
OK; writing new GUID partition table (GPT) to /dev/sda.
The operation has completed successfully.

管道自动化

这不是超级干净或可移植的,但通过逐行管道传输用户输入可以实现相同的结果。与交互模式一样,空行将接受 gdisk 提供的默认值,在这种情况下,最大化分区使用并为 Linux 系统选择正确的类型。

echo -ne 'o\nY\nn\n\n\n\n\nw\nY\n' | gdisk /dev/sda

系统D监控

在跑步的时候g磁盘我们检查 dmesg 的安装活动,发现只有几个设备信息请求:

kern  :info  : [Mar27 10:38]  sda: sda1
kern  :info  : [  +1.019077]  sda: sda1

因此,通过这种方法,我们的自动化脚本可以安全地继续MKFS部分。

相关内容