文件系统(File System — FS)

概念

文件系统是Linux内部用来管理磁盘上文件的一套系统,主要体现在文件的存取、查找功能(本身是一套软件,对磁盘上存放的文件进行管理)。

内核(Kernel)

内核是操作系统内部最核心的软件。

查看内核版本

uname -r

内核作用

  1. 对CPU进行调度管理
  2. 对内存进行分配管理
  3. 对进程进行管理
  4. 对文件系统进行管理
  5. 对其他硬件进行管理

内核中XFS文件系统存放地址

/usr/lib/modules/3.10.0-1160.el7.x86_64/kernel/fs/xfs

查看内核里的运行模块

lsmod

磁盘(Disk)

磁盘是数据存储的地方,用于数据持久化。常见的磁盘类型包括硬盘(固态硬盘和机械硬盘)、光盘、软盘等。

机械硬盘

  • 转速:5640转
  • 缓存:128MB
  • 接口:SATA
  • 磁道(Track):63个扇区
  • 柱面(Cylinder):不同盘片的相同磁道组成
  • 扇区(Sector):512个字节
  • 磁头(Head)

固态硬盘

  • 接口:M.2接口(NVMe协议)
  • 读速:5000-5999MB/S

磁盘性能指标

  • IOPS:每秒钟磁盘的读写次数
  • TPS:每秒钟事务处理量(读写次数)

查看磁盘的系统活动报告

sar -d 1 10

查看磁盘分区

lsblk
fdisk -l
parted -l

分区表类型

DOS分区表

  1. 主分区:安装系统的分区,也可以用来存放数据,编号1-4。
  2. 扩展分区:突破四个主分区的限制,最多一个,扩展分区占一个主分区的位置(编号1-4),不能存放数据。
  3. 逻辑分区:可以很多个,编号从5开始。

不同分区表

  1. DOS分区表:最多四个主分区。
  2. GPT分区表:支持更多分区。

格式化

格式化背后的操作:

  1. 删除数据
  2. 形成文件系统,对划分出来的块进行管理。

格式化命令

mkfs.xfs /dev/sdb1
  • xfs:文件系统名称(xfs,ext4)
  • /dev:专门用于存放设备文件的目录

挂载

mount /dev/sdb1 /software/

挂载是将格式化后的分区连接到Linux系统中,开始使用该分区。挂载过程相当于Windows给U盘分配盘符的过程,这样系统才能使用磁盘分区。

挂载点

挂载点是系统访问磁盘分区的入口。

分区示例

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

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

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

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

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

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

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

磁盘 /dev/sdc:536.9 GB, 536870912000 字节,1048576000 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x23bd4ca7

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdc1            2048   209717247   104857600   83  Linux
/dev/sdc2       209717248   314574847    52428800   83  Linux
/dev/sdc3       314574848  1048575999   367000576    5  Extended

命令(输入 m 获取帮助):n
Partition type:
   p   primary (2 primary, 1 extended, 1 free)
   l   logical (numbered from 5)
Select (default p): l
添加逻辑分区 5
起始 扇区 (314576896-1048575999,默认为 314576896): 
将使用默认值 314576896
Last 扇区, +扇区 or +size{K,M,G} (314576896-1048575999,默认为 1048575999):+20G           
分区 5 已设置为 Linux 类型,大小设为 20 GiB

命令(输入 m 获取帮助):N
Partition type:
   p   primary (2 primary, 1 extended, 1 free)
   l   logical (numbered from 5)
Select (default p): L
添加逻辑分区 6
起始 扇区 (356521984-1048575999,默认为 356521984):
将使用默认值 356521984
Last 扇区, +扇区 or +size{K,M,G} (356521984-1048575999,默认为 1048575999):
将使用默认值 1048575999
分区 6 已设置为 Linux 类型,大小设为 330 GiB

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

