第十二章、磁盘管理
1.查看磁盘空间使用量
1.1df命令
作用:
列出文件系统的磁盘空间占用情况
df,disk free,通过文件系统来快速获取空间大小的信息,当我们删除一个文件的时候,这个文件
不是马上就在文件系统当中消失了,而是暂时消失了,当所有程序都不用时,才会根据OS的规则释放掉已经删除的文件, df记录的是通过文件系统获取到的文件的大小,他比du强的地方就是能够看到已经删除的文件,而且计算大小的时候,把这一部分的空间也加上了,更精确了。
格式:
df -参数 目录或文件名
参数:
-a:列出所有的文件系统,包括系统特有的/proc等文件系统
-k:以KB的容量显示各文件系统
-m:以MB的容量显示各文件系统
-h:以人们较易阅读的GB,MB,KB等格式自行显示
-H:以M=1000K替代M=1024K的进位方式
-T:连同该分区的文件系统名称(例如ext3)也列出
-i:不用硬盘容量,而以inode的数量来显示
示例:
df -a
df -k
df -m
df -h
df -H
df -i
1.2du命令
作用:
du:显示磁盘空间使用量(统计目录或文件所占磁盘空间大小),在默认情况下,文件大小的单位
是KB。
du,disk usage,是通过搜索文件来计算每个文件的大小然后累加,du能看到的文件只是一些当前
存在的,没有被删除的。他计算的大小就是当前他认为存在的所有文件大小的累加和,当文件系统
也确定删除了该文件后,这时候du与df就一致了。
格式:
du -参数 文件或目录名
参数:
-a : 列出所有的文件与目录容量,因为默认仅统计目录下面的文件量而已;
-h : 以人们较易读的容量格式(G/M)显示;
-s : 列出总量,而不列出每个个别的目录占用了容量;
-S : 不包括子目录下的总计,与-s有点差别;
-k : 以KB列出容量显示;
-m : 以MB列出容量显示。
示例:
du -a
2.RAID
2.1 概念
当今CPU性能每年可提升30%-50%但硬盘仅提升7%。
硬盘在服务器中需要持续、频繁、大量的I/O操作,故障机率较大,则需要对硬盘进行技术改造,提升读写性能、可靠性。
1988年,加利福尼亚大学伯克利分校首次提出并定义了RAID技术概念。
原理:RAID(Redundant Array of Independent Disks)将多个硬盘设备组成一个大容量、安全更
好的磁盘阵列,并将数据切割成多个片段后分别存储到不同的物理硬盘上,利用分散读写技术来来
提升硬盘性能,同时也备份了多个副本到不同硬盘中,拥有了备份冗余功能。
2.2 常见的RAID组件方案
RAID0
原理:把至少2块硬盘通过硬件或软件方式串联,组成一个大的卷组,并将数据依次写入到各个硬盘
优点:数据同步传输,读取/写入分开,性能大大提升
缺点:若任意一块硬盘故障会导致整个系统的数据损坏,无备份冗余能力错误修复能力
总结:使用率100%,至少2块磁盘才能使用,优点是快,提升磁盘的读写速度,缺点是不安全
RIAD1
产生原因:若生产环境对硬盘的读写速度没有较大要求,但希望增加数据安全性时可使用RAID
原理:把至少2块硬盘绑定起来,写入数据时将数据同时也写入另一或多块硬盘中,
本质:多个硬盘作为镜像备份
优点:数据备份冗余安全性大大提升
缺点:硬盘利用率下降
总结:是镜像,使用两块磁盘,一式两份的方式,支持容错,冗余,数据安全不丢失,缺点是速度
不快,使用率50%,成本较大。
RAID5
产生原因:兼顾“读写速度”、“数据安全”、“成本”的一种折中方式
原理:需至少三块硬盘,将数据分块存储到不同硬盘中,硬盘中必须存储其它一个硬盘的parity(奇
偶校验信息)
优点:兼顾性能,通过“奇偶校验”替代“镜像备份”
缺点:硬盘数据安全性较低
总结:使用率(n-1)/n*容量,磁盘坏了会立即补上,数据会恢复
RAID10
本质:RAID1+RAID0 的组合
原理:至少需要4块硬盘,先制作两两的RAID1阵列,以保证安全性,在两两制作RAID0,以提高读
写速度
优点:兼具速度和安全性
缺点:成本较高
2.3 mdadm命令
作用:
管理系统中的RAID磁盘阵列
格式:
mdadm [模式] <RAID设备名> -参数 [成员设备名称]
参数:
-a :检测设备名称
-n :指定硬盘数量
-l :指定RAID级别
-C :创建RAID
-v :显示过程
-f :模拟设备损坏
-r :移除设备
-Q : 查看摘要
-D :查看详细信息
-S :停止RAID磁盘阵列
示例:
关机后添加4块硬盘,创建RAID10
分析:
-Cv:创建RAID 并显示过程
/dev/md0:新的RAID阵列名
-a yes:检测并自动创建RAID设备文件
-n 4:硬盘数量为4块
-l 10:RAID级别为RAID10
查看信息
mdadm -D /dev/md0
2.4 取消RAID
注意:实际生产环境中,若取消RAID10之前必须备份出其数据,否则已存在数据无法使用
[root@server ~]# umount /dev/md0
[root@server ~]# vim /etc/fstab # 删除开机挂载项,切记
[root@server ~]# mdadm -S /dev/md0 # 停止
mdadm: stopped /dev/md0
2.5 RAID 备份盘技术
产生原因:
在RAID10中若RAID1中的某个硬盘损坏,在修复完毕前恰巧另一块RAID1的硬盘也损坏,则数据就彻底丢失。
原理:
在RAID中添加一个大容量的备份盘来预防此类事故,某块硬盘故障,备份盘同步恢复,无须人工干预。
分析RAID10需要4块硬盘,备份盘需要1块硬盘,共5块硬盘。
3.管理逻辑卷
3.1工作原理
产生原因:
硬盘分区或部署为RAID后在修改分区大小时就非常不容易,此时用户随着实际的需求变化而动态调整硬盘分区大小时受到限制,无灵活性
LVM(Logical Volume Manager )允许用户对硬盘资源进行动态调整
认识Linux逻辑卷:
LVM是 Logical Volume Manager(逻辑卷管理)的简写,LVM将若干个磁盘或者磁盘分区连接为一个
整块的卷组,形成一个存储池。
通过LVM技术,屏蔽了磁盘分区的底层差异,管理员可以在卷组上任意创建逻辑卷,并进一步在逻
辑卷上创建文件系统
管理员通过LVM可以方便的调整存储卷组的大小,并且可以对磁盘存储按照组的方式进行命名、管
理和分配。
假设有三块磁盘/dev/sdb、/dev/sdc和/dev/sdd用来划分逻辑卷,LVM模型如图所示:
3.2LVM基本概念
PE(physical extent)物理区域:物理区域是物理卷中可用于分配的最小存储单元,物理区域的大小默认为4MB。物理区域大小一旦确定将不能更改,同一卷组中的所有物理卷的物理区域大小需要一致.
物理卷(physical volume):简称PV,物理卷可以是整个硬盘、硬盘分区或从逻辑上与磁盘分区
具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁
盘等)比较,却包含有与LVM相关的管理参数。
卷组(Volume Group):简称VG,可以看成单独的逻辑磁盘,建立在PV之上,一个卷组中至少
要包括一个PV,在卷组建立之后可以动态的添加PV到卷组中。卷组的名称可以自定义。
逻辑卷(logical volume):简称LV,相当于物理分区。逻辑卷建立在卷组之上,卷组中的未分配
空间可以用于建立新的逻辑卷,逻辑卷建立后可以动态的扩展或缩小空间。系统中的多个逻辑卷,
可以属于同一个卷组,也可以属于不同的多个卷组。
3.3部署逻辑卷
常用的LVM部署命令
示例:
恢复快照,在虚拟机中添加3块新硬盘,2块硬盘创建物理卷及卷组,划分出150MB空间的逻
辑卷并格式化挂载使用
首先创建物理卷,接着创建卷组/dev/VG1,然后查看信息
创建逻辑卷,查看信息
格式化
创建挂载目录
开机挂载
3.4 调整逻辑卷的大小
扩展卷组
[root@server ~]# pvcreate /dev/sdc
Physical volume "/dev/sdc" successfully created.
[root@server ~]# vgextend /dev/VG1 /dev/sdc
Volume group "VG1" successfully extended
[root@server ~]# vgdisplay /dev/VG1
逻辑卷的扩大与缩小
xfs文件系统类型的lvm的扩容
# 将lv1逻辑卷扩容到300MB
[root@server ~]# umount /dev/VG1/lv1
[root@server ~]# lvextend -L 300M /dev/VG1/lv1
Size of logical volume VG1/lv1 changed from 152.00 MiB (38 extents) to 300.00
MiB (75 extents).
Logical volume VG1/lv1 successfully resized.
[root@server ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 20G 0 disk
├─VG1-lv1 253:2 0 300M 0 lvm /LVM1
└─VG1-lv2 253:3 0 200M 0 lvm /LVM2
[root@server ~]# lvdisplay
# 注意:使用 -L +100M增加了100M,如果增加到400M,使用-L 400M
[root@server ~]# lvextend -L +100M /dev/VG1/lv1
Size of logical volume VG1/lv1 changed from 300.00 MiB (75 extents) to 400.00
MiB (100 extents).
Logical volume VG1/lv1 successfully resized.
[root@server ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 20G 0 disk
├─VG1-lv1 253:2 0 400M 0 lvm /LVM1
└─VG1-lv2 253:3 0 200M 0 lvm /LVM2
# 注意:此时文件系统没有扩容
[root@server ~]# df -h | grep lv1
/dev/mapper/VG1-lv1 147M 8.9M 138M 7% /LVM1
# 使用xfs_growfs文件系统扩容
[root@server ~]# xfs_growfs /dev/VG1/lv1
meta-data=/dev/mapper/VG1-lv1 isize=512 agcount=4, agsize=9728 blks= sectsz=512 attr=2, projid32bit=1= crc=1 finobt=1, sparse=1, rmapbt=0= reflink=1 bigtime=1 inobtcount=1
data = bsize=4096 blocks=38912, imaxpct=25= sunit=0 swidth=0 blks
naming = version 2 bsize=4096 ascii-ci=0, ftype=1
log = internal log size=4096 blocks=1368, version=2= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 38912 to 102400
[root@server ~]# df -h | grep lv1
/dev/map:per/VG1-lv1 395M 11M 384M 3% /LVM1
[root@server ~]# mount /dev/VG1/lv1 /LVM1
对lv2逻辑卷缩容到200MB
# 相对于扩容,对逻辑卷缩容有风险,则最好提前备份
[root@server ~]# umount /dev/VG1/lv2
[root@server ~]# lvreduce -L 200M /dev/VG1/lv2
New size (50 extents) matches existing size (50 extents).
[root@server ~]# mount /dev/VG1/lv2 /LVM2