Linux磁盘和文件系统管理

在Linux中,文件是如何存储的,磁盘分区的逻辑组成是如何实现的,怎么对磁盘进行分区、格式化、挂载?

  1. 文件是如何存储的 块组 超级块 块组描述符号
    文件系统先是分成了多个块组和超级块。每个块组分别包含了inode和data block,每个块组也包含了inode bitmap和block bitmap;每个块组还包括了块组描述符。
    超级块包括的信息: 卷标、挂载时间、UUID、魔数、文件系统特性、挂载的默认选项、文件系统状态、OS类型、Inode和Block的相关数量、大小、可用数量、 保留的空间等信息。使用tune2fs -l /dev/sda3来查看超级块的信息。
    GDT:记录了未使用的inodes数量,inode bitmap和datablock bitmap的位置,inode表的位置,空闲的block和inode数量。dumpe2fs /dev/sda3 | less 也可以使用-h参数

  2. 链接文件的两种,分别有什么特性
    硬链接:指向同一个inode的多个文件路径
    特性:目录不支持创建硬链接,不能跨分区创建硬链接,创建硬链接会增加inode引用计数。
    ln passwd.back passwd.back2

软链接:指向一个文件路径的另一个文件路径
一个正常的文件,其inode的指针指向的是datablock的位置,而软链接则是指向了另一个文件的路径。软链接在文件大小是它指向的文件路径的字节数。
ln -s passwd.back passwd.sylink

[root@localhost tmp]# ls -il
总用量 12
33554511 -rwx------. 1 root root 836 2月 29 09:50 ks-script-XVVd4f
33554501 -rw-r--r--. 2 root root 1099 3月 1 11:37 passwd.back
33554501 -rw-r--r--. 2 root root 1099 3月 1 11:37 passwd.back2
33578842 lrwxrwxrwx. 1 root root 11 3月 1 11:38 passwd.sylink -> passwd.back

  1. 分区格式化mke2fs
    mke2fs [OPTIONS] device
    -t {ext2|ext3|ext4}:指明要创建的文件系统类型
    mkfs.ext4 = mkfs -t ext4 = mke2fs -t ext4
    -b {1024|2048|4096}:指明文件系统的块大小;
    -L LABEL:指明卷标;
    -j:创建有日志功能的文件系统ext3;
    mke2fs -j = mke2fs -t ext3 = mkfs -t ext3 = mkfs.ext3
    -i #:bytes-per-inode,指明inode与字节的比率;即每多少字节创建一个Indode;
    默认情况下,每16K字节一个inode
    -N #:直接指明要给此文件系统创建的inode的数量;
    -m #:指定预留的空间,百分比;
    -O [^]FEATURE:以指定的特性创建目标文件系统;

