分离创建一个新分区似乎有一个不理想的副作用,如果以前存在的分区将自动挂载,甚至在格式化之前也会自动挂载。
这对于一个脚本来说是很麻烦的,例如:
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清除和分离调用之间重新启动将解决此问题。在分体中没有记录有关自动安装的参数。
那么,这种行为对分开是否正常,是否有可靠的方法来防止它的自动安装?
发布于 2018-03-27 06:44:00
经过一些彻底的测试后,从2018年3月开始,答案是没有办法阻止系统在重新创建之后自动重新安装分区,除非分区预先被显式配置为noauto /etc/fstab。
正如@A.B所暗示的,在重新创建之前,可以使用fdisk或gdisk这样的工具来正确清除分区信息,而不是拆分。唯一的缺点是这些工具使用交互式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提供的默认值,在这种情况下,gdisk将最大限度地利用分区,并为Linux系统选择合适的类型。
echo -ne 'o\nY\nn\n\n\n\n\nw\nY\n' | gdisk /dev/sda
在运行gdisk时,我们检查dmesg的挂载活动,并注意到只有几个设备信息请求:
kern :info : [Mar27 10:38] sda: sda1
kern :info : [ +1.019077] sda: sda1
因此,使用此方法,我们的自动化脚本可以安全地继续使用mkfs部分。
https://unix.stackexchange.com/questions/432850
复制