02.磁盘分区
面试题:
1.小于2TB的磁盘 使用fdisk分区 MBR
2.大于2TB的磁盘 使用parted分区 GPT
对小于2T的磁盘分区: fdisk
第一步: 添加一块新的硬盘
vmware: 右键--->设置-->添加-->硬盘--》下一步
物理机: 拿到新的硬盘-->直接插入到面板处即可 支持热插拔
云服务器: 阿里云 亚马逊云 在线磁盘扩容
第二步: 查看是否可以识别到第二块磁盘
[root@oldboy:~]# fdisk -l 重启生效
[root@oldboy:~]# reboot
[root@oldboy:~]# fdisk -l
Disk /dev/sdb: 500 GiB, 536870912000 bytes, 1048576000 sectors
Disk model: VMware Virtual S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
第三步: 磁盘分区 类似打隔断
[root@oldboy:~]# fdisk /dev/sdb
Command (m for help): m # 按m 显示菜单
Help:
d delete a partition # 删除分区
n add a new partition # 创建分区
p print the partition table # 打印分区
m print this menu # 显示菜单
w write table to disk and exit # 保存并退出
q quit without saving changes # 退出不保存
Command (m for help): n # 创建分区
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): # 创建主分区
Using default response p.
Partition number (1-4, default 1): # 分区的编号 sdb1
First sector (2048-1048575999, default 2048): # 开始的大小
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-1048575999, default 1048575999): +100G #分区大小
Command (m for help): p # 查看分区表
Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 209717247 209715200 100G 83 Linux
Command (m for help): n #分区
Partition type
p primary (1 primary, 0 extended, 3 free)
e extended (container for logical partitions)
Select (default p):
Using default response p.
Partition number (2-4, default 2): # 分区编号
First sector (63-1048575999, default 63):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (63-1048575999, default 1048575999): +100G # 大小
Created a new partition 2 of type 'Linux' and of size 100 GiB.
Command (m for help): d # 删除分区
Partition number (1-4, default 4): # 默认删除最后面的编号
划分扩展分区:
Command (m for help): n
Partition type
p primary (3 primary, 0 extended, 1 free)
e extended (container for logical partitions)
Select (default e):
Using default response e.
Selected partition 4
First sector (419432449-1048575999, default 419432449):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (419432449-1048575999, default 1048575999): # 直接回车给所有的空间
基于扩展分区划分逻辑分区:
Command (m for help): n
All primary partitions are in use.
Adding logical partition 5
First sector (419432512-1048575999, default 419432512):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (419432512-1048575999, default 1048575999): +100G # 第一个逻辑分区给100G
Created a new partition 5 of type 'Linux' and of size 100 GiB.
查看最后的分区结果:
Command (m for help): p
Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 209717247 209715200 100G 83 Linux
/dev/sdb2 63 209715263 209715201 100G 83 Linux
/dev/sdb3 209717248 419432448 209715201 100G 83 Linux
/dev/sdb4 419432449 1048575999 629143551 300G 5 Extended
/dev/sdb5 419432512 629147712 209715201 100G 83 Linux
/dev/sdb6 629147776 1048575999 419428224 200G 83 Linux
Command (m for help): w #保存并且推出
查看磁盘分区信息:
[root@oldboy:~]# fdisk -l
Disk /dev/sdb: 500 GiB, 536870912000 bytes, 1048576000 sectors
Disk model: VMware Virtual S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xfe9dc91f
Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 209717247 209715200 100G 83 Linux
/dev/sdb2 63 209715263 209715201 100G 83 Linux
/dev/sdb3 209717248 419432448 209715201 100G 83 Linux
/dev/sdb4 419432449 1048575999 629143551 300G 5 Extended
/dev/sdb5 419432512 629147712 209715201 100G 83 Linux
/dev/sdb6 629147776 1048575999 419428224 200G 83 Linux
第四步: 格式化 类似打扫卫生
[root@oldboy:~]# mkfs.xfs /dev/sdb1 # 格式化第一个分区
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=6553600 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1
data = bsize=4096 blocks=26214400, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=12800, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@oldboy:~]# mkfs.xfs /dev/sdb5 # 格式逻辑分区
meta-data=/dev/sdb5 isize=512 agcount=4, agsize=6553600 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1
data = bsize=4096 blocks=26214400, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=12800, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
第五步: 挂载使用磁盘
[root@oldboy:~]# mkdir /data/test01
[root@oldboy:~]# mkdir /data/test02
[root@oldboy:~]# mount /dev/sdb1 /data/test01
[root@oldboy:~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 451M 0 451M 0% /dev
tmpfs 467M 0 467M 0% /dev/shm
tmpfs 467M 6.8M 460M 2% /run
tmpfs 467M 0 467M 0% /sys/fs/cgroup
/dev/mapper/klas-root 47G 3.9G 44G 9% /
tmpfs 467M 0 467M 0% /tmp
/dev/sda1 1014M 169M 846M 17% /boot
tmpfs 94M 0 94M 0% /run/user/0
/dev/sdb1 100G 746M 100G 1% /data/test01 # 挂载成功
[root@oldboy:~]# cd /data/test01/
[root@oldboy:test01]# pwd
/data/test01
[root@oldboy:test01]# touch a.txt
[root@oldboy:test01]# ll
total 0
-rw-r--r-- 1 root root 0 Jul 23 10:00 a.txt
[root@oldboy:test01]# cd
[root@oldboy:~]# cd /data/test02/
[root@oldboy:test02]# touch b.txt
[root@oldboy:test02]# ll
total 0
-rw-r--r-- 1 root root 0 Jul 23 10:00 b.txt
卸载磁盘:
[root@oldboy:~]# umount /data/test01
[root@oldboy:~]# umount /data/test02
[root@oldboy:~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 451M 0 451M 0% /dev
tmpfs 467M 0 467M 0% /dev/shm
tmpfs 467M 6.8M 460M 2% /run
tmpfs 467M 0 467M 0% /sys/fs/cgroup
/dev/mapper/klas-root 47G 3.9G 44G 9% /
tmpfs 467M 0 467M 0% /tmp
/dev/sda1 1014M 169M 846M 17% /boot
tmpfs 94M 0 94M 0% /run/user/0
第六步: 写入开机自动挂载 /etc/fstab
[root@oldboy:~]# cat /etc/fstab
/dev/mapper/klas-root / xfs defaults 0 0
UUID=2b4ae922-aa11-4f08-b98a-e99355d21546 /boot xfs defaults 0 0
/dev/mapper/klas-swap none swap defaults 0 0
/dev/sdb1 /data/test01 xfs defaults 0 0
/dev/sdb5 /data/test02 xfs defaults 0 0
mount -a # 让/etc/fstab执行一遍,如果挂载了不提示,如果没有挂载则自动挂载
[root@oldboy:~]# mount -a
[root@oldboy:~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 451M 0 451M 0% /dev
tmpfs 467M 0 467M 0% /dev/shm
tmpfs 467M 6.8M 460M 2% /run
tmpfs 467M 0 467M 0% /sys/fs/cgroup
/dev/mapper/klas-root 47G 3.9G 44G 9% /
tmpfs 467M 0 467M 0% /tmp
/dev/sda1 1014M 169M 846M 17% /boot
tmpfs 94M 0 94M 0% /run/user/0
/dev/sdb1 100G 746M 100G 1% /data/test01
/dev/sdb5 100G 746M 100G 1% /data/test02
开机自动挂载: /etc/fstab
/etc/rc.local 实现开机自动挂载 需要授权源文件执行权限x
[root@oldboy:~]# cat /etc/rc.local
#!/bin/bash
touch /var/lock/subsys/local
mount /dev/sdb1 /data/test01
mount /dev/sdb5 /data/test02
03.企业中磁盘使用方式
1.插入磁盘
2.格式化磁盘
[root@oldboy:~]# mkfs.xfs -f /dev/sdb
meta-data=/dev/sdb isize=512 agcount=4, agsize=32768000 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1
data = bsize=4096 blocks=131072000, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=64000, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
3.挂载磁盘
[root@oldboy:~]# mount /dev/sdb /data
[root@oldboy:~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 451M 0 451M 0% /dev
tmpfs 467M 0 467M 0% /dev/shm
tmpfs 467M 6.7M 460M 2% /run
tmpfs 467M 0 467M 0% /sys/fs/cgroup
/dev/mapper/klas-root 47G 3.9G 44G 9% /
tmpfs 467M 0 467M 0% /tmp
/dev/sda1 1014M 169M 846M 17% /boot
tmpfs 94M 0 94M 0% /run/user/0
/dev/sdb 500G 3.6G 497G 1% /data
4.写入开机自动挂载 笔试题 列出每列的含义。
vim /etc/fstab
/dev/sdb /data xfs defaults 0 0
04.parted 分区
对大于2T的磁盘分区: 格式 GPT
第一步: 插入磁盘
第二步: 修改磁盘格式为GPT
[root@oldboy:~]# parted /dev/sdc
(parted) help # 显示菜单
help [COMMAND] print general help, or help on COMMAND
mklabel,mktable LABEL-TYPE # 修改磁盘格式
mkpart PART-TYPE [FS-TYPE] START END # 创建分区
print [devices|free|list,all|NUMBER] # 查看分区表
quit # 退出
rm NUMBER # 删除分区
(parted) mklabel # 修改磁盘格式
New disk label type? gpt # 修改为gpt格式
第三步: 进行分区
(parted) mkpart # 创建分区
Partition name? []? primary # 分区的名称自定义
File system type? [ext2]? xfs # 分区类型xfs
Start? 0 # 开始的大小
End? 300G # 结束大小
Warning: The resulting partition is not properly aligned for best performance: 34s % 2048s != 0s
Ignore/Cancel? I # I 忽略警告
(parted) mkpart
Partition name? []? primary
File system type? [ext2]? xfs
Start? 300G
End? 800G
(parted) print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdc: 3221GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 17.4kB 300GB 300GB xfs primary
2 300GB 800GB 500GB xfs primary
(parted) mkpart
Partition name? []? premary
File system type? [ext2]? xfs
Start? 800G
End? 1000G
(parted) print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdc: 3221GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 17.4kB 300GB 300GB xfs primary
2 300GB 800GB 500GB xfs primary
3 800GB 1000GB 200GB xfs premary
支持非交互式分区:
(parted) mkpart premary xfs 1000G 1500G
(parted) print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdc: 3221GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 17.4kB 300GB 300GB xfs primary
2 300GB 800GB 500GB xfs primary
3 800GB 1000GB 200GB xfs premary
4 1000GB 1500GB 500GB xfs premary
删除分区:
Number Start End Size File system Name Flags
1 17.4kB 300GB 300GB xfs primary
2 300GB 800GB 500GB xfs primary
3 800GB 1000GB 200GB xfs premary
4 1000GB 1500GB 500GB xfs premary
(parted) rm 4
或者不进入到parted中,在命令行直接分区
[root@oldboy:~]# parted /dev/sdc mkpart primary xfs 1000G 1500G
第四步: 格式化
[root@oldboy:~]# mkfs.xfs /dev/sdc1
第五步: 挂载
[root@oldboy:~]# mount /dev/sdc1 /mnt
[root@oldboy:~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 963M 0 963M 0% /dev
tmpfs 979M 0 979M 0% /dev/shm
tmpfs 979M 8.9M 970M 1% /run
tmpfs 979M 0 979M 0% /sys/fs/cgroup
/dev/mapper/klas-root 47G 3.9G 44G 9% /
tmpfs 979M 0 979M 0% /tmp
/dev/sda1 1014M 169M 846M 17% /boot
tmpfs 196M 0 196M 0% /run/user/0
/dev/sdc1 280G 2.0G 278G 1% /mnt
第六步: 开机自动挂载
vim /etc/fstab
/dev/sdc1 /data xfs defaults 0 0
05.企业磁盘使用方式
1.插入磁盘
2.格式化
[root@oldboy:~]# mkfs.xfs -f /dev/sdc
3.挂载
[root@oldboy:~]# mount /dev/sdc /mnt
[root@oldboy:~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 963M 0 963M 0% /dev
tmpfs 979M 0 979M 0% /dev/shm
tmpfs 979M 8.9M 970M 1% /run
tmpfs 979M 0 979M 0% /sys/fs/cgroup
/dev/mapper/klas-root 47G 3.9G 44G 9% /
tmpfs 979M 0 979M 0% /tmp
/dev/sda1 1014M 169M 846M 17% /boot
tmpfs 196M 0 196M 0% /run/user/0
/dev/sdc 3.0T 21G 3.0T 1% /mnt
4.写入开机自动挂载
vim /etc/fstab
/dev/sdc /mnt xfs defaults 0 0
partprobe 挂载和卸载后通知内核。
重点:
1.面试题
小于2T的使用fdisk分区
大于2T的使用parted分区
2.磁盘挂载流程(企业)
a.插入磁盘
b.格式化磁盘
c.挂载磁盘
d.写入开机自动挂载
06.磁盘相关案例
01.内存不够用到执行系统出现oom内存溢出
Linux系统如果内存跑满了,系统为了自保,会自动杀死占用内存最高的进程。导致业务故障。
什么情况下导致内存不够?
a.业务流量过高 增加内存
b.代码问题java 找开发解决
c.流量波动业务 增加swap解决 内部测试服务器
d.受攻击导致oom 防火墙软件
swap: 内存不够用时,swap临时充当内存使用。swap是磁盘的分区空间。 磁盘比内存慢。
创建swap分区:
第一种方式: 安装系统,磁盘分区 3个分区
/boot
swap
/
第二种方式: 进入系统后创建swap
第一步: 生成1G的文件
[root@oldboy:~]# dd if=/dev/zero of=/data/1g bs=1M count=1000
[root@oldboy:~]# ll -h /tmp/
total 979M
-rw-r--r-- 1 root root 979M Jul 23 10:53 1g
第二步: 格式化1g的文件为swap类型
[root@oldboy:~]# mkswap /data/1g
第三步: 挂载激活swap分区
[root@oldboy:~]# swapon /data/1g
查看swap的组成方式:
[root@oldboy:~]# swapon -s
Filename Type Size Used Priority
/dev/dm-1 partition 2138108 8460 -2
/data/1g file 1001560 0 -3
卸载swap:
[root@oldboy:~]# swapoff /data/1g
案例2.磁盘满导致无法写入内容
inode满的原因?大量的小文件
df -i # 查看inode
查看大量的小文件:
[root@oldboy:~]# cd oldboy/
[root@oldboy:oldboy]# touch {1..100000}.txt
[root@oldboy:~]# ll -h
total 3.8M
-rw-r--r-- 1 root root 78 Jul 22 09:24 ntp.log
drwxr-xr-x 2 root root 2.4M Jul 23 11:21 oldboy
[root@oldboy:~]# find / -type d -size +1M
/root/oldboy
block满 磁盘存储大小
[root@oldboy:~]# find / -size +200M
du -sh 查看整个目录大小
[root@oldboy:~]# du -sh /data
979M /data
[root@oldboy:~]# du -sh /etc/
25M /etc/
案例3.解决磁盘不够用得问题
需求: 第一块磁盘满,并且日志文件的位置不能发生变化
导致原因: 服务持续的追加内容到/var/log/test.log
1)增加一块磁盘
第一步: 添加一块磁盘
右键添加1T磁盘
第二步: 格式化磁盘
mkfs.xfs /dev/sdb
第三步: 挂载磁盘
mkdir /data
mount /dev/sdb /data
第四步: 开机自动启动
vim /etc/fstab
/dev/sdb /data xfs defaults 0 0
2)将/var/log/test.log 移动到/data/
mv /var/log/test.log /data
3)做软链接
ln -s /data/test.log /var/log/test.log
案例4.删除大文件,磁盘空间不释放
真正的删除: inode和block同时为0 并且没有被进程占用。
第一步: 生成10G的文件
[root@oldboy:~]# dd if=/dev/zero of=10g.txt bs=1M count=10000
[root@oldboy:~]# ll -h
total 9.8G
-rw-r--r-- 1 root root 9.8G Jul 23 11:37 10g.txt
[root@oldboy:~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 963M 0 963M 0% /dev
tmpfs 979M 0 979M 0% /dev/shm
tmpfs 979M 8.9M 970M 1% /run
tmpfs 979M 0 979M 0% /sys/fs/cgroup
/dev/mapper/klas-root 47G 15G 33G 32% / # 占用15G
第二步: 模拟进程占用
[root@oldboy:~]# tail 10g.txt
第三步: 删除10g的文件 到第二个窗口
[root@oldboy:~]# rm -f 10g.txt
第四步: 查看磁盘空间是否释放
[root@oldboy:~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 963M 0 963M 0% /dev
tmpfs 979M 0 979M 0% /dev/shm
tmpfs 979M 8.9M 970M 1% /run
tmpfs 979M 0 979M 0% /sys/fs/cgroup
/dev/mapper/klas-root 47G 15G 33G 32% / # 未释放
解决方法: 面试题 查看文件被哪个进程所占用 lsof
[root@oldboy:~]# lsof |grep 10g.txt
tail 1991 root 3r REG 253,0 10485760000 68979254 /root/10g.txt (deleted)
查找到后杀死进程:
[root@oldboy:~]# kill -9 1991
[root@oldboy:~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 963M 0 963M 0% /dev
tmpfs 979M 0 979M 0% /dev/shm
tmpfs 979M 8.9M 970M 1% /run
tmpfs 979M 0 979M 0% /sys/fs/cgroup
/dev/mapper/klas-root 47G 4.9G 43G 11% / # 磁盘已释放
知识点小结:
磁盘重点:
1.磁盘外观分类
2.磁盘接口类型
IED
SCSI
SATA 个人常用
SAS+SATA 企业混合使用 SAS接口比SATA速度快。
3.存储
SATA 存储 测试使用 容量较大 1T 2T 4T 6T 8T 10T。。。 10K/每分钟
SAS 企业标配,业务 容量小 300G 600G 900G /15K/每分钟
4.磁盘阵列
磁盘数量 存储大小 安全冗余 性能 使用业务场景
RADI0 RAID1 RAID5 RAID10
5.磁盘分区 面试题
大于2T使用 parted分区 GPT
小于2T使用fdisk分区 MBR
分区过程做笔记。
6.磁盘挂载流程
插入磁盘
格式化磁盘 mkfs.xfs
挂载磁盘 mount
卸载磁盘 umount
开机自动挂载/etc/fstab
7.磁盘相关案例
磁盘无法写入
inode df -i find / -type d -size +1M
block df -h find / -type f -size +200M
内存不够用临时使用swap充当内存
swap大小是内存的1-1.5倍,如果大于8G内存 swap只给8G即可。
swap: 不对外的,对内的使用swap
删除大文件磁盘空间不释放
lsof 查看被哪个进程所占用,找到后kill杀死
下次内容: 进程管理