[root@localhost tmp]# mke2fs -t ext3 -b 4096 -L lq_data -i 32768 -m 3 /dev/sda3
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=lq_data
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
655360 inodes, 5242880 blocks
157286 blocks (3.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=4294967296
160 block groups
32768 blocks per group, 32768 fragments per group
4096 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: 完成

  1. 掌握Fdisk分区
    请实验完成

  2. 元数据区存放了什么
    元数据区存储了:inode inode位图和块位图
    数据存储区则是磁盘块。
    inode存储了文件的权限和属性相关信息。可以使用 stat /etc/passwd来查看文件的元数据信息。

  3. 如何让内核识别新的分区 parx kpartx
    cat /proc/partitions
    当我们使用fdisk对一个磁盘进行了分区,并且使用mke2fs工具对分区进行了格式化以后,需要让内核识别我们的新分区。
    此时,可以使用cat /proc/partitions来看一下,内核有没有识别到这个分区。
    如果没有识别,让内核重读一下分区信息。

A. partx - tell the Linux kernel about the presence and numbering of on-disk partitions

-a Add the specified partitions, or read the disk and add all partitions.

     用法:   partx  -a /dev/sda

B. kpartx - Create device maps from partition tables
-a Add partition mappings
用法: kpartx -a /dev/sda

如果一次没有刷出来,请再刷一次。

  1. 创建交换分区并生效
    mkswap /dev/sda6
    swapon
    创建一个5G的交换分区

  2. blkid 定位或显示块设备的属性。
    [root@localhost ~]# blkid /dev/sda3
    /dev/sda3: LABEL="lq_data" UUID="f80f0e3d-9ccb-43a2-ac30-98722a8a6ea2" TYPE="ext3"

[root@localhost ~]# blkid -L lq_data
/dev/sda3

[root@localhost ~]# blkid -U f80f0e3d-9ccb-43a2-ac30-98722a8a6ea2
/dev/sda3

[root@localhost ~]# blkid -t TYPE=ext3
/dev/sda3: LABEL="lq_data" UUID="f80f0e3d-9ccb-43a2-ac30-98722a8a6ea2" TYPE="ext3

  1. e2label 查看和设置卷标,如果不跟卷标则是查看卷标,如果跟卷标,则表示设置新卷标。
    e2label device [LABEL]

[root@localhost ~]# e2label /dev/sda3
lq_data
[root@localhost ~]# e2label /dev/sda3 DATA
[root@localhost ~]# e2label /dev/sda3
DATA
[root@localhost ~]# blkid /dev/sda3
/dev/sda3: LABEL="DATA" UUID="f80f0e3d-9ccb-43a2-ac30-98722a8a6ea2" TYPE="ext3"

  1. tune2fs:在ext系列文件系统上调整文件系统的参数,其中作用最大的是-O和-o
    -l 查看超级块的内容
    -j 将ext2升级为ext3,无损升级
    -L 设置卷标
    -m 不格式化,调整预留的空间的百分比,默认为5%
    -O [^]feature 调整指定特性
    -o 调整默认挂载选项
    tune2fs -o acl /dev/sda5

[root@localhost ~]# mke2fs -t ext2 -L TEST -m 10 /dev/sda3
接下来,我们通过tune2fs来调整文件系统的属性,我先尝试在挂载状态下进行。

[root@localhost ~]# mount /dev/sda3 /mnt
A. 将文件系统类型升级成ext3
[root@localhost ~]# tune2fs -j /dev/sda3
tune2fs 1.42.9 (28-Dec-2013)
Creating journal inode: 完成
[root@localhost ~]# blkid /dev/sda3
/dev/sda3: LABEL="TEST" UUID="96361554-d8a3-43cb-860d-45ce26daaeff" SEC_TYPE="ext2" TYPE="ext3"

B. 设置卷标为Corun
[root@localhost ~]# tune2fs -L Corun /dev/sda3
tune2fs 1.42.9 (28-Dec-2013)
[root@localhost ~]# blkid /dev/sda3
/dev/sda3: LABEL="Corun" UUID="96361554-d8a3-43cb-860d-45ce26daaeff" SEC_TYPE="ext2" TYPE="ext3"

C. 更改预留的空间百分比为2%
[root@localhost ~]# tune2fs -m 2 /dev/sda3
tune2fs 1.42.9 (28-Dec-2013)
Setting reserved blocks percentage to 2% (104857 blocks)

  1. dumpe2fs: 显示ext系列文件系统的属性信息
    dumpe2fs /dev/sda5
    dumpe2fs -h /dev/sda5

  2. fsck和e2fsck

    ext系列文件系统的专用工具:
    e2fsck : check a Linux ext2/ext3/ext4 file system
    e2fsck [OPTIONS] device
    -y:对所有问题自动回答为yes;
    -f:即使文件系统处于clean状态,也要强制进行检测;

    fsck:check and repair a Linux file system
    -t fstype:指明文件系统类型;
    fsck -t ext4 = fsck.ext4
    -a:无须交互而自动修复所有错误;
    -r:交互式修复;

  3. 文件系统的挂载与卸载
    mount DEVICE DIR
    umount DEVICE|DIR

示例:
mount /dev/sda3 /mnt
umount /dev/sda3

南要注意的是:挂载点应该是一个空目录,推荐将挂载点放置在根所在的文件系统上。

上一篇:Centos7 ext3/4 xfs扩容根分区(非LVM)


下一篇:find工具 查找文件或目录