0x01 前言
因为磁盘空间太大,我T620的存储空间高达25.86TB,目前只用了11.22TB,所以…任性了一把。
因我有家里有媒体服务器,这服务器得有媒体资源才能称得上媒体服务器,所以我会时不时从PT站下载热门的资源存放在服务器里,而这些资源的大小每个都在10G以上。
媒体资源完成它的使命之后总是不舍得删,除非容量捉襟见肘的时候才会挪腾他们,这是因为目前用于存放文件的磁盘空间仅有2TB,今天我决定重新给这虚拟机挂载一个5TB的磁盘空间用于替换现有的2TB磁盘空间。
0x02 虚拟磁盘
首先通过vcenter给虚拟机分配一个磁盘空间,配置如下:
- 磁盘空间:5TB
- 置备模式:精简置备
- 份额:低
- 读缓存:5G
为了能最大限度使用host的磁盘空间,我所有的虚拟机都使用精简置备这种磁盘置备模式,但这会对虚拟机的IO稍有影响;因为这是媒体服务器,在某些情况下会占用极大的磁盘带宽,为了不影响其他重要的虚拟机IO,我特意将其份额设为低;而读取缓存则是字面上的意思,但我觉得这个值对我现在的情况没多大性能提升,但我的SSD空间太大,使用率太低,所以给它分配5G的读缓存。
完成配置后即可启动虚拟机:
0x03 分区
如果尝试用fdisk对大于2TB的磁盘进行分区时会报错,大致意思是DOS格式分区表不能用于容量大于2TB。这时候需要使用parted这个命令。
首先使用fdisk列出所以磁盘:
[root@b60280 ~]# fdisk -l 磁盘 /dev/sda:17.2 GB, 17179869184 字节,33554432 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0x0009e3d2 设备 Boot Start End Blocks Id System /dev/sda1 * 2048 2099199 1048576 83 Linux /dev/sda2 2099200 6293503 2097152 82 Linux swap / Solaris /dev/sda3 6293504 33554431 13630464 83 Linux 磁盘 /dev/sdb:5497.6 GB, 5497558138880 字节,10737418240 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节
可以看到/dev/sdb就是我需要的磁盘。然后使用parted进行分区操作:
[root@b60280 ~]# parted /dev/sdb GNU Parted 3.1 使用 /dev/sdb Welcome to GNU Parted! Type 'help' to view a list of commands. (parted)
先使用print检查磁盘信息:
(parted) print 错误: /dev/sdb: unrecognised disk label Model: VMware Virtual disk (scsi) Disk /dev/sdb: 5498GB Sector size (logical/physical): 512B/512B Partition Table: unknown Disk Flags:
错误信息提示该磁盘尚未分配磁盘标签,同时分区表也是unknown,而容量为5498GB,扇区大小为512B。
为了方便后续的操作,这里先做一些设定:
(parted) unit GB (parted) mklabel gpt
为了方面后续的操作,我将磁盘空间的单位设为MiB,分区表类型为GPT。然后再print信息看看:
(parted) print Model: VMware Virtual disk (scsi) Disk /dev/sdb: 5498GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name 标志
可以发现显示的容量单位变成了MiB,而分区表类型为GPT,但目前没有任何分区。而接下来我需要创建一个分区:
(parted) mkpart primary 0GB 5498GB
mkpart后面紧跟着分区名称,这只是一个名字;再后面是其实空间,至于扇区则会根据指定的空间自动生成,最后是结束空间,它也会对应一个扇区。
如果需要在同一个磁盘建立多个分区,只需设定合适的空间大小并为其分配一个辨识度高的名字即可。
最后再进行信息打印:
(parted) print Model: VMware Virtual disk (scsi) Disk /dev/sdb: 5498GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name 标志 1 0.00GB 5498GB 5498GB primary
至此,所以分区工作已完成,输入quit即可推出parted:
(parted) quit 信息: You may need to update /etc/fstab.
0x04 挂载
挂载磁盘前需要对其进行格式化,先检查分区信息:
[root@b60280 ~]# fdisk -l /dev/sdb WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion. 磁盘 /dev/sdb:5497.6 GB, 5497558138880 字节,10737418240 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:gpt Disk identifier: 7DB83A46-7643-4A99-B647-A8BE686FB023 # Start End Size Type Name 1 2048 10737416191 5T Microsoft basic primary
这里有个告警,说告诉你fdisk对于GPT的支持是试验性的,崩了别赖我,忽略即可。
可以看到sdb磁盘中有一个分区,大小为5TB,还有扇区等等的信息。紧接着通过mkfs进行格式化:
[root@b60280 ~]# mkfs.xfs /dev/sdb1
因为磁盘空间太大,所以分区需要的时间特别长,而这个时长需要根据你服务器单核心CPU和磁盘IO性能来判断的,在我的测试环境中花了将近3分钟。最后的结果如下:
[root@b60280 ~]# mkfs.xfs /dev/sdb1 meta-data=/dev/sdb1 isize=512 agcount=5, agsize=268435455 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0, sparse=0 data = bsize=4096 blocks=1342176768, imaxpct=5 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal log bsize=4096 blocks=521728, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0
格式化之后即可将其挂载到指定的目录,首先建立挂载的目标文件夹:
# 创建文件夹 [root@b60280 ~]# mkdir /mnt/5tb_datastore # 挂载磁盘 [root@b60280 ~]# mount /dev/sdb1 /mnt/5tb_datastore/
最后检查挂载情况:
[root@b60280 ~]# df -h | grep 5tb /dev/sdb1 5.0T 33M 5.0T 1% /mnt/5tb_datastore
至此,挂载工作已全部完成。为了实现开机挂载,建议将它加入到系统配置文件fstab中:
[root@b60280 ~]# cat /etc/fstab # # /etc/fstab # Created by anaconda on Fri Jun 21 07:20:07 2019 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # UUID=ae182751-dd37-489e-87f9-1113aad41aec / xfs defaults 0 0 UUID=724768ff-c5e5-4b91-be47-8dcde8f3a78a /boot xfs defaults 0 0 UUID=97262c2c-2abd-447c-9528-166db2a61170 swap swap defaults 0 0 /dev/sdb1 /mnt/5tb_datastore/ xfs defaults 0 0
0x05 结语
资源多就是任性。