磁盘管理
- 磁盘分区
- 磁盘分区 – fdiak / parted
- 挂载
- SWAP – 交换分区
- LVM – 逻辑卷
查看CPU:# lscpu
# cat /proc/cpuinfo
查看磁盘:# lsblk
查看内存:# free -m/h
# cat /proc/meminfo
‘
Linux里磁盘的命名方式
/dev/sda
sd–表示一种串口设备(sata,usb,scsi,sas)
/dev/hda
hd——表示一种并口设备(ide)
/dev/vda
同种设备命名的排序:
第一块设备/dev/sda
第二块设备 /dev/sdb ……
第一个设备的第一个分区/dev/sda1
第二个分区/dev/sda2 ……
磁盘分区
1.为什么要分区?
易于管理和使用,加速文件查找速度
数据安全
2.分区的类型?//磁盘标签
MBR 最大支持2TB以内的硬盘
主分区: 编号1-4,与扩展分区的和不能超过4个,可直接格式化使用
扩展分区:编号1-4,最多只能有一个,不能直接格式化使用
逻辑分区:在扩展分区上划分,编号从5开始, 可格式化使用
分区不是无限分的,对于串口设备,最多15个分区,1-4编号是主分区或者是扩展分区,5-15编号是逻辑分区(MSDOS分区表格式)
GPT 最多可分128个分区,没有主分区扩展分区之说
3.分区相关
1)分区fdisk -n -p -1 - -+1G -w
2)通知内核重读分区表partprobe
3)创建文件系统 或称为格式化mkfs.xxx /dev/sdb1
4)挂载使用 mkdir /sdb1 ; mount /dev/sdb1 /sdb1
4.分区的命令:
fdisk:
# fdisk /dev/sdb
# partprobe
# mkfs.xfs /dev/sdb1
# mount /dev/sdb1 /mnt/sdb1
#df -h
【parted:能够划分2T以上的硬盘,小于2T的也可以分】
如果设备名称被误删怎么办?
# rm -rf /dev/sdb1
# mount /dev/sdb1 /mnt/sdb1/
【mount: 特殊设备 /dev/sdb1 不存在】
# 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
├─cl-root 253:0 0 17G 0 lvm /
└─cl-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 10G 0 disk
└─sdb1 8:17 0 2G 0 part
sr0 11:0 1 4.1G 0 rom /run/media/root/Cen
# mknod /dev/sdb1 b 8 17 //创建设备文件 b:块设备 8 17 :主设备号,次设备号
# mount /dev/sdb1 /mnt/sdb1/
磁盘分区 – fdisk
# fdisk -l /dev/sdb 列出指定设备的分区表信息
磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
-------------------------------------------------
一、分区 [主分区]
# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0x2656627c 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):m
命令操作
d delete a partition //删除分区
l list known partition types //列出已知分区类型
m print this menu //打印菜单,打印帮助
n add a new partition //创建分区
p print the partition table //打印分区表
q quit without saving changes //不保存退出
t change a partition's system id //更改分区id
w write table to disk and exit //保存并退出
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free) //主分区
e extended //扩展分区
Select (default p): p
分区号 (1-4,默认 1):1
起始 扇区 (2048-20971519,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-20971519,默认为 20971519):+1G //指定分区大小
分区 1 已设置为 Linux 类型,大小设为 1 GiB
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x2656627c
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 2099199 1048576 83 Linux
命令(输入 m 获取帮助):n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): p
分区号 (2-4,默认 2):2
起始 扇区 (2099200-20971519,默认为 2099200):
将使用默认值 2099200
Last 扇区, +扇区 or +size{K,M,G} (2099200-20971519,默认为 20971519):+2G
分区 2 已设置为 Linux 类型,大小设为 2 GiB
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x2656627c
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 2099199 1048576 83 Linux
/dev/sdb2 2099200 6293503 2097152 83 Linux
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
二、通知内核重读分区表(el6)
查看分区文件是否存在
# ls /dev/sd
sda sda1 sda2 sdb sdb1 sdb2
如果不存在,通知内核重读分区表
# partx -a /dev/sdb
partx: /dev/sdb: error adding partitions 1-2
或 # partprobe
内核记录分区表的文件: # cat /proc/partitions
三、创建文件系统 make file system (格式化)
# mkfs.xfs /dev/sdb1 //命令后接分区
四、挂载使用
1.创建挂载点
# mkdir /mnt/sdb1
2.将分区挂载到本地目录
# mount /dev/sdb1 /mnt/sdb1
# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/cl-root 17G 3.5G 14G 21% /
devtmpfs 473M 0 473M 0% /dev
tmpfs 489M 144K 489M 1% /dev/shm
tmpfs 489M 7.0M 482M 2% /run
tmpfs 489M 0 489M 0% /sys/fs/cgroup
/dev/sda1 1014M 155M 860M 16% /boot
/dev/sr0 4.1G 4.1G 0 100% /mnt/test
tmpfs 98M 16K 98M 1% /run/user/0
/dev/sdb1 1014M 33M 982M 4% /mnt/sdb1
二、扩展分区 [逻辑分区]
# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x2656627c
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 2099199 1048576 83 Linux
/dev/sdb2 2099200 6293503 2097152 83 Linux
命令(输入 m 获取帮助):n
Partition type:
p primary (2 primary, 0 extended, 2 free)
e extended
Select (default p): e
分区号 (3,4,默认 3):3
起始 扇区 (6293504-20971519,默认为 6293504):
将使用默认值 6293504
Last 扇区, +扇区 or +size{K,M,G} (6293504-20971519,默认为 20971519):+3G
分区 3 已设置为 Extended 类型,大小设为 3 GiB
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x2656627c
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 2099199 1048576 83 Linux
/dev/sdb2 2099200 6293503 2097152 83 Linux
/dev/sdb3 6293504 12584959 3145728 5 Extended
命令(输入 m 获取帮助):n
Partition type:
p primary (2 primary, 1 extended, 1 free)
l logical (numbered from 5)
Select (default p): l
添加逻辑分区 5
起始 扇区 (6295552-12584959,默认为 6295552):
将使用默认值 6295552
Last 扇区, +扇区 or +size{K,M,G} (6295552-12584959,默认为 12584959):+1G
分区 5 已设置为 Linux 类型,大小设为 1 GiB
命令(输入 m 获取帮助):n
Partition type:
p primary (2 primary, 1 extended, 1 free)
l logical (numbered from 5)
Select (default p): l
添加逻辑分区 6
起始 扇区 (8394752-12584959,默认为 8394752):
将使用默认值 8394752
Last 扇区, +扇区 or +size{K,M,G} (8394752-12584959,默认为 12584959):+1G
分区 6 已设置为 Linux 类型,大小设为 1 GiB
命令(输入 m 获取帮助):P
磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x2656627c
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 2099199 1048576 83 Linux
/dev/sdb2 2099200 6293503 2097152 83 Linux
/dev/sdb3 6293504 12584959 3145728 5 Extended
/dev/sdb5 6295552 8392703 1048576 83 Linux
/dev/sdb6 8394752 10491903 1048576 83 Linux
命令(输入 m 获取帮助):W
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
# ll /dev/sd
sda sda1 sda2 sdb sdb1 sdb2 sdb3 sdb5 sdb6
磁盘分区 – parted
列出所有设备的分区表信息
# parted -l
分区-使用过程:
1.分区
2.通知内核重读分区表
3.格式化
4.挂载使用
parted命令使用:
语法:
parted [选项] 设备 命令 参数
选项:
-s 不交互
常用命令:
p,print 打印分区表
mklabel,mktable 创建磁盘标签,后面可接msdos或gpt
mkpart 创建新的分区,语法: mkpart 类型或名字 起始 结束
rm 删除分区,后接要删除的分区编号
rescue 恢复分区,对于误删的分区进行恢复,语法: rescue 起始 结束
*注意:创建磁盘标签将会丢失所有的数据
【在使用parted进行分区时,一定要创建磁盘标签】
1.分区
parted可以对msdos(MBR)或gpt类型的磁盘的进行分区
实验:将sdb分一个主分区,一个扩展分区,在扩展分区中分一个逻辑分区
msdos类型:
1).查看磁盘情况,可以看到没有任何分区
[root@clone1 ~]# parted /dev/sdb p
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 2147MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos #磁盘标签已经是msdos. 如果不是,需要更改
Disk Flags:
Number Start End Size Type File system Flags
2).分一个主分区,大小为500M
[root@clone1 ~]# parted -s /dev/sdb mkpart p 0 500M #-s 不交互
P.S: 对于MSDOS类型,此命令中的p表示primary
[root@clone1 ~]# parted /dev/sdb p
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 2147MB #从这里可以看到此磁盘最大位置
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 512B 500MB 500MB primary #可以看到已分好
3).剩下的空间分到扩展分区中
[root@clone1 rpms]# parted -s /dev/sdb mkpart e 500M 2147M
P.S: 此处的e表示extended
[root@clone1 rpms]# parted /dev/sdb p
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 2147MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 512B 500MB 500MB primary
2 500MB 2147MB 1647MB extended lba
4).在扩展分区里划分一个逻辑分区
# parted -s /dev/sdb mkpart l 500M 1000M
P.S: 此处的l表示logical
====================================================
mklabel gpt|msdos //会清空所有数据
p 打印分区表
mkpart 类型 起始位置 结束位置 创建分区
rm 分区编号 删除分区
挂载
挂载的目的:通过挂载点,得到访问设备的入口
1.挂载的命令
mount
# mount /dev/sdc1 /mnt/sdc1
2.挂载的选项
mount [-t vfstype] [-o option[,option]...] device dir
-t 指定文件系统类型 -o 指定挂载属性
-a :依照配置文件/etc/fstab的数据将所有未挂载的分区磁盘都挂载
镜像文件: iso9660
挂载属性:
ro 只读文件系统 read only
rw 可读写 read write
async 异步写入
sync 同步写入
auto/noauto 是否支持开机挂载
dev/nodev 是否支持设备文件
exec/noexec 是否允许分区上拥有可运行二进制文件
suid/nosuid 是否允许分区上含有suid/sgid的文件格式
user/nouser 是否允许分区让任何使用者运行mount
remount 重新挂载已挂载的文件系统
_netdev 如果连的上就开机挂载,如果连不上就不挂载
defaults
Use default options: rw, suid, dev, exec,
auto, nouser, and async.
[root@localhost ~]# mount -o ro /dev/sdc1 /mnt/sdc1 //设置为只读文件系统
[root@localhost ~]# cd /mnt/sdc1
[root@localhost sdc1]# touch a.txt
touch: 无法创建"a.txt": 只读文件系统
[root@localhost sdc1]# mount -o remount,rw /mnt/sdc1 //重新挂载修改属性为读写
[root@localhost sdc1]# touch a.txt
[root@localhost sdc1]# ls a.txt
a.txt
# vim /etc/fstab
第1列:可以写设备文件名也可以使用设备的uuid uuid是唯一,建议使用uuid
查看所有设备的uuid
# blkid
/dev/sda1: UUID="28632ebb-0670-41c3-82cb-642c35dc6232" TYPE="xfs"
/dev/sda2: UUID="Ac7k0N-2mx5-QIYu-1ToA-Qcqq-X5nN-bf3IKX" TYPE="LVM2_member"
/dev/mapper/cl-root: UUID="1979fc25-33fa-416e-864a-c35f30fd8a51" TYPE="xfs"
/dev/mapper/cl-swap: UUID="db0240f7-1a4e-4462-81fc-186f47abfb0d" TYPE="swap"
/dev/loop0: UUID="2016-12-05-13-55-45-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos"
[root@server ~]# blkid /dev/sda2
/dev/sda2: UUID="Ac7k0N-2mx5-QIYu-1ToA-Qcqq-X5nN-bf3IKX" TYPE="LVM2_member"
查看指定设备的uuid
# blkid /dev/sda1
/dev/sda1: UUID="28632ebb-0670-41c3-82cb-642c35dc6232" TYPE="xfs"
开机挂载
例:希望开机将/dev/sdb1挂载到/mnt/sdb1目录
两种方法:
1. fstab - 这种方法如果有错将导致系统启动失败
1).修改/etc/fstab,添加以下记录(不含绿色字):
/dev/sdb1 /mnt/sdb1 xfs defaults 0 0
设备名称 挂载点 文件系统类型 挂载属性 dump fsck
2).使用mount -a测试
2. rc.local - 这个文件是开机过程中执行的一个脚本,不会影响系统启动
1).修改/etc/rc.d/rc.local,添加挂载命令
# echo 'mount /dev/sdb1 /mnt/sdb1/' >> /etc/rc.d/rc.local
2).给此文件加上可执行权限
# chmod +x /etc/rc.d/rc.local
问题:如果不小心写/etc/fstab 永久挂载时,重启之后发现系统无法正常启动?
1、输入root的密码,然后回车进入操作系统
2、vim /etc/fstab //把自己写的挂载取消注释或者删除
3、reboot //重启
SWAP – 交换分区
制作交换分区
方法两种:
1.用分区实现
2.用文件实现
查看swap
# free -m
total used free shared buff/cache available
Mem: 7856 592 5282 1176 1981 5828
Swap: 14335 0 14335
# top
KiB Swap: 14680060 total, 14680060 free, 0 used. 5967972 avail Mem
# swapon -s
文件名 类型 大小 已用 权限
/dev/dm-1 partition 14680060 0 -1
# swapon -d
NAME TYPE SIZE USED PRIO
/dev/dm-1 partition 14G 0B -1
第一种方法:用分区实现
1.准备新分区
/dev/sdb2
2.格式化成swap分区
# mkswap /dev/sdb2
正在设置交换空间版本 1,大小 = 975868 KiB
无标签,UUID=0393e1a0-bf52-48d5-9cb7-2fe3dbf2c99a
3.激活swap分区
# swapon /dev/sdb2
4.查看swap分区
# swapon -s
文件名 类型 大小 已用 权限
/dev/dm-1 partition 2097148 0 -1
/dev/sdb2 partition 975868 0 -2
5.挂载
# vim /etc/fstab
/dev/sdb2 swap swap defaults 0 0
第二种方法:用文件实现
dd 复制文件,根据设置参数转换为文件命令
if: input file|device 从 file|device中读而不是标准输入。
of: output file|device 写到file|device里去而不是标准输出。
bs: blocksize 块的大小
count: 块的数量
/dev/zero 无限0资源设备
/dev/null 垃圾桶 黑洞设备文件
1.使用/dev/zero设备制作1G的/tmp/swap.txt文件
# dd if=/dev/zero of=/tmp/swap.txt bs=1M count=1024
记录了1024+0 的读入
记录了1024+0 的写出
1073741824字节(1.1 GB)已复制,2.0213 秒,531 MB/秒
# ll /tmp/swap.txt -h
-rw-r--r--. 1 root root 1.0G 7月 5 23:33 /tmp/swap.txt
2.格式化成swap分区
# mkswap /tmp/swap.txt
正在设置交换空间版本 1,大小 = 1048572 KiB
无标签,UUID=ca74fb34-8ba0-4ee8-b88e-53949c985c7f
3.激活swap
# swapon /tmp/swap.txt
swapon: /tmp/swap.txt:不安全的权限 0644,建议使用 0600。
4.查看swap分区
# swapon -d
NAME TYPE SIZE USED PRIO
/dev/sdb2 partition 953M 0B -1
/dev/dm-1 partition 2G 0B -2
/tmp/swap.txt file 1024M 0B -3
5.挂载
# vim /etc/fstab
/tmp/swap.txt swap swap defaults 0 0
---------------------------------
卸载swap
1.让swap无效
# swapoff /tmp/swap.txt
# swapoff /dev/sdb2
2.删除/etc/fstab配置文件内的设置
3.删除交换文件
# rm -rf /tmp/swap.txt
# swapoff -a //关闭swap交换分区
LVM – 逻辑卷
vm 逻辑卷管理
磁盘空间的动态划分和管理
lvm能够实现分区的动态的拉伸和回缩
lvm的创建过程其实是一个先整合,再划分的过程。
一、LVM的创建过程
1)添加硬盘或者创建分区,通知内核
2)创建物理卷 PV (pvcreate)
3)创建卷组 VG (vgcreate)
4)创建逻辑卷 LV (lvcreate)
5)创建文件系统 (mkfs.xfs)
6)挂载使用 (mount autofs /etc/fstab)
1)
# parted /dev/sdd mklabel gpt
# parted /dev/sdd mkpart primary 1 1G
# parted /dev/sdd mkpart primary 1G 2G
# parted /dev/sdd mkpart primary 2G 3G
# parted /dev/sdd mkpart primary 3G 4G
# ll /dev/sdd
sdd sdd1 sdd2 sdd3 sdd4
2)创建物理卷
# pvcreate /dev/sdd{1..4}
Physical volume "/dev/sdd1" successfully created.
Physical volume "/dev/sdd2" successfully created.
Physical volume "/dev/sdd3" successfully created.
Physical volume "/dev/sdd4" successfully created.
2.1)查看物理卷
# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 cl lvm2 a-- 19.00g 0
/dev/sdd1 lvm2 --- 953.00m 953.00m
/dev/sdd2 lvm2 --- 953.00m 953.00m
/dev/sdd3 lvm2 --- 954.00m 954.00m
/dev/sdd4 lvm2 --- 954.00m 954.00m
# pvscan
PV /dev/sda2 VG cl lvm2 [19.00 GiB / 0 free]
PV /dev/sdd3 lvm2 [954.00 MiB]
PV /dev/sdd2 lvm2 [953.00 MiB]
PV /dev/sdd4 lvm2 [954.00 MiB]
PV /dev/sdd1 lvm2 [953.00 MiB]
Total: 5 [22.72 GiB] / in use: 1 [19.00 GiB] / in no VG: 4 [3.72 GiB]
# pvdisplay
"/dev/sdd3" is a new physical volume of "954.00 MiB"
--- NEW Physical volume ---
PV Name /dev/sdd3
VG Name
PV Size 954.00 MiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID kRYrRB-0BZm-Z2h1-tQxu-kDUC-FvQF-4YSZ5L
...
3)创建卷组
语法:vgcreate [-s 大小] 卷组的名字 物理卷的设备路径
# vgcreate -s 8M vg0 /dev/sdd{1..4}
Volume group "vg0" successfully created
-s 指定PE大小
PE(物理扩展单元) 大小(默认是4M)
3.1)
# vgs
VG #PV #LV #SN Attr VSize VFree
cl 1 2 0 wz--n- 19.00g 0
vg0 4 0 0 wz--n- 3.72g 3.72g
# vgscan
Reading volume groups from cache.
Found volume group "vg0" using metadata type lvm2
Found volume group "cl" using metadata type lvm2
# vgdisplay
--- Volume group ---
VG Name vg0
System ID
Format lvm2
Metadata Areas 4
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 4
Act PV 4
VG Size 3.72 GiB
PE Size 8.00 MiB
Total PE 476
Alloc PE / Size 0 / 0
Free PE / Size 476 / 3.72 GiB
VG UUID PWOx9H-9eP0-vkdz-v31T-cHxO-C80x-4BAMfE
4)创建逻辑卷
# lvcreate -n lv0 -L 1500M vg0
Rounding up size to full physical extent 1.47 GiB
Logical volume "lv0" created.
-n 指定lv的名字
-L 指定lv的大小
vg0 取vg0卷组的空间做lv
# lvcreate -n lv0 -l 188 vg0
-l 指定使用了多少个PE // -l 100%FREE 指把所有卷组的空间给逻辑卷
LE 逻辑扩展单元
4.1)
#lvs
#lvscan
#lvdisplay
5)创建文件系统
# mkfs.xfs /dev/vg0/lv0
6)挂载
# mkdir /lv0
# mount /dev/vg0/lv0 /lv0/
# vim /etc/fstab
/dev/vg0/lv0 /lv0 xfs defaults 0 0
LVM – 逻辑卷管理(扩容和缩容)
xfs和ext4文件系统
扩容的区别
扩容文件系统的命令不一样
xfs 使用的命令是xfs_growfs
ext4 使用的命令是resize2fs
---------------------------------------
扩容:
lv扩容
在线扩容
第1种情况:卷组内有空闲空间,直接从卷组取空间
1)对逻辑卷扩容
# lvextend -L +500M /dev/vg0/lv0 +表示在原来的空间
大小上加上多少空间大小
Rounding size to boundary between physical extents: 504.00 MiB.
Size of logical volume vg0/lv0 changed from 1.47 GiB (188 extents) to 1.96 GiB (251 extents).
Logical volume vg0/lv0 successfully resized.
2)对文件系统扩容
# xfs_growfs /dev/vg0/lv0
【如果文件系统是ext4】
# resize2fs /dev/vg0/lv0
第2种情况:卷组内没有空间
1)创建新分区
# parted /dev/sdd mkpart primary 4G 5G
# ll /dev/sdd
sdd sdd1 sdd2 sdd3 sdd4 sdd5
2)创建物理卷
# pvcreate /dev/sdd5
Physical volume "/dev/sdd5" successfully created.
3)加入卷组 vg扩容
# vgextend vg0 /dev/sdd5
Volume group "vg0" successfully extended
4)对逻辑卷扩容
# lvextend -L 4500M /dev/vg0/lv0
Rounding size to boundary between physical extents: 4.40 GiB.
Size of logical volume vg0/lv0 changed from 1.96 GiB (251 extents) to 4.40 GiB (563 extents).
Logical volume vg0/lv0 successfully resized.
5)对文件系统扩容
# xfs_growfs /dev/vg0/lv0
【如果文件系统是ext4】
# resize2fs /dev/vg0/lv0
-----------------------------------------------
XFS不支持缩容
ext4支持缩容
缩容:
ext4缩容
lv缩容
注意:
1.风险大有可能造成数据的损坏
2.确保缩减后的空间大小依然能存储原来的所有数据
3.不要在线缩容
4.在缩减之前强制检查文件系统
现在要在创建一个逻辑卷lv1,lv1的大小要求为1G,卷组内没有空间,但逻辑卷lv0的空间过大,缩减lv0,给lv1
给lv0缩减
1)先卸载
# umount /lv0
2)强制检查文件系统
# e2fsck -f /dev/vg0/lv0
3)缩减文件系统
# resize2fs /dev/vg0/lv0 1800M
4)缩减逻辑卷
# lvreduce -L 1800M /dev/vg0/lv0
5)测试缩减逻辑卷后逻辑卷能否正常使用
# mount /dev/vg0/lv0 /lv0
# cd /lv0
# cat
lost+found/ test.txt
# cat test.txt
ext4
# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/cl-root 17G 4.3G 13G 26% /
devtmpfs 473M 0 473M 0% /dev
tmpfs 489M 84K 489M 1% /dev/shm
tmpfs 489M 7.1M 482M 2% /run
tmpfs 489M 0 489M 0% /sys/fs/cgroup
/dev/sda1 1014M 155M 860M 16% /boot
tmpfs 98M 16K 98M 1% /run/user/42
tmpfs 98M 0 98M 0% /run/user/0
/dev/mapper/vg0-lv0 1.7G 6.1M 1.6G 1% /lv0
扩容案例:
# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root xfs 17G 16G 1G 96% /
/dev/mapper/centos-home xfs 10G 1G 9G 10% /home
当发现根分区使用已超过96%,目前没有新的磁盘,但是发现 /home 目录多余空间,问怎么去给根分区扩容?
1、做备份, /home 目录做一个备份
# tar caf home.tar.gz /home
2、取消挂载,删除home逻辑卷
# umount /home
# lvremove /dev/centos/home
3、给root逻辑卷进行扩容
# vgdisplay //查看一下剩余多少PE块
# lvextend -l +2559 /dev/centos/root
# xfs_growfs /dev/centos/root //通过上面信息可得知,root逻辑卷的文件系统是xfs
4、把备份的home.tar.gz 里面的内容放到/home
# tar xf home.tar.gz
# mv home/* /home/
原创文章,作者:306829225,如若转载,请注明出处:https://blog.ytso.com/268077.html