Linux 格式化 挂载 Gdisk

对磁盘进行格式化mkfs

创建文件系统  xfs ext4/2/3
mkfs -b  设定数据区块(block)占用空间大小,目前支持1024、2048、4096 bytes每个块。默认4K
mkfs -t  用来指定什么类型的文件系统,可以是ext4, xfs
mkfs -i  设定inode的大小,默认256字节
mkfs -N  设定inode数量,防止Inode数量不够导致磁盘不足
格式化整个磁盘
mkfs.xfs /dev/sdb		
格式化磁盘的某个分区
mkfs.xfs  /dev/sdb1
挂载mount
如果需要使用该磁盘的空间,需要准备一个空的目录作为挂载点,与该设备进行关联
mount  /dev/sdb   /xxx

1.磁盘的基本分区Gdisk(GPT) 大于2T parted

fdisk分区不支持给高于2TB的磁盘进行分区。
单块盘高于2TB,建议使用Gdisk进行分区。
使用gdisk进行磁盘分区
1.安装gdisk分区工具
yum install gdisk -y
2.创建一个新分区,500MB大小
gdisk /dev/sdc
n    创建新分区
默认   默认
+XXXg
 p  打印查看            w 保存分区
Do you want to proceed? (Y/N): y    确认OK;
 writing new GUID partition table (GPT) to /dev/sdc.The operation has completed successfully.
Disk label type: gpt
4.安装parted, 刷新内核立即生效,无需重启
yum -y install parted
partprobe /dev/sdc
使用mkfs进行格式化磁盘
mkfs.xfs  /dev/sdc
使用mount命令将某个目录挂载该分区
mkdir /data1
mount /dev/sdc /data1

2.磁盘挂载方式Mount

文件系统指定一个访问入口
mount
挂载,但重启将会失效。我们称为临时生效。
选项:
mount -t 指定文件系统。mount -t ext4 /dev/sdb2
mount -a 挂载/etc/fstab配置文件中的配置。mount -a
mount -o 指定挂载的参数(权限、功能、允许SUID)。
挂载/dev/sdb1至db1目录
mkdir /db
mount -t xfs /dev/sdb  /db/
永久挂载 /etc/fstab(写入信息至配置文件)
1.使用blkid命令获取各设备的UUID
blkid |grep "sdb"
/dev/sdb1: UUID="e271b5b2-b1ba-4b18-bde5-66e394fb02d9" TYPE="xfs"
2.使用UUID挂载磁盘sdb1分区至于db1, 测试挂载
mount UUID="e271b5b2-b1ba-4b18-bde5-66e394fb02d9" /db
3.写入/etc/fstab中,实现开机自动挂载
tail -1 /etc/fstab  
UUID=e271b5b2-b1ba-4b18-bde5-66e394fb02d9 /db xfs  defaults 0  0
/dev/sdb                                  /db xfs  defaults 0  0
4.加载fstab配置文件, 同时检测语法是否有错误
mount –a

实现通过/etc/rc.local挂载
/usr/bin/mount /dev/sdc1 /data

umount卸载
选项: -l 强制卸载
卸载目录方式
umount /db
卸载设备方式
umount /dev/sdb

tail -2 /etc/rc.local 
挂载 for oldboy,at 2030.6.1 by xiaoyang
/usr/bin/mount /dev/sdc1 /data

不建议放到rc.local,应用软件启动。
/etc/rc.local需要被授权执行权限
chmod +x /etc/rc.d/rc.local 授权

2)【网络/分布式文件】系统服务器端假死
卸载:
1)一般不能用 df -h,会夯住。
2)grep sd /proc/mounts 
/dev/sdc1 /data ext4 rw,seclabel,relatime,data=ordered 0 0
找到挂载点进行卸载。还可以用设备名卸载。
umount -l /data      挂载点
umount -l /dev/sdc1  设备名

配置文件编写格式

