第7章 Linux磁盘与文件管理系统

本文详细介绍了Linux文件系统的构成,包括磁盘组成、分区、文件系统特性(如inode和数据区块的管理)、与目录树的关系,以及日志式文件系统(如ext3和XFS)的特点。此外,还概述了基本的文件系统操作,如查看磁盘使用、格式化和挂载等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

7.1 认识Linux文件系统

    7.1.1 磁盘组成与分区的复习

        1、磁盘的组成部分

            1)圆形的碟片:记录数据

            2)机械手臂

            3)主轴马达

        

        2、碟片的物理组成

            1)扇区(Sector),最小的物理存储单位,512B/4KB

            2)柱面(Cylinder),扇区组成的一个圆

            3)磁盘分区表,分为MBR/GPT,GPT分区数量更多,容量可以超过2TB

        3、物理磁盘和虚拟磁盘

            物理磁盘的文件名:/dev/sd[a-p][1-128]

            虚拟磁盘的文件名:/dev/vd[a-p][1-128]

    7.1.2 文件系统特性

        一个可被挂载的数据为一个文件系统,而不是一个分区

        文件系统一开始就将inode和数据区块规划好了,除非重新格式化(或使用命令修改),否则inode与数据块固定后就不再变动

        系统格式化后会分为多个区块群组(block group),文件系统最前面有一个启动扇区,可以安装启动引导程序,而每个区块群组包含6个内容,如下:

        

image.png

    1)Superblock超级区块

        记录此文件系统的整体信息,包括inode与数据区块的总量、使用量、剩余量,以及文件系统的格式与相关信息

        一个文件系统只能有一个超级区块,除了第一个群组,后续群组不一定包括超级区块,就算有也只是备份

    2)文件系统描述:每个区块群组的开始与结束的区块

    3)区块对照表:管理区块状态,通过此表可快速找到空闲区块

    4)inode对照表:管理inode状态,通过此表可快速找到空闲inode

    5)inode Table(inode表):

        记录每个文件的属性,一个文件占用一个inode,同时记录每个文件的数据所在的区块号码,inode固定128B,新的ext4和xfs可设置256B

        系统读取文件都要先找到inode,判断权限和用户,确认是否可以读取内容

        inode记录区域号码的区域有12个直接,1个间接,1个双间接,1个三间接,使得一个inode可以记录的文件达到16G以上,表映射如下:

        inode记录的数据至少有

            a. 该文件的读写属性

            b. 该文件的拥有者与用户组

            c. 该文件的大小

            d. ctime/atime/mtime

    6)数据区块

        实际记录文件的内容,一个文件占据1-n个,区块大小有三种(1K, 2K, 4K)

        注意,一个区块最多放一个文件的数据,若文件小于区块,剩余容量不能被使用

7.1.4 与目录树的关系

    1)文件系统会分配一个inode与至少一块区域给该目录

    2)1个100K的文件需要1个inode,26个区块,因为还要1个区块记录区块号码

    3)inode不存文件名,文件名记录在目录的区块中,所以增删改文件名与目录的w有关

7.1.5 日志式文件系统(Journaling filesystem)

为了避免文件系统不一致所设计的文件系统,比如ext3和ext4,数据记录中发生问题,可以通过日志记录区块检测哪个文件发生问题,从而针对性修复

7.1.9 XFS文件系统简介

ext4文件系统支持度最广,但是格式化很慢,而XFS文件系统支持高容量磁盘与巨型文件,且恢复和创建速度也不错

7.2 文件系统的简单操作

df:列出文件系统的整体磁盘使用量

    -a:列出所有文件系统

    -h:以人们容易阅读的G,M,K格式显示

    -i:不用磁盘容量,而以inode的数量来显示

du:查看文件系统的磁盘使用量

    -a:列出所有文件与目录的容量

    -h:容易阅读

    -s:仅列出总量

ln:硬链接与符号链接

    -s:如果不加参数就是硬链接,加s就是符号链接

lsblk:列出系统上的所有磁盘列表

    -d:仅列出磁盘本身,不列出分区

    -f:同时列出磁盘内的文件系统名称和UUID

    -p:列出该设备的完整设备文件名

