背景
硬件:零刻SER Pro 6
系统:vmware Exsi 6.7.0 Update 3
现有的硬盘槽位占满了,但空间不够用,想要通过USB外接移动硬盘来进行扩容。使用了一块250G的硬盘做测试。
步骤
TL;DR
# 停止usbarbitrator服务
/etc/init.d/usbarbitrator stop
chkconfig usbarbitrator off
# 查看usb接口设备
esxcli storage core device list |grep -i usb
# 查看磁盘
ls /dev/disks/
# 查看磁盘分区表信息
partedUtil getptbl /dev/disks/naa.5000000000000001
# 设置磁盘分区表格式(会格式化磁盘)
partedUtil mklabel /dev/disks/naa.5000000000000001 gpt
# 计算可用扇区数
eval expr $(partedUtil getptbl /dev/disks/naa.5000000000000001 | tail -1 | awk '{print $1 " \\* " $2 " \\* " $3}') - 1
# 创建vmfs分区
partedUtil setptbl /dev/disks/naa.5000000000000001 gpt "1 2048 488392064 AA31E02A400F11DB9590000C2911D1B8 0"
# 挂载
vmkfstools -C vmfs6 -S Test_datastore /dev/disks/naa.5000000000000001:1
首先是进入esxi开启SSH,通过SSH连接到esxi的主机上。
不要接上硬盘,停止usbarbitrator服务
/etc/init.d/usbarbitrator stop
chkconfig usbarbitrator off
接上硬盘,识别usb接口的硬盘,如下:
esxcli storage core device list |grep -i usb
使用ls /dev/disks/
命令查看硬盘信息
接下来要修改硬盘的分区表类型为GPT(GUID Partition Table)。磁盘在进行格式化时要选择分区类型,常见的分区方式有两种类型,GPT与MBR。
MBR(Master Boot Record),主引导记录,相对古老
GPT(GUID Partition Table),全局唯一标识分区表,新一代
分区不要与文件系统混淆了,磁盘的分区是指将物理磁盘划分为多个逻辑分区,文件系统是在每个分区的基础上创建的逻辑结构,用来组织何管理文件。也就是说磁盘分区比文件系统更加底层,是关于如何划分磁盘空间的,而文件系统位于存储管理的上层,定义了如何管理和组织文件数据。常见的文件系统有FAT32、NTFS、EXT4等。
测试的硬盘文件系统是NTFS格式的,使用命令partedUtil getptbl
查看分区表类型是“msdos”,这意味着磁盘使用的是MBR类型的分区表。
partedUtil getptbl /dev/disks/naa.5000000000000001
执行命令partedUtil mklabel /dev/disks/naa.5000000000000001 gpt
修改分区表,要注意,这一步相当于对磁盘格式化了,数据都会丢失!!
查看修改完毕的磁盘分区表信息:
这表明,该磁盘有30401个柱面,每个柱面有255个磁头,每个磁头有63个扇区,共计488397168个扇区。这里255个磁头并非物理上有255个磁头,与磁盘的寻址模式有关。
CHS寻址:C即柱面Cylinder、H磁头Head、S扇区Sector;柱面数用10位存储(最大210=1024,0~1023),磁头数用8位存储,扇区数用6位二进制数表示,寻址的容量也由这三个参数决定(1024*256*64);
一个扇区512B,1MB=1024*1024B,所以CHS能够寻址的最大空间为:512*1024*256*64 B=233B=23GB,理想状态下最大只能寻址8GB的空间,但实际中有所出入。最大柱面、磁头、扇区这样编号带来的问题是外层磁道和内层磁道扇区数相等,但周长显然是不等的,带来了浪费。
LBA逻辑块寻址:在逻辑块寻址中,将CHS中的物理上的三维寻址转为一维的线性寻址,访问磁盘时,由磁盘控制器再将逻辑地址转为实际的磁盘物理地址。
于是我们可以计算出磁盘容量为:488397168*512B=249724995072B~232.88 GB
使用如下命令eval expr $(partedUtil getptbl /dev/disks/naa.5000000000000001 | tail -1 | awk '{print $1 " \\* " $2 " \\* " $3}') - 1
求出可用的扇区总和-1,得出的结果与前面的488397168并不一致,是因为这里的30401、255、63都是逻辑几何信息,并不反应实际硬盘的物理结构。总扇区数是实际硬盘容量。(可是用不上的部分也没什么意义啊)
接下来创建一个新的VMFS分区,具体做法如下:
partedUtil setptbl /dev/disks/naa.5000000000000001 gpt "1 2048 488392064 AA31E02A400F11DB9590000C2911D1B8 0"
partedUtil setptbl /dev/disks/naa.5000000000000001 gpt
指定了我们naa.5…硬盘,初始化一个GPT分区表,"1 2048 488392064 AA31E02A400F11DB9590000C2911D1B8 0"
表明创建分区号1,起始扇区2048到488392064 扇区,分区类型GUID为AA…B8,这里不用管,是ESXI VMFS分区类型的GUID;最后一个0为分区标志,0表示没有特殊标志。
再查看分区表信息。
最后一步挂载。vmkfstools -C vmfs6 -S Test_datastore /dev/disks/naa.5000000000000001:1
其中Test_datastore是自定义的,最终的效果如下:
执行命令时使用的vmfs5,之后发现了系统上零一块是vmfs6类型的,vmfs6比5多了自动回收空间的机制,更推荐,于是改了上面的命令。
References
https://blog.csdn.net/m0_65690223/article/details/131408110
https://blog.csdn.net/buluxianfeng/article/details/125593556
https://blog.csdn.net/u014470361/article/details/81007471
https://blog.csdn.net/jinking01/article/details/105192830