Linux 格式化 挂载 Gdisk

挂载参数 PS:sync命令 用来把buffer数据写到磁盘。

Linux 格式化 挂载 Gdisk

是否备份

Linux 格式化 挂载 Gdisk

是否检验扇区fsck

Linux 格式化 挂载 Gdisk

fsck,e2fsck针对ext4的检查工具
xfs的检查工具,fsck.xfs ===xfs_repair

配置自动挂载:
mount /dev/sdc1 /data
配置后检查
tail -1 /etc/fstab 
/dev/sdc1		 /data                   xfs   defaults       0 0
测试挂载:
mount -a  检查
mount: wrong fs type, bad option, bad superblock on /dev/sdc1,
       missing codepage or helper program, or other error

       In some cases useful info is found in syslog - try
       dmesg | tail or so.
   
fstab改坏了,修复	   
mount -o rw,remount /  C7可以省略了。
vim /etc/fstab修改

企业生产磁盘分区说明
手动分区
1)常规服务器分区
/boot 内核             1G
swap  虚拟分区       物理内存1.5倍,最高16G
/ 所有
2)数据服务器 (数据库,存储服务)
/boot 内核             1G
swap  虚拟分区       物理内存1.5倍,最高8-16G
/    200G-400G
/data 存放数据  所有 
3)大厂分区 (30T)
/boot 内核  1G
swap 虚拟分区    物理内存1.5倍,最高8-16G
剩余留着,谁用谁分

3.虚拟磁盘介绍SWAP(磁盘充当内存)

Swap分区在系统的物理内存不够时,将硬盘空间中的一部分空间释放出来,以供当前运行的程序使用。
注: 当物理内存不够时会随机kill占用内存的进程,从而产生oom(out of memroy),临时使用swap可以解决
内存不够,有配置swap又会出现什么情况?
1.会使用swap充当内容使用,防止系统出现oom故障
2.如果使用了swap,系统会变得特别的卡
创建分区,并格式化为swap分区。
fdisk  /dev/sdb      分1个G大小
mkswap /dev/sdb1      格式化为swap
查看当前swap分区大小,然后进行扩展和缩小
free -m
1.扩展swap分区大小
swapon /dev/sdb1 将该设备加入swap
free -m 检查swap的大小
swapon -a 代表激活所有的swap
2.关闭swap分区
swapoff /dev/sdb1  移除
free -m  查看当前swap分区大小
swapoff -a 代表关闭所有的swap
检查当前swap分区有哪些设备
swapon -s
如上操作都是临时的,如需永久生效,需要将配置添加到/etc/fstab

swap知识总结:
	1 SWAP是当物理内存不够时,临时将磁盘空间作为内存顶替使用。
	2 如果没有swap,物理内存不够,系统会启用保护机制,然后kill掉某个占用内存的程序。
	3 如果有swap,物理内存不够时,会使用swap作为内存,系统就会开始变得比较慢。

如果磁盘没有过多的分区可用,也可以通过文件增加SWAP空间,本质上还是磁盘
dd if=/dev/zero of=/opt/swap_file bs=1M count=500 
chmod 0600 /opt/swap_file 
mkswap -f /opt/swap_file  
swapon /opt/swap_file
free -m
swapon -s

PS: 如果希望swap开机自动挂载,将swap信息追加至/etc/fstab即可。
#/etc/fstab
/dev/sdb1  swap                     swap     defaults        0 0

swap知识总结:
	1 SWAP是当物理内存不够时,临时将磁盘空间作为内存顶替使用。
	2 如果没有swap,物理内存不够,系统会启用保护机制,然后kill掉某个占用内存的程序。
	3 如果有swap,物理内存不够时,会使用swap作为内存,系统就会开始变得比较慢。

补dd命令:	
dd 命令
if=/dev/zero       来源,/dev/zero生产数据,用来创建新文件。
of=/opt/swap_file  生成的文件
bs=1M              block size 
count=500          block数量

