CentOS7 新增16T硬盘扩容到根目录
摘要
业务服务器扩容磁盘,一般用户都比较喜欢把新增的磁盘容量扩容到原业务上的一个目录上,也就是说扩容业务目录的容量,其次情况下,同一目录下,无法挂载多个,不然会覆盖之前的挂载,所以要以卷组分方式来解决扩容。
现在的数据在爆炸式增长,磁盘空间越来越大。
在Linux中,由于ext3文件系统不支持大于2TB的分区,所以要使用GPT分区格式。
可利用parted命令来完成分区。fdisk 只能分区小于2T的磁盘,大于2T就要用到parted。
先把大容量的磁盘进行转换,转换为GPT格式。由于GPT格式的磁盘相当于原来MBR磁盘中原来保留4个 partition table的4*16个字节只留第一个16个字节,其它的类似于扩展分区,真正的partition table在512字节之后,所以对GPT磁盘表来讲没有四个主分区的限制。
目标
业务服务器新增一块硬盘,扩容到根目录。服务器硬盘容量320G,新添加硬盘容量16T。
LVM基本组成
LVM利用Linux内核的device-mapper来实现存储系统的虚拟化(系统分区独立于底层硬件)。通过LVM,你可以实现存储空间的抽象化并在上面建立虚拟分区(virtual partitions),可以更简便地扩大和缩小分区,无需担心某个硬盘上没有足够的连续空间。
LVM的基本组成块(building blocks)如下:
- 物理卷 Physical volume (PV) :可以在上面建立卷组的媒介,可以是硬盘分区,也可以是硬盘本身或者回环文件(loopback file)。物理卷包括一个特殊的header,其余部分被切割为一块块物理区域(physical extents)
- 卷组 Volume group (VG) :将一组物理卷收集为一个管理单元
- 逻辑卷 Logical volume (LV) :虚拟分区,由物理区域
- 物理区域 Physical extent (PE) :硬盘可供指派给逻辑卷的最小单位(通常为4MB)
LVM 优点
比起正常的硬盘分区管理,LVM更富于弹性:查看当前系统的根目录磁盘容量大小
- 使用卷组(VG),使众多硬盘空间看起来像一个大硬盘
- 使用逻辑卷(LV),可以创建跨越众多硬盘空间的分区
- 可以创建小的逻辑卷(LV),在空间不足时再动态调整它的大小
- 在调整逻辑卷(LV)大小时可以不用考虑逻辑卷在硬盘上的位置,不用担心没有可用的连续空间
- 可以在线(online)对逻辑卷(LV)和卷组(VG)进行创建、删除、调整大小等操作,LVM上的文件系统也需要重新调整大小,某些文件系统也支持这样的在线操作。
- 无需重新启动服务,就可以将服务中用到的逻辑卷(LV)在线(online)/动态(live)迁移至别的硬盘上。
- 允许创建快照,可以保存文件系统的备份,同时使服务的下线时间(downtime)降低到最小。
查看服务器磁盘信息:sda是新增的大于2T的未分区的磁盘
[root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 14.6T 0 disk sdb 8:16 0 297.1G 0 disk ├─sdb1 8:17 0 1G 0 part /boot └─sdb2 8:18 0 295.6G 0 part ├─cl-root 253:0 0 188G 0 lvm / ├─cl-swap 253:1 0 7.6G 0 lvm [SWAP] └─cl-home 253:2 0 100G 0 lvm /home sr0 11:0 1 1024M 0 rom [root@localhost ~]#
fdisk命令查看硬盘信息
添加一块硬盘(16T)到系统中,原硬盘(320G),具体步骤参考:
使用 fdisk -l 命令查看到这块新盘为 /dev/sda
[root@localhost ~]# fdisk –l #查看硬盘 磁盘 /dev/sdb:319.0 GB, 318999887872 字节,623046656 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0x000b8b56 设备 Boot Start End Blocks Id System /dev/sdb1 * 2048 2099199 1048576 83 Linux /dev/sdb2 2099200 622079999 309990400 8e Linux LVM 磁盘 /dev/sda:16000.9 GB, 16000900661248 字节,31251759104 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 4096 字节 I/O 大小(最小/最佳):4096 字节 / 4096 字节 磁盘 /dev/mapper/cl-root:201.9 GB, 201863462912 字节,394264576 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘 /dev/mapper/cl-swap:8187 MB, 8187281408 字节,15990784 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘 /dev/mapper/cl-home:107.4 GB, 107374182400 字节,209715200 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 [root@localhost ~]#
对vda进行分区
[root@localhost ~]# parted sda 错误: 无法对设备 sda - 没有那个文件或目录 做 stat 操作。 重试/Retry/放弃/Cancel? 重试/Retry/放弃/Cancel? cancel
提示失败,原因是:没有进入到dev目录下。
[root@localhost ~]# cd /dev [root@localhost dev]# parted sda ##使用parted命令进行分区,进入parted分区工具。 GNU Parted 3.1 使用 /dev/sda Welcome to GNU Parted! Type 'help' to view a list of commands. (parted) help ##查看帮助信息 align-check TYPE N check partition N for TYPE(min|opt) alignment help [COMMAND] print general help, or help on COMMAND mklabel,mktable LABEL-TYPE create a new disklabel (partition table) mkpart PART-TYPE [FS-TYPE] START END make a partition name NUMBER NAME name partition NUMBER as NAME print [devices|free|list,all|NUMBER] display the partition table, available devices, free space, all found partitions, or a particular partition quit exit program rescue START END rescue a lost partition near START and END resizepart NUMBER END resize partition NUMBER rm NUMBER delete partition NUMBER select DEVICE choose the device to edit disk_set FLAG STATE change the FLAG on selected device disk_toggle [FLAG] toggle the state of FLAG on selected device set NUMBER FLAG STATE change the FLAG on partition NUMBER toggle [NUMBER [FLAG]] toggle the state of FLAG on partition NUMBER unit UNIT set the default unit to UNIT version display the version number and copyright information of GNU Parted (parted) mklabel gpt ##输入mklable gpt,把sda改成gpt大分区格式。 (parted) print ##查看sda分区状态。可以看到已经打上了gpt的标签。 Model: ATA ST16000NM000J-2T (scsi) Disk /dev/sda: 16.0TB Sector size (logical/physical): 512B/4096B Partition Table: gpt Disk Flags: Number Start End Size File system Name 标志 (parted) mkpart primary 0 16tb ##创建一个主分区,容量从0GB开始到16TB的全部空间。 警告: The resulting partition is not properly aligned for best performance. 忽略/Ignore/放弃/Cancel? i ##输入i忽略警告 (parted) print ##查看sda分区状态 Model: ATA ST16000NM000J-2T (scsi) Disk /dev/sda: 16.0TB Sector size (logical/physical): 512B/4096B Partition Table: gpt Disk Flags: Number Start End Size File system Name 标志 1 17.4kB 16.0TB 16.0TB primary (parted) quit ##退出parted分区工具。 信息: You may need to update /etc/fstab.
查看磁盘信息
[root@localhost dev]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 14.6T 0 disk └─sda1 8:1 0 14.6T 0 part sdb 8:16 0 297.1G 0 disk ├─sdb1 8:17 0 1G 0 part /boot └─sdb2 8:18 0 295.6G 0 part ├─cl-root 253:0 0 188G 0 lvm / ├─cl-swap 253:1 0 7.6G 0 lvm [SWAP] └─cl-home 253:2 0 100G 0 lvm /home sr0 11:0 1 1024M 0 rom [root@localhost dev]#
把sda1分区转为物理卷
[root@localhost dev]# partprobe ##不重启读取分区信息
[root@localhost dev]# pvcreate /dev/sda1 ##将分出来的sda1分区转为物理卷
Physical volume "/dev/sda1" successfully created.
[root@localhost dev]#
查看物理卷组状态信息,VG Name 是 cl
[root@localhost dev]# vgdisplay --- Volume group --- VG Name cl System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 4 VG Access read/write VG Status resizable MAX LV 0 Cur LV 3 Open LV 3 Max PV 0 Cur PV 1 Act PV 1 VG Size <295.63 GiB PE Size 4.00 MiB Total PE 75681 Alloc PE / Size 75680 / 295.62 GiB Free PE / Size 1 / 4.00 MiB VG UUID L10ygs-vvun-f89h-Lm8Q-kBLq-pjNs-EwnsHu
把新增卷组空间全部扩容到根目录的逻辑卷
[root@localhost dev]# vgextend cl /dev/sda1 ##将新的 PV 加入 cl 组卷 Volume group "cl" successfully extended [root@localhost dev]# lvextend -l +100%FREE /dev/mapper/cl-root ##用 lvextend 将 /dev/mapper/cl-root 所在卷组所有剩余空间都分配给了它 Size of logical volume cl/root changed from 188.00 GiB (48128 extents) to <14.74 TiB (3863040 extents). Logical volume cl/root successfully resized. [root@localhost dev]# xfs_growfs /dev/mapper/cl-root ##用 xfs_growfs 对扩容后的 LV 进行大小调整,使扩容生效 meta-data=/dev/mapper/cl-root isize=512 agcount=4, agsize=12320768 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0 spinodes=0 data = bsize=4096 blocks=49283072, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal bsize=4096 blocks=24064, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 data blocks changed from 49283072 to 3955752960 [root@localhost ~]# vgdisplay ## 查看卷组信息,可用 PE 已经为 0 个 --- Volume group --- VG Name cl System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 6 VG Access read/write VG Status resizable MAX LV 0 Cur LV 3 Open LV 3 Max PV 0 Cur PV 2 Act PV 2 VG Size 14.84 TiB PE Size 4.00 MiB Total PE 3890592 Alloc PE / Size 3890592 / 14.84 TiB Free PE / Size 0 / 0 VG UUID L10ygs-vvun-f89h-Lm8Q-kBLq-pjNs-EwnsHu [root@localhost ~]#
查看详情
[root@localhost ~]# lvdisplay ##查看 LV 信息,/dev/cl/root 已扩大为 14.74 TiB --- Logical volume --- LV Path /dev/cl/root LV Name root VG Name cl LV UUID xBO19q-8Hhu-iWOS-ee8Y-3UMx-mVic-jK2mq6 LV Write Access read/write LV Creation host, time localhost.localdomain, 2022-08-24 10:15:32 +0800 LV Status available # open 1 LV Size <14.74 TiB Current LE 3863040 Segments 3 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:0 --- Logical volume --- LV Path /dev/cl/home LV Name home VG Name cl LV UUID QU60Op-xaHQ-m2CL-fraw-bvxn-aC1R-ak4Me9 LV Write Access read/write LV Creation host, time localhost.localdomain, 2022-08-24 10:15:37 +0800 LV Status available # open 1 LV Size 100.00 GiB Current LE 25600 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:2 --- Logical volume --- LV Path /dev/cl/swap LV Name swap VG Name cl LV UUID AE3fdS-CdFH-3Ql1-uCjp-2vti-dyEb-500JLX LV Write Access read/write LV Creation host, time localhost.localdomain, 2022-08-24 10:15:41 +0800 LV Status available # open 2 LV Size 7.62 GiB Current LE 1952 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:1 [root@localhost ~]# df –Th # 查看挂载信息,/ 容量已扩大为 15T 文件系统 类型 容量 已用 可用 已用% 挂载点 devtmpfs devtmpfs 3.7G 0 3.7G 0% /dev tmpfs tmpfs 3.7G 16K 3.7G 1% /dev/shm tmpfs tmpfs 3.7G 9.1M 3.7G 1% /run tmpfs tmpfs 3.7G 0 3.7G 0% /sys/fs/cgroup /dev/mapper/cl-root xfs 15T 4.1G 15T 1% / /dev/mapper/cl-home xfs 100G 33M 100G 1% /home /dev/sdb1 xfs 1014M 185M 830M 19% /boot tmpfs tmpfs 757M 0 757M 0% /run/user/0 [root@localhost ~]#
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析