【文件系统】硬盘分区-挂载-内核参数调优-VFS

磁盘

机械硬盘-便宜 - 慢-不耐摔
固态硬盘- 贵 -快 -抗震

性能:容量、磁头、速度、品牌、接口、平均寻道时间

接口分类:IDE、SCSI、SATA、SAS、光纤通道

机械硬盘的术语:磁头、磁道、柱面、扇区(512Byte)、圆盘
定位方式:CHS – 物理层(柱面磁头扇区)
LBA – 逻辑层(每个扇区一个编号,如开机启动流程的MBR扇区就是编号为1)

固态硬盘的术语:
SSD固态硬盘就是 – 把磁存储改为集成电路存储(一块PCB板,配件就是控制芯片、缓存芯片和用于存储数据的闪存芯片)

硬盘挂载

物理磁盘插拔
新增一块磁盘不需要关机!

windows的c、d盘都是一块磁盘分区后
类似于linux的sda1、sda2

[root@nfs ~]# fdisk -l

磁盘 /dev/sda:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000ee2e3

   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200    41943039    19921920   8e  Linux LVM

磁盘 /dev/mapper/centos-root:18.2 GB, 18249416704 字节,35643392 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


磁盘 /dev/mapper/centos-swap:2147 MB, 2147483648 字节,4194304 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节

[root@nfs ~]# partprobe 
Warning: 无法以读写方式打开 /dev/sr0 (只读文件系统)。/dev/sr0 已按照只读方式打开。

得重启识别到新增的硬盘sdb(物理磁盘挂载成功

接下来对其分区(MBR vs GPT)
MBR分区:最多4个分区,如果超过,就会将一个主分区变成一个扩展分区(有多个逻辑分区)

[root@nfs ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0x65f0e28f 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):m

命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): 
Using default response p
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+5G
分区 1 已设置为 Linux 类型,大小设为 5 GiB

命令(输入 m 获取帮助):p

磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x4a32e704

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    10487807     5242880   83  Linux
命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。

不同的分区 可以为 不同的文件系统
windows(NTFS)
linux(ext4 xfs(做数据库推荐) btrs(趋势))

若分区识别不到,可以partprobe去同步一下信息,让操作系统知道这个分区

格式化文件系统:

[root@nfs ~]# mkfs
mkfs         mkfs.cramfs  mkfs.ext3    mkfs.minix   
mkfs.btrfs   mkfs.ext2    mkfs.ext4    mkfs.xfs     
[root@nfs ~]# mkfs.ext4 /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
327680 inodes, 1310720 blocks
65536 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=1342177280
40 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736

Allocating group tables: 完成                            
正在写入inode表: 完成                            
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成 

[root@nfs ~]# 

检查是否为ext4文件系统?

[root@nfs ~]# blkid /dev/sdb1
/dev/sdb1: UUID="afe38de5-be5e-411a-b7b4-ec280a272542" TYPE="ext4"

接下来挂载
/mnt1 --> test-mnt1.txt
–>/dev/sdb1
所有的挂载理解为一个入口(会选择空文件夹作为挂载点)

[root@nfs /]# mount /dev/sdb1 /mnt1
[root@nfs /]# df -Th
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs                   tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs                   tmpfs     1.9G   12M  1.9G    1% /run
tmpfs                   tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        17G   14G  3.2G   82% /
/dev/sda1               xfs      1014M  151M  864M   15% /boot
tmpfs                   tmpfs     378M     0  378M    0% /run/user/0
/dev/sdb1               ext4      4.8G   20M  4.6G    1% /mnt1

命令行操作都是临时的,永久在/etc/fstab

#
# /etc/fstab
# Created by anaconda on Mon Feb 20 21:32:31 2023
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=c9c7031e-2846-4582-9de4-6b37469f4347 /boot                   xfs     defaults        0 0
#/dev/mapper/centos-swap swap                    swap    defaults        0 0
                               

六列:设备文件/uuid 挂载点 文件系统 挂载选项 要不要被dump备(0-不要) 要不要被fsck检查(0-不要)

#按照fstab文件里重新挂载
[root@nfs /]# mount -a

总结:物理挂载 – 分区 – 格式化文件系统 – 挂载 – 写入fstab

lost+found ext家族文件系统初始化都会有的一个文件夹,它是当文件系统异常的时候,提供一些片段数据来恢复。文件系统异常这下面才会有数据

MBR(Master Boot Record)主引导记录
0柱面0磁头1扇区
为主引导扇区
有三个部分:主引导程序grub446byte,硬盘分区表DPT64byte,分区结束标记2byte
有主引导程序grub2 – /boot里的文件系统的驱动 – 内核文件vmlinuz,initranmfs --systemd进程和kthread进程

GPT分区不受限制,1~128(windows系统),MBR分区只能对2T以下磁盘进行分区,对多4个分区
dos标签:mbr
gpt标签:gpt

命令(输入 m 获取帮助):g
Building a new GPT disklabel (GUID: F379619C-92FA-43C9-93A0-A7B5C6F5CE50)


命令(输入 m 获取帮助):n
分区号 (1-128,默认 1):
第一个扇区 (2048-41943006,默认 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-41943006,默认 41943006):+2G
已创建分区 1


命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@nfs multi-user.target.wants]# fdisk -l /dev/sdb
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.

磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:gpt
Disk identifier: F379619C-92FA-43C9-93A0-A7B5C6F5CE50


#         Start          End    Size  Type            Name
 1         2048      4196351      2G  Linux filesyste 

格式化

[root@nfs multi-user.target.wants]# mkfs.ext4 /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
131072 inodes, 524288 blocks
26214 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=536870912
16 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912

