磁盘管理体系之二

分区表:MBR和GPT

MBR:只能支持2T以内的硬盘;大于2T,只识别2T空间;且有主分区,扩展,逻辑分区;对应的命令fdisk/parted;
GPT:支持大容量的硬盘;主分区可以无限使用;一百多个主分区;对应的命令:parted/gdisk;
注意:parted的命令,都是时时生效的;比较危险;

fdisk和gdisk操作类似,只是针对的盘不一样,这里不作多描述;

 

 

 

 

下面介绍parted命令

案例:创建GPT分区,大小10MB
//查看
parted /dev/sda print
//进入交互模式操作:
parted /dev/sdc //这就进入磁盘了
(parted) print //查看信息
//创建分区表gpt格式,或者mklabel gpt一样,注意,mbr叫做msdos类型
(parted) mktable gpt
//创建分区10mb
(parted) mkpart primary 0 10
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel? i
//删除分区
(parted) rm 1
(parted) p
//退出编辑
q或quit

 

 

 

 

 

 

 

 

 

 

SWAP

swap:交换分区,内存不足时,临时充当内存,占用的磁盘空间;
案例:服务器运行java程序,突然占用大量内存,以至于占用swap空间了;如何解决?
第一,保证网站正常,增加swap空间;
第二,联合开发一起排查导致这样的原因;

创建SWAP:
1,创建指定大小的文件;比如1G;
2,把文件转化为swap;
3,激活这个swap,把它加入到Linux中;
4,记得配置永久挂载;

1,创建指定大小的文件
dd if=/dev/zero of=/tmp/1g bs=1M count=1024
[root@web01 ~]# ll -h /tmp/1g
[root@web01 ~]# file /tmp/1g
/tmp/1g: data

2,把文件转化为swap;类似于格式化
mkswap /tmp/1g
[root@web01 ~]# file /tmp/1g
/tmp/1g: Linux/i386 swap file (new style), version 1 (4K pages), size 262143 pages, no label, UUID=39974129-be6a-451f-99ef-1c2602130470

3,激活这个swap,把它加入到Linux中;
//查看内存信息
//top,free -h
[root@web01 ~]# free -h
[root@web01 ~]# swapon /tmp/1g
swapon: /tmp/1g: insecure permissions 0644, 0600 suggested.
[root@web01 ~]# free -h //可以看到,激活成功并已加入Linux;
//swapoff,卸载

4,永久挂载swap;
方案一:swapon /tmp/1g 写入到/etc/rc.local里;
方案二:写入到/etc/fstab:/tmp/1g swap swap defaults 0 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

企业分区方案

公有云;
物理机/虚拟机(私有云);

服务器存放的数据,不重要:
分区方案:
/根分区:所有剩余空间;
/boot/ 引导分区:存放引导文件,存放系统内核镜像;推荐1G即可,用得很少,200M就够了;
swap:公有云可以不配置,如果是java建议配一点;大小可以根据实际内存调整,实际内存>8G,swap可以配8G,实际内存<8G,可以实际内存*1.5(2倍)配置,最大别超过8G;

服务器存放的数据,重要:
分区方案:
/根分区:40G-200G(参考公有云服务器),主要安装一些软件,重要数据单独存放;
/boot/ 引导分区:存放引导文件,存放系统内核镜像;推荐1G即可,用得很少,200M就够了;
swap:公有云可以不配置,如果是java建议配一点;大小可以根据实际内存调整,实际内存>8G,swap可以配8G,实际内存<8G,可以实际内存*1.5(2倍)配置,最大别超过8G;
/data/:剩余所有空间;

不知道是否重要:
/boot/:这三块参照上述分区方案;
swap:这三块参照上述分区方案;
/根分区:这三块参照上述分区方案;
剩余空间不划分:未来谁使用谁划分;

 

 

 

 

 

 

 

 

 

 

 

 

磁盘空间不足故障案例