dd模拟一个分区:
dd if=/dev/zero of=/dev/sdd1 bs=1M count=500
mkfs.xfs /dev/sdd1
mount /dev/sdd1 /data
df -h
cd /data
touch a
/dev/loop0(循环文件接口))是一种伪设备,这种设备使得文件可以如同块设备一般被访问。

测试swap

14)测试swap分区【作用】
1.linux特性:
 1)多余内存自动用于buff/cache,物理内存不够用时候,释放,给回物理内存。
 2)物理内存耗尽,系统会启用保护机制,干掉占用内存较高的程序。
关闭虚拟内存
swapoff -a
free -m
使用dd命令消耗物理内存
dd if=/dev/zero of=/dev/null  bs=70M count=10000
已杀死
由于该进程非常的消耗内存,造成物理内存不够,系统会启用保护机制,干掉内存较高的程序
grep mem /var/log/message  发现存在oom
container kernel: Out of memory: Kill process 2193 (dd) score 699 or sacrifice child
------------------------------------------------------------
为了避免物理内存不够用时,强制杀死进程(使用swap硬盘空间来临时充当内存)
开启虚拟内存
swapon -a
free -m

继续测试:
dd if=/dev/zero of=/dev/null  bs=70M count=10000
发现swap开始被使用了。
swap一但被使用,就会发现系统会越来越慢。
PS:因为把磁盘空间模拟内存使用,所以就很慢。

企业案例:java环境,tomcat服务,内存充足但是占用swap

在工作中,特别是java服务器环境,当程序代码写的有问题时,就会发生内存泄漏,就可能会占用swap,
此时的解决方法有三种:
a.让开发查找程序泄露问题,这是解决问题的根本。
b.同时运维也可以临时增大一些swap大小(这个问题治标不治本,关键还是找到程序问题才行)。
c.优化内核参数,让系统尽量使用内存而不是swap(使用swap的系统会很慢)。
d.清空swap。

虚拟内存使用故障处理与优化

虚拟内存使用故障处理与优化
2.让系统优先使用物理内存而不是swap

1.配置让系统优先使用物理内存而不是swap
[root@oldboy ~] cat /proc/sys/vm/swappiness       <==默认值。30
[root@oldboy sysctl.d] tail -1 /etc/sysctl.conf    
vm.swappiness = 5
[root@oldboy sysctl.d] sysctl -p
vm.swappiness = 5
[root@oldboy sysctl.d] cat /proc/sys/vm/swappiness
5

编辑内核文件sysctl.conf,加入vm.swappiness = 5,配置过程如下。
[root@oldboy ~] tail -1 /etc/sysctl.conf         <==查看编辑后的内容。
vm.swappiness=5
[root@oldboy ~] sysctl -p                      <==价值内核参数配置生效。
vm.swappiness = 5 <== swappiness=0时,系统会最大限度使用物理内存,如果内存不足,扔会占用swap分区,swappiness=100时,系统会积极使用
swap分区,并且把内存上数据及时加载到swap里。CentOS7默认设置为30。
[root@oldboy ~] cat /proc/sys/vm/swappiness   <==通过proc来查看更改结果。
5

[root@oldboy ~] echo 5 >/proc/sys/vm/swappiness     <==也可以直接这样调整,然后将命令加载到rc.local文件里。

2.直接清空swap分区数据和缓存数据
[root@oldboy sysctl.d] cat /proc/sys/vm/drop_caches
0
[root@oldboy ~] sync     <==将缓冲区数据写入磁盘(强制将block数据写入磁盘,更新超级块)。
[root@oldboy ~]echo 1 > /proc/sys/vm/drop_caches    <==清空cache缓存区。
[root@oldboy ~]cat /proc/sys/vm/drop_caches
1
[root@oldboy ~] swapoff -a    <==关闭swap分区。
[root@oldboy ~] swapon -a     <==重启开启swap分区。