Allocating group tables: 完成                            
正在写入inode表: 完成                            
Creating journal (16384 blocks): 完成
Writing superblocks and filesystem accounting information: 完成

挂载

[root@nfs multi-user.target.wants]# mount /dev/sdb1 /mnt1
[root@nfs multi-user.target.wants]# df -Th
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs                   tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs                   tmpfs     1.9G   12M  1.9G    1% /run
tmpfs                   tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        17G   14G  3.2G   82% /
/dev/sda1               xfs      1014M  151M  864M   15% /boot
tmpfs                   tmpfs     378M     0  378M    0% /run/user/0
/dev/sdb1               ext4      2.0G  6.0M  1.8G    1% /mnt1
[root@nfs multi-user.target.wants]# 

fdisk vs parted都是分区命令,后者既可以交互式又可以命令式(写脚本姿势)

[root@nfs multi-user.target.wants]# umount /mnt1
[root@nfs multi-user.target.wants]# parted -s /dev/sdb mklabe gpt mkpart primary 0 100%
警告: The resulting partition is not properly aligned for best performance.

[root@nfs multi-user.target.wants]# fdisk -l /dev/sdb
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.

磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:gpt
Disk identifier: AA376946-5EE4-42FF-A7C5-8DE49EA8E8DB


#         Start          End    Size  Type            Name
 1           34     41943006     20G  Microsoft basic primary

[root@nfs multi-user.target.wants]# mkfs.ext4 /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
1310720 inodes, 5242871 blocks
262143 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=2153775104
160 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
	4096000

Allocating group tables: 完成                            
正在写入inode表: 完成                            
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成   

[root@nfs multi-user.target.wants]# mount /dev/sdb1 /mnt1

[root@nfs multi-user.target.wants]# df -Th
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs                   tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs                   tmpfs     1.9G   12M  1.9G    1% /run
tmpfs                   tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        17G   14G  3.2G   82% /
/dev/sda1               xfs      1014M  151M  864M   15% /boot
tmpfs                   tmpfs     378M     0  378M    0% /run/user/0
/dev/sdb1               ext4       20G   45M   19G    1% /mnt1
[root@nfs multi-user.target.wants]# 

swap分区:free -m查看,df -Th里没有
物理内存不足的时候,启动磁盘上的交换分区来做内存使用,不建议开启,慢。
性能监控命令 – 实际都是从/proc里收集的信息

[root@nfs ~]# cd /proc/sys/vm/
[root@nfs vm]# ls
admin_reserve_kbytes        lowmem_reserve_ratio       oom_dump_tasks
block_dump                  max_map_count              oom_kill_allocating_task
compact_memory              memory_failure_early_kill  overcommit_kbytes
dirty_background_bytes      memory_failure_recovery    overcommit_memory
dirty_background_ratio      min_free_kbytes            overcommit_ratio
dirty_bytes                 min_slab_ratio             page-cluster
dirty_expire_centisecs      min_unmapped_ratio         panic_on_oom
dirty_ratio                 mmap_min_addr              percpu_pagelist_fraction
dirty_writeback_centisecs   mmap_rnd_bits              stat_interval
drop_caches                 mmap_rnd_compat_bits       swappiness
extfrag_threshold           nr_hugepages               user_reserve_kbytes
hugepages_treat_as_movable  nr_hugepages_mempolicy     vfs_cache_pressure
hugetlb_shm_group           nr_overcommit_hugepages    zone_reclaim_mode
laptop_mode                 nr_pdflush_threads
legacy_va_layout            numa_zonelist_order

临时修改:改echo 0 >/proc/sys/vm/swappiness
**永久修改:**修改内核参数,在/etc/sysctl.conf
加入内容:vm.swappiness = 0 – (类似于“路径”,根据/proc,不能乱写)
生效:sysctl -p

上述只是修改什么时候转用,而不是直接禁用swap,实际交换分区或许还存在。

临时关闭:swapoff -a /swapon -a临时打开
永久禁用(关闭)交换分区:注释/etc/fstab里的关于swap的,卸载掉。

VFS – 虚拟文件系统(重要!!!

理解为中间层:为我们的用户程序屏蔽了底层文件系统的差异(xfs,ext家族…),给用户、应用程序一个统一的接口
不在磁盘中:在文件系统挂在之后,将文件系统的一些元数据加载到内存中,只存在于内存中

我们程序不直接和底层真实的复杂的文件系统打交道,只需要和VFS打交道。(VFS帮我去判断)

VFS描述文件系统使用的是超级块inode的方式

磁盘格式化之后分为两个区 – inode(存放文件元数据);block(存放真正的数据)

元数据:比如说文件名,文件权限,文件创建时间、block的位置指针、等等。区分文件里的内容。如何看:stat file

VFS主要定义了四种对象类型
超级块对象:super block
记录文件系统的总体信息
inode数量、block数量
使用了多少 还剩余多少
属于哪种文件系统 调用方式

如何看ext4文件系统的数:dumpe2fs /dev/sdb1
xfs – xfs_info /dev/sdb1(需要挂载)
blocks一般多于inodes
面试题:明明还有磁盘空间为什么不能创建文件了?inode用完了。

df -i也可以看inodes数

文件系统如何找到文件:
从根/开始找
目录项 :文件夹也是文件,只不过里面保存的都是要放在这个文件夹里面的文件对应的目录项

1.根据文件名通过目录项知道它的inode号
2.通过inode号找到innode table里的inode
3.通过inode里的block指针,找到对应的数据块

inode和block的管理
位图:
使用了–标注1,没有使用–标注0

mv移动文件时,inode不会变,只用变目录项(同一个文件系统移动 )

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

日 近 长 安 远

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值