我有一个脚本将目录分成两个相等的分区。 我正在将/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目录,但之后失败并显示此错误消息。 同样的脚本在其他机器上工作得很好,所以在这个盒子里看起来有点不一样,我没有在脚本中考虑它,因为它是失败的。
以下是完整的debugging消息:
+ 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
我做错了什么? 现在如何解决这个问题? 看起来我搞砸了一些东西。
您需要分区表才能在磁盘上创build分区。 目前,您正在块设备上直接使用filesytem。 您需要先将MBR或GPT放置在此基础“磁盘”上,然后才能将分区放在该表上。 您的脚本尝试这样做,但sfdisk失败,input无效。
你的sddiskinput超出范围,你的第一个分区在不超过300G的磁盘上超过1TB,而sfdisk会以这种不正当的方式进行。
以下是一个健康的sddisk输出的例子:
# 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扇区大小。 您可以根据自己的喜好手动调整这些值。