案例1:正常空间不足;
这种情况最简单,现像:df -h一看,某个磁盘分区使用率达到了100%,如何排查,如何处理?
模拟:创建1个大文件;
dd if=/dev/zero of=/var/log/nginx.log bs=1M count=2000
df -h //排查第1步,先整体看一下,磁盘哪里空间没了;
du -sh //详细查看目录所占空间
[root@web01 ~]# du -sh / //查看根所占空间,看不了其他的;
[root@web01 ~]# du -sh /* //看根下第一级目录所占的空间大小;
//找出一级目录,接着找二级目录,一层一层找,直到找到具体的大文件或目录;
//找出目录或文件后,确认是否可以删除;
解决:能删就删,不能删就只能加硬盘加空间了;


案例2:inode引起的;
提示:no space left on device
先用df -h,查看磁盘空间发现没有满;可以怀疑inode引起的;
原因:磁盘空间不足,block导致,或者inode导致;
排查:df -i 来查看inode使用情况;
如果发现inode快用完了,找出这个分区中,大目录(目录本身大小大于1MB,du -sh目录所占空间)就行;
找个目录模拟与分析:
[root@web01 ~]# mkdir -p /mclind/test-inode
[root@web01 ~]# cd /mclind/test-inode/
[root@web01 test-inode]# ll -d /mclind/test-inode/
// ls -l 查看目录大小表示目录下面1层,文件名字大小
// 目录占的磁盘空间:du -sh 查看 目录下面所有文件block大小之和;
解决:确认是否可以删除或处理;
模拟inode满了;创建小文件磁盘,比如,100k,变成分区,挂载使用;
dd if=/dev/zero of=/tmp/100k bs=1k count=100
mkfs.ext4 /tmp/100k //xfs不一定成功,磁盘太小的话,不会成功
mkdir -p /mclind/inode
mount /tmp/100k /mclind/inode
touch /mclind/inode/{1..10}
df -h
df -i
//这种情况不常见;


案例3:文件未彻底删除,磁盘空间不足;
前提:
条件1:删除文件,需要权限,假如有权限,可以删除,如果硬连接数为0,才是成功删除,使用rm命令;
条件2:文件调用数也为0,文件是否被使用中(命令,或服务在使用);

排查:如何知道硬连接数是否为0,一般rm后通过ls,find查看,找不到就是没了;
如何知道进程调用数是否为0, lsof,显示系统调用与使用了哪些文件(list open file),需要用yum安装lsof, lsof | grep 文件名

故障模拟:
现象:提示磁盘空间不足,no space ...
df -h ,查看提示磁盘满了;
继续排查:du -sh排查,这种查询,统计总大小,可能发现没有满;
可以怀疑可能是文件未彻底删除导致的;
模拟:dd创建文件
[root@web01 ~]# dd if=/dev/zero of=/var/log/nginx2.log bs=1M count=10000
tail -f /var/log/nginx2.log
rm -rf /var/log/nginx2.log
df -h
du -sh //查看发现空间占用并不是很大
接着就需要使用lsof
lsof | grep delete //在lsof中delete是一个标记,表示这个文件没有入口,就是硬连接为0,但是还有进程或服务在调用它;
lsof | grep nginx
结束这个服务,就自动释放了这个文件,建议重启服务;
ps aux | grep tail
kill tail_pid
再次用df -h查看,磁盘已恢复;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

磁盘其他补充:

文件系统:磁盘中文件的存放组织方式.
常见文件系统:
xfs:CentOS 7 默认的系统;
ext4:CentOS 6/ubuntu默认的文件系统;
ext3:CentOS 5 默认;

磁盘性能常用指标:
吞吐量:就是读写速度,
iops:每秒读写次数;
延迟:读写的时候操作延时;

磁盘总结:
磁盘的选型;
Raid级别;
磁盘分区,格式化,挂载,永久挂载;
swap创建;
企业分区规则;
磁盘故障案例分析:空间故障,inode/block;
文件系统;
磁盘性能指标;

posted @ 2022-12-18 17:20  mclind  阅读(84)  评论(0编辑  收藏  举报