bash + 如何在 Linux 中自动创建磁盘分区

yae*_*ael 2 bash partition fdisk shell-script parted

这是我们的 rhel 服务器机器的示例

\n
lsblk\nNAME               MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT\n\nsdb                  8:16   0   20G  0 disk /data/sdb\nsdc                  8:32   0   20G  0 disk /data/sdc\nsdd                  8:48   0   20G  0 disk /data/sdd\nsde                  8:64   0   20G  0 disk /data/sde\nsdf                  8:80   0   42G  0 disk\nsdg                  8:96   0   42G  0 disk\nsdh                  8:112  0   42G  0 disk\n
Run Code Online (Sandbox Code Playgroud)\n

我们想为其他磁盘创建一个磁盘分区sdf,sdg,sdh,但所有这些过程都应该通过 bash 脚本进行,我们希望自动化该过程

\n

首先这里是如何2sdf磁盘创建分区的示例,\n因此在这个示例中我们创建两个分区,每个分区都有10G大小

\n

步骤1(创建分区,每个分区10G)

\n
parted /dev/sdf\nGNU Parted 3.1\nUsing /dev/sdf\nWelcome to GNU Parted! Type \'help\' to view a list of commands.\n(parted) mklabel msdos\n(parted) mkpart primary 0 10024MB\nWarning: The resulting partition is not properly aligned for best performance.\nIgnore/Cancel? I\n(parted)  mkpart primary 10024MB 20048MB\n(parted) quit\nInformation: You may need to update /etc/fstab.\n
Run Code Online (Sandbox Code Playgroud)\n

步骤2(创建文件系统ext4)

\n
mkfs.ext4 /dev/sdf1\n\nmkfs.ext4 /dev/sdf2\n   \n
Run Code Online (Sandbox Code Playgroud)\n

现在我们得到了(预期结果)

\n
lsblk\n\nsdf                  8:80   0   42G  0 disk\n\xe2\x94\x9c\xe2\x94\x80sdf1               8:81   0  9.3G  0 part\n\xe2\x94\x94\xe2\x94\x80sdf2               8:82   0  9.3G  0 part\n
Run Code Online (Sandbox Code Playgroud)\n

我们可以自动化这个parted过程吗?或者也许通过其他方法(例如通过fdisk)?

\n

为了在 bash 脚本中使用这个自动化过程

\n

参考 - https://www.howtoing.com/create-disk-partitions-in-linux/

\n

小智 5

parted 可以选择使用脚本化 (--script/-s)。

您可以向程序发出多次调用来实现您交互输入的内容:

parted --script /dev/sdf mklabel msdos
parted --script /dev/sdf mkpart primary 1 10024MB
parted --script /dev/sdf mkpart primary 10024MB 20048MB
Run Code Online (Sandbox Code Playgroud)

继续使用 mkfs...

提示:我在 1MB 上启动了第一个分区,以避免出现警告,这也是当今许多发行版的默认设置。

正如 MC68020 作为对您的问题的评论所提到的:您应该添加一些错误检查代码。