-- 以下用虚拟机演示,与真实环境操作根据情况而定,大体一致!--
1.选择一台虚拟机,为其添加一块新的磁盘100G
2.连接虚拟机,查看新添加的磁盘
添加新磁盘后直接查看,是查看不到的,因为系统还没有识别到新添加的磁盘。需要让Linux系统重新识别新磁盘。
两种方法:
1.重启服务器(生产中基本不会随意重启服务器)
2.不重启服务器(使用命令来扫描识别新磁盘)
—》不重启服务器识别新磁盘方法如下:
2.1.查看主机总线号
[root@localhost ~]# ls /sys/class/scsi_host/ host0 host1 host2
2.2.重新扫描SCSI总线来添加设备(之所以扫描SCSI总线,是因为我们添加的是 SCSI 类型的磁盘。)
[root@localhost ~]# echo "- - -" > /sys/class/scsi_host/host0/scan [root@localhost ~]# echo "- - -" > /sys/class/scsi_host/host1/scan [root@localhost ~]# echo "- - -" > /sys/class/scsi_host/host2/scan
2.3查看识别到的新添加的磁盘
[root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 20G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 19G 0 part ├─centos-root 253:0 0 37G 0 lvm / └─centos-swap 253:1 0 2G 0 lvm [SWAP] sdb 8:16 0 20G 0 disk └─sdb1 8:17 0 20G 0 part └─centos-root 253:0 0 37G 0 lvm / sdc 8:32 0 100G 0 disk --》成功识别到新磁盘 sr0 11:0 1 906M 0 rom
3.将新添加的磁盘sdc进行磁盘分区,分为2个分区,并设置磁盘分区类型为8e,即LVM类型
[root@localhost ~]# fdisk /dev/sdc 欢迎使用 fdisk (util-linux 2.23.2)。 更改将停留在内存中,直到您决定将更改写入磁盘。 使用写入命令前请三思。 Device does not contain a recognized partition table 使用磁盘标识符 0xc605fa7d 创建新的 DOS 磁盘标签。 命令(输入 m 获取帮助):n --添加新分区 Partition type: p primary (0 primary, 0 extended, 4 free) --p为主分区,最多只能有4个 e extended --e为逻辑分区-- Select (default p): p --我们需要分主分区,所以输入p 分区号 (1-4,默认 1):1 --这个分区的分区号,sdc1、sdc2这种,默认从1开始计数,默认 起始 扇区 (2048-209715199,默认为 2048): --起始扇区,默认将使用默认值 2048 Last 扇区, +扇区 or +size{K,M,G} (2048-209715199,默认为 209715199):+50G --分多个区时,需要规划每个区分多大的空间,这里为50G,记住前面有+号 分区 1 已设置为 Linux 类型,大小设为 50 GiB 命令(输入 m 获取帮助):t --设置sdc1分区的类型 已选择分区 1 --选择要设置哪个分区 Hex 代码(输入 L 列出所有代码):8e --8e类型为LVM类型,设置为8e,方便后期(默认为83类型,8e类型为LVM类型) 已将分区“Linux”的类型更改为“Linux LVM” 命令(输入 m 获取帮助):n --添加新分区(将一个磁盘分成多个区时,就可以这样分完一个区,再次分下一个) Partition type: p primary (1 primary, 0 extended, 3 free) e extended Select (default p): p 分区号 (2-4,默认 2):2 --sdc1分区已经分了,所以这里从第2个开始,即为sdc2分区 起始 扇区 (104859648-209715199,默认为 104859648): 将使用默认值 104859648 --因为已经有sdc1分区了,所以起始扇区是从sdc1分区的末尾开始算,sdc1是从2048~104859647,则sdc2分区为104859648~207620095 Last 扇区, +扇区 or +size{K,M,G} (104859648-209715199,默认为 209715199):+49G --磁盘总大小为100G,sdc1已经分走50G,这里不能再分完整的50G,会提示空间不足,一般需预留一点才行,所以这里分49G 分区 2 已设置为 Linux 类型,大小设为 49 GiB 命令(输入 m 获取帮助):t 分区号 (1,2,默认 2):2 Hex 代码(输入 L 列出所有代码):8e --设置分区类型为8e,即LVM类型 已将分区“Linux”的类型更改为“Linux LVM” 命令(输入 m 获取帮助):p --列出分区信息 磁盘 /dev/sdc:107.4 GB, 107374182400 字节,209715200 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0xc605fa7d 设备 Boot Start End Blocks Id System /dev/sdc1 2048 104859647 52428800 8e Linux LVM /dev/sdc2 104859648 207620095 51380224 8e Linux LVM —》可以看到分出来的2个磁盘类型都设置为了8e,即LVM类型 命令(输入 m 获取帮助):w --将分区表写入磁盘保存,如果不想保存,则输入q,可以不保存上面的分区,可以重新分区 The partition table has been altered! Calling ioctl() to re-read partition table. 正在同步磁盘。 [root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 20G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 19G 0 part ├─centos-root 253:0 0 37G 0 lvm / └─centos-swap 253:1 0 2G 0 lvm [SWAP] sdb 8:16 0 20G 0 disk └─sdb1 8:17 0 20G 0 part └─centos-root 253:0 0 37G 0 lvm / sdc 8:32 0 100G 0 disk ├─sdc1 8:33 0 50G 0 part #可以看到分的2个区 └─sdc2 8:34 0 49G 0 part sr0 11:0 1 906M 0 rom
4.将sdc1分区用于无损扩容根目录空间
,sdc2分区用于挂载到/home子目录单独使用
--------sdc1分区无损扩容根目录--------
4.1 sdc1分区创建物理卷
pvcreate /dev/sdc1
pvdisplay #查看创建的物理卷
4.2 将物理卷pv扩容到卷组vg
vgdisplay #先查看一下卷组vg的名字,用于扩容
vgextend centos /dev/sdc1 #扩容卷组
vgdisplay #查看扩容后的卷组
可以看到卷组从开始的38.99G已经扩容到了88.99G。
4.3 扩容LVM根分区
可以使用df -hl
查看根分区/的路径来扩容根分区
也可以lvdisplay
来查看lv的path路径来扩容根分区(推荐)
lvextend -L +49.99G /dev/mapper/centos-root
在使用上面的命令扩容时,因为我们的sdc1分区空间有50G,那么我们在扩容lvm的时候,只能输入+49.99G,需要预留一点出来,直接输入+50G会提示空间不足,直接填写49.99G就可以!
lvextend -L +49.99G /dev/centos/root /dev/sdc1
4.4 同步文件系统即重新读取根分区磁盘信息
xfs\_growfs /dev/mapper/centos\-root
#同步文件系统到根/目录磁盘路径下
xfs\_growfs /dev/centos/root
(这里的路径用df -hl的路径或者lvdisplay的路径都可以) --centos7一般用这个
或者
resize2fs /dev/centos/root --centos6一般用这个
可以看到通过上面的操作已经成功将根目录成功无损扩容了!
--------sdc2分区用于挂载到/home子目录单独使用---------
注意:
将新磁盘添加到Linux服务器上后,扩容根分区容量时就按上面的sdc1操作一步一步来;如果是要将磁盘部分分区sdc2作为挂载目录单独使用,则按下面的方法来,这两种使用方式的前几步都是一样的,即对新磁盘 /dev/vdc 先进行分区(已经分好了sdc1、sdc2),然后将要挂载单独使用的分区磁盘sdc2进行格式化,然后就可以挂载使用了!
Sdc2分区相关操作如下:
1.将新添加的磁盘sdc进行磁盘分区,分为2个分区,并设置磁盘分区类型为8e,即LVM类型(sdc1已经扩容根演示了,这里主要是看sdc2的部分)
[root@localhost ~]# fdisk /dev/sdc 欢迎使用 fdisk (util-linux 2.23.2)。 更改将停留在内存中,直到您决定将更改写入磁盘。 使用写入命令前请三思。 Device does not contain a recognized partition table 使用磁盘标识符 0xc605fa7d 创建新的 DOS 磁盘标签。 命令(输入 m 获取帮助):n #添加新分区 Partition type: p primary (0 primary, 0 extended, 4 free) #p为主分区,最多只能有4个 e extended #e为逻辑分区 Select (default p): p #我们需要分主分区,所以输入p 分区号 (1-4,默认 1):1 #这个分区的分区号,sdc1、sdc2这种,默认从1开始计数,默认 起始 扇区 (2048-209715199,默认为 2048): #起始扇区,默认 将使用默认值 2048 Last 扇区, +扇区 or +size{K,M,G} (2048-209715199,默认为 209715199):+50G #分多个区时,需要规划每个区分多大的空间,这里为50G,记住前面有+号 分区 1 已设置为 Linux 类型,大小设为 50 GiB 命令(输入 m 获取帮助):t #设置sdc1分区的类型 已选择分区 1 #选择要设置哪个分区 Hex 代码(输入 L 列出所有代码):8e #8e类型为LVM类型,设置为8e,方便后期 已将分区“Linux”的类型更改为“Linux LVM” 下面是sdc2分区的分区过程: 命令(输入 m 获取帮助):n #添加新分区(将一个磁盘分成多个区时,就可以这样分完一个区,再次分下一个) Partition type: p primary (1 primary, 0 extended, 3 free) e extended Select (default p): p 分区号 (2-4,默认 2):2 #sdc1分区已经分了,所以这里从第2个开始,即为sdc2分区 起始 扇区 (104859648-209715199,默认为 104859648): 将使用默认值 104859648 #因为已经有sdc1分区了,所以起始扇区是从sdc1分区的末尾开始算,sdc1是从2048~104859647,则sdc2分区为104859648~207620095 Last 扇区, +扇区 or +size{K,M,G} (104859648-209715199,默认为 209715199):+49G #磁盘总大小为100G,sdc1已经分走50G,这里不能再分完整的50G,会提示空间不足,一般需预留一点才行,所以这里分49G 分区 2 已设置为 Linux 类型,大小设为 49 GiB 命令(输入 m 获取帮助):t 分区号 (1,2,默认 2):2 Hex 代码(输入 L 列出所有代码):8e #设置分区类型为8e,即LVM类型 已将分区“Linux”的类型更改为“Linux LVM” 命令(输入 m 获取帮助):p #列出分区信息 磁盘 /dev/sdc:107.4 GB, 107374182400 字节,209715200 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0xc605fa7d 设备 Boot Start End Blocks Id System /dev/sdc1 2048 104859647 52428800 8e Linux LVM /dev/sdc2 104859648 207620095 51380224 8e Linux LVM —》可以看到分出来的2个磁盘类型都设置为了8e,即LVM类型 命令(输入 m 获取帮助):w #将分区表写入磁盘保存,如果不想保存,则输入q,可以不保存上面的分区,可以重新分区 The partition table has been altered! Calling ioctl() to re-read partition table. 正在同步磁盘。 [root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 20G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 19G 0 part ├─centos-root 253:0 0 37G 0 lvm / └─centos-swap 253:1 0 2G 0 lvm [SWAP] sdb 8:16 0 20G 0 disk └─sdb1 8:17 0 20G 0 part └─centos-root 253:0 0 37G 0 lvm / sdc 8:32 0 100G 0 disk ├─sdc1 8:33 0 50G 0 part └─sdc2 8:34 0 49G 0 part #可以看到本次要用的sdc2分区 sr0 11:0 1 906M 0 rom
2.格式化分区文件系统(最常见的为xfs和ext4类型)
xfs和ext4的区别: 1.RHEL/Centos7默认文件系统是XFS,Centos6为Ext4,Centos5为Ext3。 2.XFS可扩展性和Scalability比较强,Ext4受限于磁盘结构和兼容问题。 3.EXT4可支持单个文件的大小:16GB到16TB。性能更高! 4.XFS可支持单个文件的大小:16TB到16EB。 5.XFS是64位文件系统,理论上最大支持8EB减1字节的单个文件系统。 6.Ext4是32位文件系统,理论上最大支持1EB减1字节的单个文件系统。
2.1 将分区sdc2文件系统格式化为xfs文件系统类型
[root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 20G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 19G 0 part ├─centos-root 253:0 0 87G 0 lvm / └─centos-swap 253:1 0 2G 0 lvm [SWAP] sdb 8:16 0 20G 0 disk └─sdb1 8:17 0 20G 0 part └─centos-root 253:0 0 87G 0 lvm / sdc 8:32 0 100G 0 disk ├─sdc1 8:33 0 50G 0 part │ └─centos-root 253:0 0 87G 0 lvm / └─sdc2 8:34 0 49G 0 part sr0 11:0 1 906M 0 rom [root@localhost ~]# mkfs.xfs /dev/sdc2 meta-data=/dev/sdc2 isize=512 agcount=4, agsize=3211264 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0, sparse=0 data = bsize=4096 blocks=12845056, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal log bsize=4096 blocks=6272, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0
2.2 查看格式化后的sdc2分区的文件系统
[root@localhost ~]# blkid /dev/sda1: UUID="53742718-1099-483a-8eb5-bd343b82d709" TYPE="xfs" /dev/sda2: UUID="h8HIlP-RzLz-Qabd-zU9m-TekA-CDDx-wwbVrR" TYPE="LVM2_member" /dev/sdb1: UUID="o97VVU-AdR2-Fm61-oRUA-CWZx-FF86-GKNaJN" TYPE="LVM2_member" /dev/sr0: UUID="2018-05-03-21-07-04-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos" /dev/mapper/centos-root: UUID="4d85ff81-ed74-449a-8d72-0c91a9b5b5e2" TYPE="xfs" /dev/mapper/centos-swap: UUID="1b727d3c-ccf7-4828-911f-78bf59691809" TYPE="swap" /dev/sdc1: UUID="n4PDMJ-8Pmy-4G5E-q9qv-zbGs-ESQc-6Vd0Vd" TYPE="LVM2_member" /dev/sdc2: UUID="bd0941e7-102c-4dbd-9eec-7a75cdbe98d2" TYPE=“xfs"
3.创建挂载目录
4.书写自动挂载配置文件/etc/fstab,添加新的挂载配置
格式: 设备名称 挂载点 分区的类型 挂载选项 dump选项 fsck选项 -设备名称: 可以是实际设备名称/dev/sda1(这类名称不稳定,在配置文件中不要使用);也可以是卷标LABEL;最好是用UUID;(不会变化)可以通过blkid命令获取设备uuid信息 -挂载点: /、/usr、swap等都是系统安装是分区的默认挂载点 -文件系统类型 ext2、ext3、ext4、xfs、brtfs、jfs、reiserfs、reiser4、swap -挂载选项: auto/noauto:默认auto支持;是否支持系统自动挂载,是否支持-a选项 user/nouser:默认nouser不支持;是否支持普通用户挂载此设备 ro:按制度权限挂载 rw:按可读可写权限挂载 pri:swap设备需要指定优先级 defaults:默认支持rw,nouid,dev,auto,nosuer,async(若不写入则默认支持) —》基本都是默认用这个 -dump选项: 设置是否让备份程序备份文件系统,0为不备份,1为每天次,如果上次是用dump备份,将显示备份至今的天数 -fsck选项: 告诉fsck程序以什么顺序检查文件系统,0为不检查,根分区为1表示永远检查,其他从2开始,数字相同就同时检查,但是不能同时为1;注意,最好将这个选项设置为0,有故障的时候机器还可以重启,如果不设置成为0,出故障还需要去机房排查故障
原/etc/fstab配置文件:
查看sdc2分区的详细信息(UUID)
[root@localhost ~]# blkid /dev/sda1: UUID="53742718-1099-483a-8eb5-bd343b82d709" TYPE="xfs" /dev/sda2: UUID="h8HIlP-RzLz-Qabd-zU9m-TekA-CDDx-wwbVrR" TYPE="LVM2_member" /dev/sdb1: UUID="o97VVU-AdR2-Fm61-oRUA-CWZx-FF86-GKNaJN" TYPE="LVM2_member" /dev/sr0: UUID="2018-05-03-21-07-04-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos" /dev/mapper/centos-root: UUID="4d85ff81-ed74-449a-8d72-0c91a9b5b5e2" TYPE="xfs" /dev/mapper/centos-swap: UUID="1b727d3c-ccf7-4828-911f-78bf59691809" TYPE="swap" /dev/sdc1: UUID="n4PDMJ-8Pmy-4G5E-q9qv-zbGs-ESQc-6Vd0Vd" TYPE="LVM2_member" /dev/sdc2: UUID="bd0941e7-102c-4dbd-9eec-7a75cdbe98d2" TYPE="xfs"
添加新配置到/etc/fstab文件中
[root@localhost ~]# vi /etc/fstab # # /etc/fstab # Created by anaconda on Fri Dec 3 19:51:41 2021 # # 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 # /dev/mapper/centos-root / xfs defaults 0 0 UUID=53742718-1099-483a-8eb5-bd343b82d709 /boot xfs defaults 0 0 /dev/mapper/centos-swap swap swap defaults 0 0 UUID=bd0941e7-102c-4dbd-9eec-7a75cdbe98d2 /home/file xfs defaults 0 0
5.使用mount -a重载开机自动挂载配置文件并查看挂载情况
可以看到sdc2分区磁盘已经成功挂载到了/home/file目录下,并且也配置好了开机自动挂载文件!