Linux 格式化 挂载 Gdisk
Posted 晨曦007
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 设备名
配置文件编写格式
挂载参数 PS:sync命令 用来把buffer数据写到磁盘。
是否备份
是否检验扇区fsck
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修复工具。
以上是关于Linux 格式化 挂载 Gdisk的主要内容,如果未能解决你的问题,请参考以下文章
Linux系统添加新硬盘,并分区设置启动自动挂载,图文教程!
Linux基础19 Gdisk, 挂载命令mount与配置文件, fstab文件的详细信息, Swap介绍与案例, 修改/etc/fstab错误重启系统, 修复(单用户模式登陆)