Linux内存知识

[root@mysql ~] free -m
            total       used       free     shared    buffers     cached
Mem:         12010       9433       2577          0          4         24
-/+ buffers/cache:       9404       2606
Swap:         4094        838       3256
[root@oldboy sysctl.d] free -m
              total        used        free      shared  buff/cache   available
Mem:           3931        3156         250         469         525         160
Swap:          2047          42        2005
下面先解释一下输出的内容:
Mem 行(第二行)是内存的使用情况。
Swap 行(第三行)是交换空间的使用情况。
total 列显示系统总的可用物理内存和交换空间大小。
used 已被使用物理内存和交换空间。
free 还有多少物理内存和交换空间可用。
shared 被共享使用的物理内存大小。
buff/cache 列显示被buffer和cache使用的物理内存大小。
available 可以被应用程序使用的物理内存大小。

真正可用内存:
buff/cache   available
       525         160
[root@oldboy sysctl.d] cat /proc/meminfo 
MemTotal:        4026136 kB
MemFree:          256076 kB
MemAvailable:     164232 kB
Buffers:               0 kB
Cached:           518884 kB
______________
此处的内存使用情况:
第一行的buffer和cached为物理内存分配出来,但是buffer和cached还没有使用的大小。
- buffers/cache 反应的是被程序实实在在吃掉的内存
+ buffers/cache 反应的是可以挪用的内存总数
第二行的-/+buffer/cache中的使用内存used为物理内存分配给buffer和cached的使用情况,free为真实的内存剩余大小。
总内存:memory=used+free=used1+free1=【buffers+cached+used1】+free
也就是说:真正剩余内存free1=free+buffers+cache。
内存中的buffers和cached为内存使用的机制。

Buffers和cached:
A buffer is something that has yet to be "written" to disk.
A cache is something that has been "read" from the disk and stored for later use.
Buffers(缓冲区)根据磁盘的读写设计的,为还没有写入硬盘,
cached(缓存)是把读取过的数据保存起来,为已被从硬盘中读取和存入硬盘以备使用。

free与available
在free命令输出中,有一个free列和available列。这二者到底有何区别?

free是真正尚未被使用的物理内存数量。
available是从应用程序的角度看到的可用内存数量。
Linux内核为了提升磁盘操作的性能,会消耗一部分内存去缓存磁盘数据,
就是我们介绍的buffer和cache。
所以对于内核来说,buffer和cache都属于已经被使用的内存。
当应用程序需要内存时,如果没有足够的free内存可以用,
内核就会从buffer和cache中回收内存来满足应用程序的请求。
所以从应用程序的角度来说,真正可用内存=free+buffer+cache。

奇偶校验:
计算机的是二进制存储。只有01
raid中对同一条带内字节进行异或运算。0 0 ,1 1 异或都为0,0 1,1 0 异或结果都为1,就是相同为0 不同为1 。最后得出的结果就是校验条带。
当某一硬盘损坏时,可以利用剩下的进行异或运算 ,从而得到正确的数据。前提是最多只能有一块硬盘坏,当然特殊阵列结构例外

磁盘相关的命令;
gdisk        gpt分区工具,常用于大于2T。
fdisk        mbr分区工具,小于2T。
parted       gpt分区工具,常用于大于2T,更复杂。
partprobe    通知内核生效。
mkfs         格式化(-t)
mount        挂载(-a,-t,-o)
umount       卸载
mkswap       格式化为swap
swapon       加载swap
swapoff      关闭swap
dd           生成一个模拟设备的文件。
free         查内存 -m
lsblk        查看分区及挂载信息
blkid        查看块设备信息。
sync         将数据从缓冲区同步到磁盘
xfs_repair   xfs修复工具
fsck,e2fsck  ext修复工具。
上一篇:8.4.1 使用Redis来缓存查找


下一篇:vue3.0入门(一)