[tecs@host-69 ~]$ lsblk
NAME                MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sdb                   8:16   0 446.1G  0 disk
├─sdb1                8:17   0    10M  0 part
├─sdb2                8:18   0     1G  0 part /boot
├─sdb3                8:19   0    90G  0 part
│ ├─vg_sys-lv_root  253:0    0    20G  0 lvm  /
│ ├─vg_sys-lv_home  253:4    0    20G  0 lvm  /home
│ └─vg_sys-lv_var   253:5    0    50G  0 lvm  /var
├─sdb4                8:20   0    24G  0 part
│ ├─vg_data-lv_swap 253:1    0     4G  0 lvm  [SWAP]
│ └─vg_data-lv_nova 253:3    0    20G  0 lvm  /var/lib/placements
└─sdb5                8:21   0   100G  0 part
  └─vg_ceph-lv_ceph 253:2    0    99G  0 lvm

输出信息说明:

NAME                 :设备文件名,省略/dev             

MAJ:MIN            :内核识别时使用,分别是主要:次要设备代码

RM                      :是否为可卸设备

SIZE                    :容量

RO                      :是否为只读设备

TYPE                   :类型为磁盘(disk)、分区(part)、逻辑设备(lvm)、只读存储器(rom)

MOUNTPOINT   :挂载点

blkid:列出设备的UUID等参数

parted:列出磁盘分区表类型与分区信息

    parted device_name print

    可以列出分区表的格式,更好的判断磁盘分区的命令

[root@host-70 tecs]# parted /dev/sdy print
Model: AVAGO MR9361-8i (scsi)                # 磁盘的模块名称(厂商)
Disk /dev/sdy: 480GB                         # 磁盘总容量
Sector size (logical/physical): 512B/4096B   # 磁盘每的每个逻辑/物理扇区容量
Partition Table: gpt                         # 分区表的格式(mgr或gpt)
Disk Flags:

Number  Start   End     Size    File system  Name              Flags        # 下面是分区数据
 1      1049kB  11.5MB  10.5MB               bios_grub         bios_grub
 2      11.5MB  1085MB  1074MB  ext4         primary
 3      1085MB  97.7GB  96.7GB               primary           lvm
 4      97.7GB  124GB   25.8GB               primary           lvm
 5      124GB   231GB   107GB                Linux filesystem

gdisk/fdisk:磁盘分区

MBR分区用fdisk,GPT分区用gdisk,可以通过parted查看

分区完毕后使用partprobe -s更新linux内核的分区表信息

[root@host-192-168-177-8 ~]# gdisk /dev/sdb(为GPT分区加磁盘分区)

Command (? for help): p  --输入p回车,打印分区表, 如果输入?可以查看命令

Command (? for help): n  --输入n回车,增加一个分区

Partition number (5-128, default 5):  --回车

First sector (34-1169919966, default = 252811264) or {+-}size{KMGTP}:  --回车,起始扇区

Last sector (252811264-1169919966, default = 1169919966) or {+-}size{KMGTP}: +100G  --设置分区 dev/sdb5 为100G,终止扇区,如果直接回车就是全部扇区

Command (? for help): w  --输入w回车,w是保存,不保存按q

Do you want to proceed? (Y/N): Y  --输出Y回车

mkfs.xfs:磁盘格式化,创建XFS文件系统

    mkfs.xfs 设备名称(比如:/dev/sda5)

mkfs.ext4:磁盘格式化,创建ext4文件系统

    mkfs.ext4 设备名称(比如:/dev/sda5)

xfs_repair:检查/修复XFS文件系统

    只有xfs文件系统错乱才使用,修复时文件系统不能被挂载,后面接设备名称

     -f:后面的设备是个文件

    -n:单纯检查

    -d:用在单人维护模式下面,针对根目录进行检查和修复,很危险,不要随便使用

fsck.ext4:检查/修复ext4文件系统

    -f :强制检查

mount:挂载文件系统

    1)单一文件系统不应该被重复挂载在不同的挂载点(目录)中

    2)单一目录不应该重复挂载多个文件系统

    3)作为挂载点的目录,理论上要是空目录

mount [-t 文件系统] LABEL='' 挂载点

mount [-t 文件系统] UUID='' 挂载点

mount [-t 文件系统] 设备文件名 挂载点

    -a:依照配置文件/etc/fstab将所有未挂载的磁盘都挂载上来

    -l:显示Label名称

    -t:选中挂载的类型,xfs,ext3,ext4,一般系统会自动分析选中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值