在 Linux 中将“/mnt”划分为两个相等的分区

在 Linux 中将“/mnt”划分为两个相等的分区

我有一个脚本,可以将目录划分为两个相等的分区。我将/mnt目录划分为两个相等的分区/data01,然后/data02

david@machine:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda         30G  1.2G   27G   5% /
none            4.0K     0  4.0K   0% /sys/fs/cgroup
udev             26G   12K   26G   1% /dev
tmpfs           5.2G  372K  5.2G   1% /run
none            5.0M     0  5.0M   0% /run/lock
none             26G     0   26G   0% /run/shm
none            100M     0  100M   0% /run/user
/dev/vdb        276G   63M  262G   1% /mnt

以下是我的脚本:

#!/bin/bash -x
#
#

# Comment the mnt from fstab
umount /mnt
sed -i '{
s#^/dev/vdb#\#/dev/vdb#
}' /etc/fstab


echo '# partition table of /dev/vdb
unit: sectors

/dev/vdb1 : start=     2048, size=2147481600, Id=83
/dev/vdb2 : start=2147483648, size=2147483647, Id=83
/dev/vdb3 : start=        0, size=        0, Id= 0
/dev/vdb4 : start=        0, size=        0, Id= 0


'  | sfdisk /dev/vdb

# Create the links since it over 2TB disk
partprobe

# make file system
mkfs -t ext4 /dev/vdb1
mkfs -t ext4 /dev/vdb2



# mkdir dst dirs
mkdir /data01 /data02


D1=`blkid /dev/vdb1  | awk '{print $2}'`
D2=`blkid /dev/vdb2  | awk '{print $2}'`

echo "$D1   /data01 ext4    rw,noatime,nodiratime 0 2"  >> /etc/fstab
echo "$D2   /data02 ext4    rw,noatime,nodiratime 0 2"  >> /etc/fstab

mount /data01
mount /data02

当我运行上述脚本时,它成功卸载了/mnt目录,但随后失败并显示此错误消息。同样的脚本在我的另一台机器上运行良好,因此看起来这个盒子里有些不同,我没有在脚本中考虑到这一点,因此它失败了。

以下是完整的调试消息:

+ umount /mnt
+ sed -i '{
s#^/dev/vdb#\#/dev/vdb#
}' /etc/fstab
+ echo '# partition table of /dev/vdb
unit: sectors

/dev/vdb1 : start=     2048, size=2147481600, Id=83
/dev/vdb2 : start=2147483648, size=2147483647, Id=83
/dev/vdb3 : start=        0, size=        0, Id= 0
/dev/vdb4 : start=        0, size=        0, Id= 0


+ sfdisk /dev/vdb
'
Checking that no-one is using this disk right now ...
OK

Disk /dev/vdb: 582542 cylinders, 16 heads, 63 sectors/track

sfdisk: ERROR: sector 0 does not have an msdos signature
 /dev/vdb: unrecognized partition table type
Old situation:
No partitions found
Warning: given size (2147481600) exceeds max allowable size (587200512)

sfdisk: bad input
+ partprobe
+ mkfs -t ext4 /dev/vdb1
mke2fs 1.42.9 (4-Feb-2014)
Could not stat /dev/vdb1 --- No such file or directory

The device apparently does not exist; did you specify it correctly?
+ mkfs -t ext4 /dev/vdb2
mke2fs 1.42.9 (4-Feb-2014)
Could not stat /dev/vdb2 --- No such file or directory

The device apparently does not exist; did you specify it correctly?
+ mkdir /data01 /data02
++ blkid /dev/vdb1
++ awk '{print $2}'
+ D1=
++ blkid /dev/vdb2
++ awk '{print $2}'
+ D2=
+ echo '   /data01 ext4    rw,noatime,nodiratime 0 2'
+ echo '   /data02 ext4    rw,noatime,nodiratime 0 2'
+ mount /data01
mount: mount point ext4 does not exist
+ mount /data02
mount: mount point ext4 does not exist

我做错了什么?现在该如何解决?看起来我搞砸了某件事。

答案1

您需要一个分区表才能在磁盘上创建分区。目前,您正在直接在块设备上使用文件系统。您需要先将 MBR 或 GPT 放到这个基本“磁盘”上,然后才能在该表上放置分区。您的脚本尝试执行此操作,但 sfdisk 因输入无效而失败。

您的 sfdisk 输入超出范围,并且您的第一个分区的大小超过 1TB,而磁盘不超过 300GB,sfdisk 将会对此做出拒绝。

以下是健康 sfdisk 输出的示例:

# sfdisk -d /dev/sda
label: dos
label-id: 0x8b33f739
device: /dev/sda
unit: sectors

/dev/sda1 : start=        2048, size=    14704640, type=83

这从 2KiB 边界开始,到大约 7GiB 结束。只有一个分区。sfdisk 中的值是扇区,因此您需要确定您的磁盘使用的是 512B 还是 4KiB 扇区大小。您可以根据自己的喜好手动调整这些值。

相关内容