磁盘 /dev/sdc:536.9 GB, 536870912000 字节,1048576000 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x23bd4ca7

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdc1            2048   209717247   104857600   83  Linux
/dev/sdc2       209717248   314574847    52428800   83  Linux
/dev/sdc3       314574848  1048575999   367000576    5  Extended
/dev/sdc5       314576896   356519935    20971520   83  Linux
/dev/sdc6       356521984  1048575999   346027008   83  Linux

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

格式化并挂载(临时)

[root@kafka1 ~]# mkfs.xfs /dev/sdc6
meta-data=/dev/sdc6              isize=512    agcount=4, agsize=21626688 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=86506752, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=42239, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@kafka1 ~]# mkfs.ext4 /dev/sdc1
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
6553600 inodes, 26214400 blocks
1310720 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=2174746624
800 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, 7962624, 11239424, 20480000, 23887872

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

[root@kafka1 ~]# mkfs.ext4 /dev/sdc2
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
3276800 inodes, 13107200 blocks
655360 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=2162163712
400 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, 7962624, 11239424

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

[root@kafka1 ~]# mkdir /mail /data /movie /photo
[root@kafka1 ~]# mount /dev/sdc1/ /mail/
[root@kafka1 ~]# mount /dev/sdc2/ /data/
[root@kafka1 ~]# mount /dev/sdc5/ /movie/ 
[root@kafka1 ~]# mkfs.xfs /dev/sdc5
meta-data=/dev/sdc5              isize=512    agcount=4, agsize=1310720 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=5242880, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@kafka1 ~]# mount /dev/sdc5/ /movie/ 
[root@kafka1 ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   19G  0 part 
  ├─centos-root 253:0    0   17G  0 lvm  /
  └─centos-swap 253:1    0    2G  0 lvm  [SWAP]
sdb               8:16   0  200G  0 disk 
├─sdb1            8:17   0   50G  0 part /software
├─sdb2            8:18   0  100G  0 part 
├─sdb3            8:19   0   30G  0 part 
├─sdb4            8:20   0    1K  0 part 
├─sdb5            8:21   0    5G  0 part 
└─sdb6            8:22   0    5G  0 part 
sdc               8:32   0  500G  0 disk 
├─sdc1            8:33   0  100G  0 part /mail
├─sdc2            8:34   0   50G  0 part /data
├─sdc3            8:35   0    1K  0 part 
├─sdc5            8:37   0   20G  0 part /movie
└─sdc6            8:38   0  330G  0 part /photo
sr0              11:0    1  4.4G  0 rom  

自动挂载

[root@kafka1 ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Fri Dec 20 15:09:51 2024
#
# 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=0a02a12b-95ef-4ad6-80b9-3d318f5ba8f8 /boot                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
/dev/sdc1 /mail ext4 defaults 0 0
/dev/sdc2 /date ext4 defaults 0 0    (写入到配置文件)
/dev/sdc5 /movie xfs defaults 0 0
/dev/sdc6 /photo xfs defaults 0 0

其他命令

  • mount -a:基于/etc/fstab里面的内容来挂载。
  • mount:显示哪些挂载。
  • umount:解除挂载。
    • umount /dev/sdb1:通过路径。
    • umount /software:通过挂载点。
  • 如果解除不了:
    • lsof /software:查看哪些端口占用/software
    • kill -9 进程号:终止进程。
    • lsof -i :端口号:查看端口号信息。
    • lsof /date:查看文件的占用信息。
    • lsof -p 进程号:查看这个进程打开了哪些文件。

文件系统底层机制

  • xfs,ext3:单机文件系统。
  • nfs:网络文件系统,适合Linux机器间的共享。
  • Ceph文件系统:功能强大,性能卓越,高度可扩展的分布式文件系统,适用于大规模数据存储和高并发访问场景。

目录项(Dentry)

查找文件过程

  1. 用户输入cat ss.txt
  2. Shell解析命令,创建进程并确定当前工作目录。
  3. 进程查找当前工作目录的目录项,找到ss.txt对应的目录项,获取inode编号。
  4. 通过inode编号访问inode,检查权限并根据inode里的指针定位文件的数据块(block)。
  5. 系统从磁盘读取数据块内容到内存。
  6. cat程序将内容输出到标准输出。
  7. 操作完成后关闭文件,释放资源。

硬链接和软链接的区别

文件 = 目录项 + inode + block。

硬链接

  • 硬链接和源文件只是目录项不同,inode和block相同。
  • 删除源文件不会导致硬链接失效。
  • 硬链接认inode号。

软链接

  • 软链接和源文件的所有内容都不同(目录项、inode、block)。
  • 删除源文件会导致软链接失效。
  • 软链接只认文件名。

创建软链接和硬链接

[root@kafka1 software]# vim ss.txt(原文件)
[root@kafka1 software]# ll -i
总用量 4
68 -rw-r--r-- 1 root root 16 3月  15 19:09 ss.txt
[root@kafka1 software]# ln -s ss.txt ss(软链接)
[root@kafka1 software]# ll -i
总用量 4
67 lrwxrwxrwx 1 root root  6 3月  15 19:10 ss -> ss.txt
68 -rw-r--r-- 1 root root 16 3月  15 19:09 ss.txt
[root@kafka1 software]# ln ss.txt sd(硬链接)
[root@kafka1 software]# ll -i
总用量 8
68 -rw-r--r-- 2 root root 16 3月  15 19:09 sd
67 lrwxrwxrwx 1 root root  6 3月  15 19:10 ss -> ss.txt
68 -rw-r--r-- 2 root root 16 3月  15 19:09 ss.txt

查看磁盘信息

  • df -Th / blkid:查看已经挂载的分区。
  • fdisk -l / lsblk:查看有哪些分区,不能具体查看挂载的,不知道是否使用。

超过2T分区

  • fdisk:超过2T分不了区,要使用parted(支持8T)。

机器性能参数命令

  • CPUtop
  • 内存topfree(可以查看当前内存大小)、ipcs -m(查看共享内存)。
  • 网络IOnethogsiftopglancesdstat
  • 磁盘IO(数据传输):glancesdstatsariostat
    • sar -d 1 20:隔1秒看一次,看20次。
  • 文件大小ls -lhdu -h 文件夹du -sh
  • 磁盘空间df -hdf -Th:显示磁盘空间的使用情况的基础上还会显示文件类型)、glances

MBR(主引导记录)

MBR大小为512个字节,分为三个部分:

  1. 主引导扇区:446字节。
  2. 硬盘分区表:64字节。
  3. 分区结束标记:2字节。

MBR作用

  1. 用于系统启动引导,开机时BIOS加载其中的引导程序来启动操作系统。
  2. 作为硬盘分区管理的基础,其分区表记录硬盘分区信息,让操作系统能正确读写分区数据。

Superblock(超级块)

超级块记录文件系统的整体信息,包括inode和block的总量、使用量、剩余量,以及文件系统的格式。

查看文件系统信息

  • ext2/3/4文件系统
dumpe2fs /dev/sd3
  • xfs文件系统
xfs_info /dev/sdc1

LVM(逻辑卷管理)

LVM屏蔽了底层磁盘布局,便于动态调整磁盘容量。

LVM优势

  1. 空间利用率高。
  2. 可以在线扩展容量。
  3. 数据备份方便。
  4. 可以随意定义逻辑卷卷标。

LVM组件

  • PV(物理卷):整个硬盘或者使用fdisk建立的普通分区。
  • VG(卷组):一个或多个物理卷组合而成的整体。
  • LV(逻辑卷):从卷组分割出一份空间,用于建立文件系统。

LVM步骤

  1. 先加三个磁盘做操作准备为sddsdesdf
  2. 初始化物理卷:
pvcreate /dev/sdd
pvcreate /dev/sde
  1. 查看物理卷:
pvscan
  1. 创建逻辑卷组:
vgcreate mali_store /dev/sdd /dev/sde
  1. 创建逻辑卷:
lvcreate -L 380G -n mail mali_store
  1. 查看逻辑卷:
lvscan
  1. 格式化逻辑卷并创建文件系统:
mkfs.xfs /dev/mali_store/mail
  1. 挂载逻辑卷:
mount /dev/mali_store/mail /scmail/

永久挂载

将挂载信息写入配置文件/etc/fstab

/dev/mali_store/mail /scmail xfs defaults 0 0

扩容逻辑卷

  1. 添加物理卷到逻辑卷组:
vgextend mali_store /dev/sdf
  1. 查看逻辑卷组详细信息:
vgdisplay mali_store
  1. 扩展逻辑卷组:
lvextend -L +200G /dev/mali_store
  1. 扩展逻辑卷加载配置:
xfs_growfs /dev/mali_store/mail

快照功能

快照功能用于对某个时间点的数据进行存储,便于后续恢复。

服务器

厂商

  • 戴尔、三星、华为、浪潮、宝德、长城。

类型

  • 塔式服务器
  • 刀片式服务器

RAID(磁盘阵列)

硬RAID

  • 速度快,性能好,支持热插拔,需要RAID磁盘阵列卡。

软RAID

  • 使用mdadm软件仿真磁盘阵列,设备文件标识符是/dev/md0

RAID类型

  • RAID5:单校验值。
  • RAID6:双校验值。
  • RAID10:假设四块硬盘,先做RAID1(可以坏一块或一边坏一块),再做RAID0。

服务器配置RAID和LVM结合过程

  • 系统:RAID1 → /dev/md0 → PV → VG → LV。
  • 数据:RAID5 → /dev/md0 → PV → VG → LV。

NAS与SAN

NAS(网络附属存储)

  • 网络存储器,解决数据共享、数据一致性问题,集中管理数据。
  • 适用于小公司,价格相对便宜。
  • 架构:客户机 → 传统交换机 → NAS。

SAN(存储区域网络)

  • 网络存储架构,解决数据共享、数据一致性问题,集中管理数据。
  • 适用于大公司,价格高,性能好。
  • 架构:业务服务器 → 光纤交换机 → 磁盘阵列服务器。

Ceph分布式存储系统

Ceph是什么?

Ceph是一个开源的分布式存储系统,旨在提供高性能、高可靠性和可扩展的统一存储解决方案。

Ceph核心特性

  1. 去中心化架构。
  2. 统一存储接口(对象存储、块存储、文件存储)。
  3. 高扩展性与性能。
  4. 自动化管理。

Ceph应用场景

  1. 云计算与虚拟化。
  2. 大数据分析。
  3. 容灾与备份。
  4. 边缘计算与IoT。

Ceph与其他存储系统对比

存储系统

核心优势

局限性

Ceph

统一存储接口、去中心化、高扩展性

对CPU资源消耗较高

GlusterFS

依赖元数据服务器,扩展性受限

无对象存储接口

HDFS

适合大数据批处理

扩展复杂,不支持动态元数据管理

MooseFS

分层存储优化成本

社区活跃度较低

搭建简单的FTP服务器

  1. 安装vsftpd
yum install vsftpd -y
  1. 重启服务:
service vsftpd restart
  1. 新建用户并命名。
  2. 使用FTP图形化工具(如xftp)连接,或其他主机连接。
  3. 使用lftp连接:
yum install lftp -y
lftp -u wy,123456 192.168.206.130
  1. 进入后,在用户的家目录下操作。
  2. 命令格式:
    • 在FTP服务器上操作不需要加!
    • 在自己机器上操作需要在命令前加!
    • 命令与虚拟机一样,只是字符界面。
    • 上传文件
mput 文件路径
    • 下载文件
mget 文件路径

以上是关于Linux文件系统、磁盘管理、LVM、RAID、Ceph分布式存储系统以及FTP服务器的详细介绍和操作步骤。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值