Solaris 磁盘标签 - 使用 fmthard 删除切片并返回:vtoc 中存在无效条目

Solaris 磁盘标签 - 使用 fmthard 删除切片并返回:vtoc 中存在无效条目

我正在尝试创建一个脚本来从具有 Solaris 磁盘标签的磁盘中删除所有切片。

bash-3.2# prtvtoc  /dev/rdsk/c0t2d0s2
* /dev/rdsk/c0t2d0s2 partition map
*
* Dimensions:
*     512 bytes/sector
* 143374738 sectors
* 143374671 accessible sectors
*
* Flags:
*   1: unmountable
*  10: read-only
*
* Unallocated space:
*       First     Sector    Last
*       Sector     Count    Sector
*          34       222       255
*
*                          First     Sector    Last
* Partition  Tag  Flags    Sector     Count    Sector  Mount Directory
       0      4    00        256 143358065 143358320
       8     11    00  143358321     16384 143374704
bash-3.2# fmthard -d 0:00:0x00:0:0 /dev/rdsk/c0t2d0s2
/dev/rdsk/c0t2d0s2: invalid entry exists in vtoc
bash-3.2# uname -prsm
SunOS 5.10 sun4v sparc
bash-3.2#

但是,如果我像这样运行,切片就会被删除:

bash-3.2# fmthard -d 0:00:0x00:256:0 /dev/rdsk/c0t2d0s2

问题是:

  • 为什么第一个扇区不能为0,而且必须大于或等于34?
  • 是否可以创建一个空的 vtoc?

答案1

这种限制是由于磁盘标签是EFI 磁盘标签又名谷氨酰胺磷酸酶而不是 SMI 又名 VTOC。

分区(或片)不能与主标签或备份标签重叠,也不能与任何其他分区重叠。EFI 标签的大小通常为 34 个扇区,因此分区通常从扇区 34 开始。此功能意味着没有分区可以从扇区零 (0) 开始。

EFI 标签中不存储任何磁柱、磁头或扇区信息。大小以块为单位报告。

也可以看看系统管理指南:设备和文件系统 - EFI 磁盘标签

错误fmthard是由vwrite64(int fd,struct dk_gpt *efi,char *devname)函数是一个包装器efi_写入(3EXT)系统调用。

要将磁盘标签类型从 EFI GPT 更改为 Solaris SMI 并销毁磁盘上的所有数据:

bash-3.2# format -e
Searching for disks...done

AVAILABLE DISK SELECTIONS:
.....
       1. c0t1d0 <SUN72G cyl 14087 alt 2 hd 24 sec 424>
          /pci@780/pci@0/pci@9/scsi@0/sd@1,0
.....
Specify disk (enter its number): 1
selecting c0t1d0
[disk formatted]
format> label
[0] SMI Label
[1] EFI Label
Specify Label type[1]: 0
Auto configuration via format.dat[no]?
Auto configuration via generic SCSI-2[no]?
format> q
bash-3.2#

从 SMI 到 GPT:

format> label
[0] SMI Label
[1] EFI Label
Specify Label type[0]: 1
Warning: This disk has an SMI label. Changing to EFI label will erase all
current partitions.
Continue? yes
format> q

EFI/GTP 磁盘标签是zpool在 ZFS 池中使用整个磁盘时由 ZFS 命令创建的。请参阅Solaris ZFS 管理指南:ZFS 存储池的组件:使用 ZFS 存储池中的磁盘

相关内容