一、tmpfs
1. tmpfs简介
tmpfs是一种虚拟内存文件系统。是基于内存的文件系统,创建时不需要使用mkfs等初始化。
它最大的特点就是它的存储空间在VM(virtual memory),VM是由linux内核里面的vm子系统管理的。
linux下面VM的大小由RM(Real Memory)和swap组成,RM的大小就是物理内存的大小,而Swap的大小是由自己决定的。
Swap是通过硬盘虚拟出来的内存空间,因此它的读写速度相对RM(Real Memory)要慢许多,当一个进程申请一定数量的内存时,如内核的vm子系统发现没有足够的RM时,就会把RM里面的一些不常用的数据交换到Swap里面,如果需要重新使用这些数据再把它们从Swap交换到RM里面。如果有足够大的物理内存,可以不划分Swap分区。
VM由RM+Swap两部分组成,因此tmpfs最大的存储空间可达(The size of RM + The size of Swap)。 但是对于tmpfs本身而言,它并不知道自己使用的空间是RM还是Swap,这一切都是由内核的vm子系统管理的。
tmpfs默认的大小是RM的一半,假如你的物理内存是1024M,那么tmpfs默认的大小就是512M
一般情况下,是配置的小于物理内存大小的。
tmpfs配置的大小并不会真正的占用这块内存,如果挂载路径(如/dev/shm/)下没有任何文件,它占用的内存实际上就是0字节;如果它最大为1G,里头放有100M文件,那剩余的900M仍然可为其它应用程序所使用,但它所占用的100M内存,是不会被系统回收重新划分的。
当删除tmpfs中文件,tmpfs 文件系统驱动程序会动态地减小文件系统并释放 VM 资源。
2.参考资料进行更改
因为使用df -h命令发现tmpfs文件系统占用空间有点多,因而想缩小其占用空间为其他文件空出可用空间
[root@localhost ~]# df -hT
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 894M 0 894M 0% /dev
tmpfs tmpfs 910M 0 910M 0% /dev/shm
tmpfs tmpfs 910M 11M 900M 2% /run
tmpfs tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 10G 5.1G 5.0G 51% /
/dev/mapper/centos-home xfs 497M 247M 251M 50% /home
/dev/sda1 xfs 197M 163M 35M 83% /boot
tmpfs tmpfs 182M 36K 182M 1% /run/user/1000
tmpfs tmpfs 182M 0 182M 0% /run/user/0
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 200M 0 part /boot
└─sda2 8:2 0 12.5G 0 part
├─centos-root 253:0 0 10G 0 lvm /
├─centos-swap 253:1 0 2G 0 lvm [SWAP]
└─centos-home 253:2 0 500M 0 lvm /home
sr0 11:0 1 4.5G 0 rom
[root@localhost ~]# mount -o remount,size=777M tmpfs /dev/shm
[root@localhost ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 894M 0 894M 0% /dev
tmpfs 777M 0 777M 0% /dev/shm
tmpfs 910M 11M 900M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/mapper/centos-root 10G 5.0G 5.1G 50% /
/dev/mapper/centos-home 497M 247M 251M 50% /home
/dev/sda1 197M 163M 35M 83% /boot
tmpfs 182M 40K 182M 1% /run/user/1000
tmpfs 182M 0 182M 0% /run/user/0
成功,准备进行永久修改:
[root@localhost ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Thu Sep 10 16:39:38 2020
#
# 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=aa6cfe93-c23d-41ee-ac77-8486290a0b05 /boot xfs defaults 0 0
/dev/mapper/centos-home /home xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
[root@localhost ~]# vi /etc/fstab
[root@localhost ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Thu Sep 10 16:39:38 2020
#
# 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=aa6cfe93-c23d-41ee-ac77-8486290a0b05 /boot xfs defaults 0 0
/dev/mapper/centos-home /home xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
tmpfs /run tmpfs defaults,size=400M 0 0
tmpfs /dev/shm tmpfs defaults,size=400M 0 0
tmpfs /dev tmpfs defaults,size=400M 0 0
tmpfs /sys/fs/cgroup tmpfs defaults,size=400M 0 0
[root@localhost ~]# mount -a ###情况一:不加入上面最后一行,运行正常,之后重新开机运行df -h命令也会发现修改成功
[root@localhost ~]# mount -a ###情况二:加入后运行,报如下错误,重新删除后再运行也没用,且会造成虚拟机崩溃,无法开机或者无法关机
mount: 找不到 UUID=aa6cfe93-c23d-41ee-ac77-8486290a0b05
[root@localhost ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
tmpfs 400M 0 400M 0% /dev
tmpfs 910M 11M 900M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/mapper/centos-root 10G 5.0G 5.1G 50% /
/dev/sda1 197M 163M 35M 83% /boot
/dev/mapper/centos-home 497M 247M 251M 50% /home
tmpfs 182M 12K 182M 1% /run/user/42
tmpfs 182M 0 182M 0% /run/user/0
[root@localhost ~]# lsblk
lsblk: dm-0:获取设备路径失败
lsblk: dm-1:获取设备路径失败
lsblk: dm-2:获取设备路径失败
lsblk: dm-0:获取设备路径失败
lsblk: dm-1:获取设备路径失败
lsblk: dm-2:获取设备路径失败
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 200M 0 part /boot
└─sda2 8:2 0 12.5G 0 part
sr0 11:0 1 1024M 0 rom
失败了,那么为何对它进行修改就失败了呢?
Linux系统中经常有个需求就是希望能限制某个或者某些进程的分配资源。也就是能完成一组容器的概念,在这个容器中,有分配好的特定比例的cpu时间,IO时间,可用内存大小等。于是就出现了cgroup的概念,cgroup就是controller group,最初由google的工程师提出,后来被整合进Linux内核中。
cgroup是Linux内核提供的一种可以限制、记录、隔离进程组(process groups)所使用的物理资源(如:cpu,memory,IO等等)的机制。
通过 mount 命令来查看 cgroups 默认的挂载点,使用ls /sys/fs/cgroup/ 来显示已经挂载的子系统:
[root@localhost ~]# mount | grep cgroup
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,seclabel,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,devices)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,freezer)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,cpuacct,cpu)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,blkio)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,net_prio,net_cls)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,memory)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,cpuset)
cgroup on /sys/fs/cgroup/pids type cgroup(rw,nosuid,nodev,noexec,relatime,seclabel,pids)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,hugetlb)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,perf_event)
[root@localhost ~]# ls /sys/fs/cgroup/
blkio cpu cpuacct cpu,cpuacct cpuset devices freezer hugetlb memory net_cls net_cls,net_prio net_prio perf_event pids systemd
[root@localhost ~]#
可以看到 /sys/fs/cgroup 的挂载类型其实只读的。换句话说,系统是不建议我们在/sys/fs/cgroup 目录下创建新的目录并挂载其它子系统的。
Cgroups子系统介绍:
- blkio 对块设备的 IO 进行限制。
- cpu 限制 CPU 时间片的分配,与 cpuacct 挂载在同一目录。
- cpuacct 生成 cgroup 中的任务占用 CPU 资源的报告,与 cpu 挂载在同一目录。
- cpuset 给 cgroup 中的任务分配独立的 CPU(多处理器系统) 和内存节点。
- devices 允许或禁止 cgroup 中的任务访问设备。
- freezer 暂停/恢复 cgroup 中的任务。
- hugetlb 限制使用的内存页数量。
- memory 对 cgroup 中的任务的可用内存进行限制,并自动生成资源占用报告。
- net_cls 使用等级识别符(classid)标记网络数据包,这让 Linux 流量控制器(tc指令)可以识别来自特定 cgroup 任务的数据包,并进行网络限制。
- net_prio 允许基于 cgroup 设置网络流量(netowork traffic)的优先级。
- perf_event 允许使用 perf 工具来监控 cgroup。
- pids 限制任务的数量
因而可能是因此而不让对/sys/fs/cgroup进行size设置操作。
之后再去看了虚拟机发现,如下图:
发现总共20G空间,除去/boot的1G,/root加上swap(即centos-root + centos-swap)就已经占据了所有空间,再查阅网上资料看到有资料中写到这么一条:
#mount -t tmpfs -o size=20m tmpfs /mnt/tmp
面这条命令分配了上限为20m的VM到/mnt/tmp目录下,用df命令查看一下,确实/mnt/tmp挂载点显
示的大小是20m
也就是说上图中通过df命名看到的如tmpfs /dev/shm这样,他其实是tmpfs挂载到了/dev/shm下,而/dev/shm这个路径又在/底下,也就是说这么多个tmpfs其实都是在/底下(即centos-root底下),也就是tmpfs所用的空间都在/下,那么直接扩大/即可。
那么tmpfs它那些空间size大小什么意思?
根据上文简介可以看出:tmpfs一个优点就是它的大小是随着实际存储的容量而变化的,换句话说,假如挂载目录下什么也没有,那么tmpfs并不占用VM。
也就是说size只代表其能占用的最大空间,而不是实际分配给它的空间,而它未使用的空间,其他程序还是能用,即是动态分配的!
所以其实没必要改它的大小。
二、扩容
由于虚拟机空间不足,因而想对虚拟机进行扩容操作,考虑到情况的多样,此处将其分为三种情况:
一是扩大已有硬盘容量(或是硬盘还有剩余未分配的空间),
二是考虑到实际生产时无法扩大已有硬盘容量而进行的添加新硬盘的扩容方式,
三是缩小其他无用路径文件空间来方便剩出空间以扩大目标路径空间
(1)方案一
另加存储空间(此处扩容对象为/home)
1)单纯扩大某一硬盘容量
1.如果本身虚拟机已经没有剩余未分配可用空间,则需要关闭虚拟机,再对其扩大硬盘空间:
在虚拟机关机后对其进行设置–扩展,重新输入空间大小(此处只能输入比原先大的,而且一旦确定扩大后就无法再缩小),磁盘加上容量后,并不能够马上使用,需要对磁盘进行重新分配
2.若虚拟机本身就有足够的未分配空间,或者经过步骤1之后,即可进行以下步骤:
命令lsblk查看根分区:
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 200M 0 part /boot
└─sda2 8:2 0 12.5G 0 part
├─centos-root 253:0 0 10G 0 lvm /
├─centos-swap 253:1 0 2G 0 lvm [SWAP]
└─centos-home 253:2 0 500M 0 lvm /home
sr0 11:0 1 4.5G 0 rom
可以看到 / 的所做type是lvm,那么则通过lvm方式进行扩容
第一种非 LVM方式,使用lsblk命令查看根分区,就是根目录直接挂载在磁盘分区上;
第二种 LVM方式,磁盘分区后,还需要创建为LVM(逻辑卷管理) ,等于多创建了一层虚拟层,这样更加方便管理磁盘
①LVM方式:
进行扩容要求虚拟机剩余空间至少还有300-400M的空间,最好是大于400M,存储使用100%的话,无法挂载,须预留部分空间出来
1.开始分区:fdisk /dev/sda
[root@localhost dev]# fdisk /dev/sda
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):n #新建分区
Partition type:
p primary (2 primary, 0 extended, 2 free)
e extended
Select (default p): p #选择主分区
分区号 (3,4,默认 3):4 #分区号,默认即可
起始 扇区 (26617856-41943039,默认为 26617856): #默认回车即可
将使用默认值 26617856
Last 扇区, +扇区 or +size{K,M,G} (26617856-41943039,默认为 41943039): #若将所有未分配空间全部用掉,则默认回车,若想设置大小,则使用+size{K,M,G},如+20M回车
将使用默认值 41943039
分区 4 已设置为 Linux 类型,大小设为 7.3 GiB
命令(输入 m 获取帮助):w #保存退出
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: 设备或资源忙.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
正在同步磁盘。
[root@localhost dev]#
2.此时使用lsblk命令查看:
[root@localhost dev]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 200M 0 part /boot
└─sda2 8:2 0 12.5G 0 part
├─centos-root 253:0 0 10G 0 lvm /
├─centos-swap 253:1 0 2G 0 lvm [SWAP]
└─centos-home 253:2 0 500M 0 lvm /home
sr0 11:0 1 4.5G 0 rom
[root@localhost dev]#
发现并没有刚建立的分区sda4
3.使用命令partprobe刷新,再查看:
[root@localhost dev]# partprobe
[root@localhost dev]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 200M 0 part /boot
├─sda2 8:2 0 12.5G 0 part
│ ├─centos-root 253:0 0 10G 0 lvm /
│ ├─centos-swap 253:1 0 2G 0 lvm [SWAP]
│ └─centos-home 253:2 0 500M 0 lvm /home
└─sda4 8:4 0 7.3G 0 part
sr0 11:0 1 4.5G 0 rom
[root@localhost dev]#
发现新建立的分区sda4已经存在
4.创建物理卷pvcreate /dev/sda4(此步骤可省略)
[root@localhost dev]# pvcreate /dev/sda4
Physical volume "/dev/sda4" successfully created.
5.查看已有卷组 vgdisplay 得到卷组名为 centos
[root@localhost dev]# vgdisplay
--- Volume group ---
VG Name centos
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 12.49 GiB
PE Size 4.00 MiB
Total PE 3198
Alloc PE / Size 3197 / <12.49 GiB
Free PE / Size 1 / 4.00 MiB
VG UUID TxmA7W-IPcZ-4AJB-DQop-xeHJ-do9R-LdmVfv
[root@localhost dev]#
6.添加 sda4 到 centos 卷组中 vgextend centos /dev/sda4
当剩余空间不足时,执行该命令会报错:Couldn’t create temporary archive name,此时删掉其中无用文件、log日志后继续操作即可
[root@localhost dev]# vgextend centos /dev/sda4
Volume group "centos" successfully extended
[root@localhost dev]# vgdisplay
--- Volume group ---
VG Name centos
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 5
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 <19.80 GiB
PE Size 4.00 MiB
Total PE 5068
Alloc PE / Size 3197 / <12.49 GiB
Free PE / Size 1871 / <7.31 GiB
VG UUID TxmA7W-IPcZ-4AJB-DQop-xeHJ-do9R-LdmVfv
发现free的size已经扩大
7.查看需要被扩容的文件路径 lvdisplay 路径
[root@localhost dev]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 894M 0 894M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 11M 900M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/mapper/centos-root 10G 5.0G 5.1G 50% /
/dev/mapper/centos-home 497M 247M 251M 50% /home
/dev/sda1 197M 163M 35M 83% /boot
tmpfs 182M 40K 182M 1% /run/user/1000
tmpfs 182M 0 182M 0% /run/user/0
查看想扩容的/home的文件系统为/dev/mapper/centos-home
再使用lvdisplay 命令查看:
[root@localhost dev]# lvdisplay /home
"/home": Invalid path for Logical Volume.
[root@localhost dev]# lvdisplay /dev/mapper/centos-home
--- Logical volume ---
LV Path /dev/centos/home
LV Name home
VG Name centos
LV UUID yQDL14-Or7S-P1pJ-qVGC-5yEm-h4tR-EN8Hee
LV Write Access read/write
LV Creation host, time localhost, 2020-09-10 16:39:36 +0800
LV Status available
# open 1
LV Size 500.00 MiB
Current LE 125
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:2
获得逻辑卷路径为/dev/centos/home
8.把centos 卷组中的所有剩余容量添加到 /dev/centos/home 上
[root@localhost dev]# lvextend -l +100%FREE /dev/centos/home
Size of logical volume centos/home changed from 500.00 MiB (125 extents) to <7.80 GiB (1996 extents).
Logical volume centos/home successfully resized.
再用命令查看,发现空间没变:
[root@localhost dev]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 894M 0 894M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 11M 900M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/mapper/centos-root 10G 5.0G 5.1G 50% /
/dev/mapper/centos-home 497M 247M 251M 50% /home
/dev/sda1 197M 163M 35M 83% /boot
tmpfs 182M 40K 182M 1% /run/user/1000
tmpfs 182M 0 182M 0% /run/user/0
9.刷新写入 xfs_growfs /dev/centos/home
[root@localhost dev]# xfs_growfs /dev/centos/home
meta-data=/dev/mapper/centos-home isize=512 agcount=4, agsize=32000 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=128000, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=855, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 128000 to 2043904
再查看,发现已经空间扩大:
[root@localhost dev]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 894M 0 894M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 11M 900M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/mapper/centos-root 10G 5.0G 5.1G 50% /
/dev/mapper/centos-home 7.8G 249M 7.6G 4% /home
/dev/sda1 197M 163M 35M 83% /boot
tmpfs 182M 40K 182M 1% /run/user/1000
tmpfs 182M 0 182M 0% /run/user/0
到此扩容成功
②非lvm方式:
比如某一个挂载点type类型为part,则为非lvm
1.创建分区
[root@station Desktop]# fdisk /dev/sda
Command (m for help): p # 查看分区信息
Disk /dev/sda: 64.4 GB, 64424509440 bytes, 125829120 sectors
... 省略一部分
Device Boot Start End Blocks Id System
/dev/sda1 2048 62914559 31456256 83 Linux
Command (m for help): d # 删除分区,记住千万不要保存,不要使用 w 命令
命令(输入 m 获取帮助):d
分区号 (1,2,4,默认 4): #选择分区号
Selected partition 1
Partition 1 is deleted
Command (m for help): n # new 一个分区
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p # 选择主分区,e 代表扩展分区
Partition number (1-4, default 1): # 默认敲击回车
First sector (2048-125829119, default 2048): # 默认敲击回车
Last sector, +sectors or +size{K,M,G} (2048-125829119, default 125829119): +50G
Partition 1 of type Linux and of size 50 GiB is set
Command (m for help): w # 保存
2.后续步骤
创建好分区之后则和上面的lvm方式一样
2)加硬盘的扩容
(目标扩容:/home)
1.添加硬盘
关闭虚拟机,对虚拟机点击 设置-(硬件)添加-硬盘-下一步:
默认点击下一步:
默认点击下一步:
默认点击下一步:
点击完成:
之后确定,再启动虚拟机查看可以发现,如下:
未加入硬盘重启前:
[root@localhost ~]# fdisk -l
磁盘 /dev/sda:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000db225
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 411647 204800 83 Linux
/dev/sda2 411648 26617855 13103104 8e Linux LVM
/dev/sda4 26617856 41943039 7662592 83 Linux
磁盘 /dev/mapper/centos-root:17.2 GB, 17179869184 字节,33554432 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/mapper/centos-swap:2147 MB, 2147483648 字节,4194304 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/mapper/centos-home:1396 MB, 1396703232 字节,2727936 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
加入硬盘后:
[root@localhost ~]# fdisk -l
磁盘 /dev/sda:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000db225
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 411647 204800 83 Linux
/dev/sda2 411648 26617855 13103104 8e Linux LVM
/dev/sda4 26617856 41943039 7662592 83 Linux
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/mapper/centos-root:17.2 GB, 17179869184 字节,33554432 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/mapper/centos-swap:2147 MB, 2147483648 字节,4194304 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/mapper/centos-home:1396 MB, 1396703232 字节,2727936 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 200M 0 part /boot
├─sda2 8:2 0 12.5G 0 part
│ ├─centos-root 253:0 0 16G 0 lvm /
│ └─centos-swap 253:1 0 2G 0 lvm [SWAP]
└─sda4 8:4 0 7.3G 0 part
├─centos-root 253:0 0 16G 0 lvm /
└─centos-home 253:2 0 1.3G 0 lvm /home
sdb 8:16 0 20G 0 disk
sr0 11:0 1 4.5G 0 rom
2.开始分区:
[root@localhost ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0xd1aebac7 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):
将使用默认值 41943039
分区 1 已设置为 Linux 类型,大小设为 20 GiB
命令(输入 m 获取帮助):w
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 200M 0 part /boot
├─sda2 8:2 0 12.5G 0 part
│ ├─centos-root 253:0 0 16G 0 lvm /
│ └─centos-swap 253:1 0 2G 0 lvm [SWAP]
└─sda4 8:4 0 7.3G 0 part
├─centos-root 253:0 0 16G 0 lvm /
└─centos-home 253:2 0 1.3G 0 lvm /home
sdb 8:16 0 20G 0 disk
└─sdb1 8:17 0 20G 0 part
sr0 11:0 1 4.5G 0 rom
3.格式化文件系统:
mkfs -t xfs /dev/sdb1
[root@localhost ~]# mkfs -t xfs /dev/sdb1
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=1310656 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=5242624, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
4.后续步骤
之后按lvm方式从第6步进行即可
添加到卷组:
[root@localhost ~]# vgextend centos /dev/sdb1
WARNING: xfs signature detected on /dev/sdb1 at offset 0. Wipe it? [y/n]: y
Wiping xfs signature on /dev/sdb1.
Physical volume "/dev/sdb1" successfully created.
Volume group "centos" successfully extended
[root@localhost ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 894M 0 894M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 11M 900M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/mapper/centos-root 16G 5.0G 12G 32% /
/dev/mapper/centos-home 1.3G 253M 1.1G 20% /home
/dev/sda1 197M 163M 35M 83% /boot
tmpfs 182M 8.0K 182M 1% /run/user/42
tmpfs 182M 0 182M 0% /run/user/0
容量添加:
[root@localhost ~]# lvextend -l +100%FREE /dev/centos/home
Size of logical volume centos/home changed from 1.30 GiB (333 extents) to 21.79 GiB (5579 extents).
Logical volume centos/home successfully resized.
[root@localhost ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 894M 0 894M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 11M 900M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/mapper/centos-root 16G 5.0G 12G 32% /
/dev/mapper/centos-home 1.3G 253M 1.1G 20% /home
/dev/sda1 197M 163M 35M 83% /boot
tmpfs 182M 8.0K 182M 1% /run/user/42
tmpfs 182M 0 182M 0% /run/user/0
刷新写入:
[root@localhost ~]# xfs_growfs /dev/centos/home
meta-data=/dev/mapper/centos-home isize=512 agcount=4, agsize=85248 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=340992, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 340992 to 5712896
[root@localhost ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 894M 0 894M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 11M 900M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/mapper/centos-root 16G 5.0G 12G 32% /
/dev/mapper/centos-home 22G 256M 22G 2% /home
/dev/sda1 197M 163M 35M 83% /boot
tmpfs 182M 8.0K 182M 1% /run/user/42
tmpfs 182M 0 182M 0% /run/user/0
最后查看:
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 200M 0 part /boot
├─sda2 8:2 0 12.5G 0 part
│ ├─centos-root 253:0 0 16G 0 lvm /
│ └─centos-swap 253:1 0 2G 0 lvm [SWAP]
└─sda4 8:4 0 7.3G 0 part
├─centos-root 253:0 0 16G 0 lvm /
└─centos-home 253:2 0 21.8G 0 lvm /home
sdb 8:16 0 20G 0 disk
└─sdb1 8:17 0 20G 0 part
└─centos-home 253:2 0 21.8G 0 lvm /home
sr0 11:0 1 4.5G 0 rom
扩容成功
(2)方案二
此处扩容对象为/根目录
由于xfs类型的文件系统不能缩小空间,所以只能将/home先卸载,调整大小,再挂载,将剩余空间分配给/,因而扩容思路如下:
将/home文件夹备份,删除/home文件系统所在的逻辑卷,增大/文件系统所在的逻辑卷,增大/文件系统大小,最后新建/home目录,并恢复/home文件夹下的内容
1.查看到/home文件类型为xfs
[root@localhost dev]# cat /etc/fstab 或者用命令df -hT查看
#
# /etc/fstab
# Created by anaconda on Thu Sep 10 16:39:38 2020
#
# 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=aa6cfe93-c23d-41ee-ac77-8486290a0b05 /boot xfs defaults 0 0
/dev/mapper/centos-home /home xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
[root@localhost ~]# df -hT
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 894M 0 894M 0% /dev
tmpfs tmpfs 910M 0 910M 0% /dev/shm
tmpfs tmpfs 910M 11M 900M 2% /run
tmpfs tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 16G 5.0G 12G 32% /
/dev/mapper/centos-home xfs 22G 256M 22G 2% /home
/dev/sda1 xfs 197M 163M 35M 83% /boot
tmpfs tmpfs 182M 12K 182M 1% /run/user/42
tmpfs tmpfs 182M 0 182M 0% /run/user/0
2.备份/home分区内容:
tar cvf /home.tar /home,将其备份到/底下
[root@localhost dev]# tar cvf /home.tar /home
tar: 从成员名中删除开头的“/”
/home/
/home/tiki/
/home/tiki/.mozilla/
/home/tiki/.mozilla/extensions/
/home/tiki/.mozilla/plugins/
/home/tiki/.mozilla/firefox/
/home/tiki/.mozilla/firefox/y035iyvq.default-default/
/home/tiki/.mozilla/firefox/y035iyvq.default-default/.parentlock
/home/tiki/.mozilla/firefox/y035iyvq.default-default/compatibility.ini
/home/tiki/.mozilla/firefox/y035iyvq.default-default/permissions.sqlite
/home/tiki/.mozilla/firefox/y035iyvq.default-default/cookies.sqlite
/home/tiki/.mozilla/firefox/y035iyvq.default-default/extensions/
/home/tiki/.mozilla/firefox/y035iyvq.default-default/extensions/langpack-ga-IE@firefox.mozilla.org.xpi
.......省略一部分
查看是否备份:
[root@localhost dev]# cd /
[root@localhost /]# ll
总用量 225268
lrwxrwxrwx. 1 root root 7 9月 10 08:40 bin -> usr/bin
dr-xr-xr-x. 5 root root 4096 9月 10 16:59 boot
drwxr-xr-x. 20 root root 3300 10月 23 15:22 dev
drwxr-xr-x. 143 root root 8192 10月 23 14:42 etc
drwxr-xr-x. 3 root root 18 9月 10 08:49 home
-rw-r--r--. 1 root root 230645760 10月 23 15:56 home.tar
lrwxrwxrwx. 1 root root 7 9月 10 08:40 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 9月 10 08:40 lib64 -> usr/lib64
drwxr-xr-x. 2 root root 6 4月 11 2018 media
drwxr-xr-x. 2 root root 6 4月 11 2018 mnt
drwxr-xr-x. 3 root root 16 9月 10 08:44 opt
dr-xr-xr-x. 223 root root 0 10月 23 14:16 proc
dr-xr-x---. 15 root root 4096 10月 23 14:43 root
drwxr-xr-x. 43 root root 1240 10月 23 14:45 run
lrwxrwxrwx. 1 root root 8 9月 10 08:40 sbin -> usr/sbin
drwxr-xr-x. 2 root root 6 4月 11 2018 srv
dr-xr-xr-x. 13 root root 0 10月 23 14:16 sys
drwxrwxrwt. 17 root root 4096 10月 23 15:53 tmp
drwxr-xr-x. 14 root root 167 9月 11 09:19 usr
drwxr-xr-x. 21 root root 4096 9月 10 08:51 var
[root@localhost /]#
3.卸载/home
要先终止所有使用/home文件系统的进程,这里要注意不要在/home目录下执行下面的操作:$ sudo fuser -km /home
然后卸载:$ sudo umount /home
[root@localhost /]# sudo fuser -km /home
[root@localhost /]# sudo umount /home
[root@localhost /]# ll
总用量 225268
lrwxrwxrwx. 1 root root 7 9月 10 08:40 bin -> usr/bin
dr-xr-xr-x. 5 root root 4096 9月 10 16:59 boot
drwxr-xr-x. 20 root root 3300 10月 23 15:22 dev
drwxr-xr-x. 143 root root 8192 10月 23 14:42 etc
drwxr-xr-x. 2 root root 6 9月 10 16:39 home
-rw-r--r--. 1 root root 230645760 10月 23 15:56 home.tar
lrwxrwxrwx. 1 root root 7 9月 10 08:40 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 9月 10 08:40 lib64 -> usr/lib64
drwxr-xr-x. 2 root root 6 4月 11 2018 media
drwxr-xr-x. 2 root root 6 4月 11 2018 mnt
drwxr-xr-x. 3 root root 16 9月 10 08:44 opt
dr-xr-xr-x. 176 root root 0 10月 23 14:16 proc
dr-xr-x---. 15 root root 4096 10月 23 14:43 root
drwxr-xr-x. 43 root root 1240 10月 23 14:45 run
lrwxrwxrwx. 1 root root 8 9月 10 08:40 sbin -> usr/sbin
drwxr-xr-x. 2 root root 6 4月 11 2018 srv
dr-xr-xr-x. 13 root root 0 10月 23 14:16 sys
drwxrwxrwt. 16 root root 4096 10月 23 16:01 tmp
drwxr-xr-x. 14 root root 167 9月 11 09:19 usr
drwxr-xr-x. 21 root root 4096 9月 10 08:51 var
[root@localhost /]# cd /home/
[root@localhost home]# ll
总用量 0
[root@localhost home]#
可以看到home已经空了
4.删除/home所在的逻辑卷lv:
$ sudo lvremove /dev/mapper/centos-home
[root@localhost home]# sudo lvremove /dev/mapper/centos-home
Do you really want to remove active logical volume centos/home? [y/n]: y
Logical volume "home" successfully removed
[root@localhost home]#
5.扩大根目录所在的逻辑卷
扩大6G:$ sudo lvextend -L +6G /dev/mapper/centos-root
[root@localhost /]# sudo lvextend -L +6G /dev/mapper/centos-root
Size of logical volume centos/root changed from 10.00 GiB (2560 extents) to 16.00 GiB (4096 extents).
Logical volume centos/root successfully resized.
[root@localhost /]#
6.扩大/文件系统,刷新写入
$ sudo xfs_growfs /dev/mapper/centos-root
[root@localhost /]# sudo xfs_growfs /dev/mapper/centos-root
meta-data=/dev/mapper/centos-root isize=512 agcount=4, agsize=655360 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=2621440, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 2621440 to 4194304
[root@localhost /]#
7.重建/home文件系统所需要的逻辑卷:
由于总大小7.3G,刚才我们分出去6G,因此这里创建的逻辑卷大小为1.3G.
[root@localhost /]# sudo lvcreate -L 1.3G -n /dev/mapper/centos-home
Rounding up size to full physical extent 1.30 GiB
Logical volume "home" created.
[root@localhost /]#
8.创建文件系统:
sudo mkfs.xfs /dev/mapper/centos-home
[root@localhost /]# sudo mkfs.xfs /dev/mapper/centos-home
meta-data=/dev/mapper/centos-home isize=512 agcount=4, agsize=85248 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=340992, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@localhost /]#
9.将新建的文件系统挂载到/home目录下
$ sudo mount /dev/mapper/centos-home
10.恢复/home目录的内容:
sudo tar xvf /home.tar -C /
[root@localhost /]# sudo tar xvf /home.tar -C /
home/
home/tiki/
home/tiki/.mozilla/
home/tiki/.mozilla/extensions/
home/tiki/.mozilla/plugins/
home/tiki/.mozilla/firefox/
home/tiki/.mozilla/firefox/y035iyvq.default-default/
home/tiki/.mozilla/firefox/y035iyvq.default-default/.parentlock
.......省略一部分
home/tiki/桌面/
home/tiki/桌面/Install/
home/tiki/下载/
home/tiki/模板/
home/tiki/公共/
home/tiki/文档/
home/tiki/音乐/
home/tiki/图片/
home/tiki/视频/
home/tiki/.java/
home/tiki/.java/fonts/
home/tiki/.java/fonts/1.8.0_242/
home/tiki/.java/fonts/1.8.0_242/fcinfo-1-localhost.localdomain-RedHat-7.8.2003-zh.properties
home/tiki/.bash_history
home/tiki/.Xauthority
[root@localhost /]# cd /home/
[root@localhost home]# ll
总用量 4
drwx------. 16 tiki tiki 4096 10月 23 14:41 tiki
[root@localhost home]#
可以看到/home已经有内容恢复了
11.删除/路径下面的备份:
sudo rm -rf /home.tar
[root@localhost /]# sudo rm -rf /home.tar
[root@localhost /]# ll
总用量 28
lrwxrwxrwx. 1 root root 7 9月 10 08:40 bin -> usr/bin
dr-xr-xr-x. 5 root root 4096 9月 10 16:59 boot
drwxr-xr-x. 20 root root 3300 10月 23 16:13 dev
drwxr-xr-x. 143 root root 8192 10月 23 14:42 etc
drwxr-xr-x. 3 root root 18 9月 10 08:49 home
lrwxrwxrwx. 1 root root 7 9月 10 08:40 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 9月 10 08:40 lib64 -> usr/lib64
drwxr-xr-x. 2 root root 6 4月 11 2018 media
drwxr-xr-x. 2 root root 6 4月 11 2018 mnt
drwxr-xr-x. 3 root root 16 9月 10 08:44 opt
dr-xr-xr-x. 185 root root 0 10月 23 14:16 proc
dr-xr-x---. 15 root root 4096 10月 23 14:43 root
drwxr-xr-x. 43 root root 1240 10月 23 14:45 run
lrwxrwxrwx. 1 root root 8 9月 10 08:40 sbin -> usr/sbin
drwxr-xr-x. 2 root root 6 4月 11 2018 srv
dr-xr-xr-x. 13 root root 0 10月 23 14:16 sys
drwxrwxrwt. 16 root root 4096 10月 23 16:17 tmp
drwxr-xr-x. 14 root root 167 9月 11 09:19 usr
drwxr-xr-x. 21 root root 4096 9月 10 08:51 var
[root@localhost /]#
发现已经没有了备份文件
12.检验
[root@localhost /]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 894M 0 894M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 11M 900M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/mapper/centos-root 16G 5.0G 12G 32% /
/dev/sda1 197M 163M 35M 83% /boot
tmpfs 182M 0 182M 0% /run/user/0
tmpfs 182M 12K 182M 1% /run/user/42
/dev/mapper/centos-home 1.3G 253M 1.1G 20% /home
发现/空间增大,/home恢复,成功