day20-磁盘管理

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杀死

下次内容: 进程管理
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值