磁盘与文件系统管理

文件 系统的简单操作

文件系统磁盘空间使用情况

df 选项 目录或文件名

df -ahiT... /opt

#选项
-a 显示所有文件包括进程文件proc等文件系统
-h 以人类更易读懂的单位显示
-i 将容量替换为inode数来显示
-T 显示文件系统的类型

目录的空间使用情况

du 选项 目录

du -hsa /home

#选项
-h 以人类更容易读懂的单位显示
-s 查看该目录的总使用量
-a 列出所有文件和目录的容量(默认只列出目录)

硬链接和符号链接

ln 选项 源目录/文件 目标目录/文件

#选项
-s 创建符号链接,默认硬链接
-f 若目标目录存在,则删除目标目录再链接

# 创建硬链接,使两个目录指向同一个inode
ln /home/sakura /etc/sakura 

# 创建符号链接,使目标目录指向源目录的inode
ln -s /home/sakura /etc/sakura

硬链接和符号链接

  • 硬链接

    1. 两目录指向同一个inode,只有两两个目录都被删除才会删除其内容
    2. 只能在同一文件系统中使用
  • 符号链接

    1. 类似于快捷方式
    2. 可跨文件系统

链接数量

新建目录的连接数是2:

  1. 目录自身的条目
    • 当创建目录时,文件系统会为这个新目录分配一个 inode。
    • 然后,在其父目录中创建一个条目(比如条目名为 new_dir),这个条目指向新目录的 inode。
    • 这是第1个链接。
  2. 该目录内部的 . 条目
    • 在每个目录内部,文件系统会自动创建两个特殊条目:. (当前目录) 和 .. (上级目录)。
    • . 条目是一个硬链接,它指向该目录自身的 inode。
    • 这是第2个链接。

在此之后每创建一个子目录,连接数就会加1:

  • 子目录的 ..目录链接到该目录

磁盘的分区,格式化,检验与挂载

查看磁盘分区情况

  1. lsblk 选项 目录列出磁盘及其文件系统
lsblk -dfimp /var

# 选项
-d 仅列出磁盘本身(默认会列出分区数据)
-f 列出分区的文件系统和uuid
-i 以Ascii码的形式输出
-m 显示该设备的rwx权限信息
-p 输出设备完整路径(父文件夹)

UUID 最主要的一个用途就是唯一地标识存储设备(分区)

  1. blkid列出设备的UUID和文件系统等
blkid 

# 输出
/dev/mmcblk1p1: LABEL="opi_root" UUID="376e86a4" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="aa53f03e-01"
/dev/zram0: UUID="2bf5f75f" TYPE="swap"
  1. parted 选项 完整设备名 指令列出分区表类型与分区信息
psrted /dev/ada print  # 列出分区表类型与分区信息

# 输出
Model: SD MSSD0 (sd/mmc)
Disk /dev/mmcblk1: 126GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End    Size   Type     File system  Flags
 1      21.0MB  124GB  124GB  primary  ext4

磁盘分区

gdisk/fdisk 完整设备名

gdisk /dev/sda
  1. gdisk用于GPT格式的分区表,?查看使用说明
  2. fdisk用于MBR格式的分区表,m查看使用说明

在没用保存并推出前,所有操作都为执行

partprobe使用分区探针更新分区信息

partprobe -s # 更新分区情况并输出结果(不使用s选项就不输出)

# 输出
/dev/zram1: loop partitions 1
/dev/mtdblock0: msdos partitions
/dev/mmcblk1: msdos partitions 1
/dev/zram0: loop partitions 1

格式化磁盘(创建文件系统)

mkfs创建文件系统

# 将 /dev/sdb1 分区格式化为 ext4 文件系统
sudo mkfs.ext4 /dev/sdb1

# 将 /dev/sdb2 分区格式化为 XFS 文件系统  
sudo mkfs.xfs /dev/sdb2

# 将 /dev/sdc1 分区格式化为 FAT32 文件系统(常用于U盘、ESP分区)
sudo mkfs.fat -F 32 /dev/sdc1

注意:格式化会销毁该分区上的所有数据!请务必确认设备名称正确。

这里仅列出最基本的指令,详细请自行搜索


接口