Linux 文件系统管理

一、Linux文件系统类型

Linux 支持的文件系统有很多,包括 ext2, ext3, ext4, xfs, btrfs, reiserfs, jfs, vfat, swap(交换分区)等;
根据是否支持“journal”的功能:

  • 日志类型文件系统: ext3, ext4, xfs ...
  • 非日志类型文件系统:ext2, vfat

文件系统的组成部分:

  • 内核中的模块:ext4, xfs, vfat
  • 用户空间的管理工具:mkfs.ext4, mkfs.xfs, mkfs.vfat

VFS

所谓VFS就是Virtual File System虚拟文件系统,也称为虚拟文件系统开关(Virtual Filesystem Switch).
这是Linux文件系统对外的接口。任何要使用文件系统的程序都必须经由这层接口来使用它。
VFS是一个异构文件系统之上的软件粘合层(注:有时也把VFS称为可堆叠的文件系统(Stackable Filesystem),因为VFS可以无缝地使用多个不同类型的文件系统,就像把多个文件系统堆叠在一起一样,故而得名)。通过VFS,可以为访问文件系统的系统调用提供一个统一的抽象接口。

检测当前内核支持的文件系统类型
# cat /proc/filesystems
# lsmod # 列出内核模块

二、文件系统创建

在磁盘分区完毕之后,需要为分区格式化,将其格式化为需要的文件系统,才可以对分区进行读写操作。
1. mkfs

mkfs [options] [-t type] [fs-options] device [size]
  • mkfs -t FS_TYPE /dev/device
    -L "Label" #为该设备设置卷标
    # mkfs -t ext4 -L "MyLabel" /dev/sda3
  • mkfs.FS_TYPE /dev/device
    FS_TYPE 可以为 ext2, ext3, ext4, xfs, btrfs 等文件系统类型
    # mkfs.ext4 /dev/sda3

2. mke2fs
ext 系列专用文件系统管理工具
mke2fs - create an ext2/ext3/ext4 filesystem
# mke2fs [options] device

[-b block-size]  #块大小 {1024|2048|4096}        
[-i bytes-per-inode]  # 为数据空间中每多少个字节创建一个inode;此大小不应该小于block的大小
[-N number-of-inodes] #为数据空间创建个多少个inode   
[-m reserved-blocks-percentage] #为管理人员预留的空间占据的百分比;默认 5%
[-L volume-label] #标签
[-O feature[,...]] #启用指定特性    -O ^FEATURE:关闭指定特性
[-t fs-type] #文件系统类型 {ext2|ext3|ext4}

3. mkswap
建立 swap 分区,前提:调整其分区的ID为82。
# mkswap [options] device [size]

4. blkid
块设备属性查看

blkid -L <label> | -U <uuid>

5. e2label
管理 ext 系列文件系统的标签
# e2label device [ new-label ]

6. tune2fs
重新设定和调整 ext 系列文件系统可调整参数的值
基本参数和 mke2fs 类似,值得关注的是

[-o [^]mount_options[,...]] # 调整文件系统的默认挂载选项

7. dumpe2fs
打印当前设备上的文件系统的超级块和块设备信息

dumpe2fs [-bfhixV] [-o superblock=<num>] [-o blocksize=<num>] device

三、文件系统检测

1. fsck
检查和修复文件系统

fsck [-lrsAVRTMNP] [-C [fd]] [-t fstype] [filesystem...]  [--] [fs-specific-options]
-a # 自动修复错误
-r # 交互式询问修复

等价于:# fsck.FS_TYPE

2. e2fsck
检查ext系列文件系统
# e2fsck [options] device

  • -y # 非交互式,自动回答 yes
  • -f # 强制修复
  • -p # 自动修复

四、文件系统挂载与卸载

  • 将额外文件系统与根文件系统某现存的目录建立起关联关系,进而使得此目录做为其它文件访问入口的行为称之为挂载;
  • 解除此关联关系的过程称之为卸载;
  • 注意:挂载点下原有文件在挂载完成后会被临时隐藏

1. 挂载

  • mount 挂载命令
    查看文件显示当前系统已挂载的所有设备 # /etc/mtab
    查看内核追踪到的已挂载的所有设备:# cat /proc/mounts
mount [-fnrsvw] [-t vfstype] [-o options] device dir
 -a, --all    mount all filesystems mentioned in fstab # 挂载所有在 /etc/fstab 中定义的文件系统
 -t, --types <list>      limit the set of filesystem types # 指定要挂在设备上的文件系统,必须与文件系统格式化的类型一致
 -r, --read-only         mount the filesystem read-only (same as -o ro) # 只读挂载
 -w, --rw, --read-write  mount the filesystem read-write (default) # 读写挂载
 -n, --no-mtab           don’t write to /etc/mtab # 不写 mtab 文件
 -l, --show-labels       lists all mounts with LABELs # 列出挂载信息时带上文件系统标签
 -L, --label <label>     synonym for LABEL=<label> # 以卷标指定挂载设备
 -U, --uuid <uuid>       synonym for UUID=<uuid> # 以UUID指定要挂载的设备
 -B, --bind              mount a subtree somewhere else (same as -o bind) # 绑定目录到另一个目录上
            -o options:(挂载文件系统的选项)
                async:异步模式;
                sync:同步模式;
                atime/noatime:包含目录和文件;
                diratime/nodiratime:目录的访问时间戳
                auto/noauto:是否支持自动挂载
                exec/noexec:是否支持将文件系统上应用程序运行为进程
                dev/nodev:是否支持在此文件系统上使用设备文件;
                suid/nosuid:
                remount:重新挂载
                ro:
                rw:
                user/nouser:是否允许普通用户挂载此设备
                acl:启用此文件系统上的acl功能

                注意:上述选项可多个同时使用,彼此使用逗号分隔;
                      默认挂载选项:defaults
                            rw, suid, dev, exec, auto, nouser, and async

# mount /dev/sda5 /python

2. 卸载

  • umount 卸载命令
    进程正在使用中的设备无法被卸载
umount [-dflnrv] {dir|device}...
 -a, --all    All of the file systems described in /etc/mtab are unmounted.
 -f, --force   Force unmount (in case of an unreachable NFS system).  # 强制卸载 NFS
 -n, --no-mtab  Unmount without writing in /etc/mtab.
 -r, --read-only   In case unmounting fails, try to remount read-only.

# umount /dev/sda5

# umount /python

  • 查看正在访问指定文件系统的进程
    # fuser -v MOUNT_POINT
fuser [-fuv] [-a|-s] [-4|-6] [-c|-m|-n space] [ -k [-i] [-M] [-w] [-SIGNAL] ] name ...
       fuser -l
  • 终止所有在正访问指定的文件系统的进程
    # fuser -km MOUNT_POINT

安装 fuser 工具 # yum install psmisc -y

3. 挂载和卸载交换分区

  • swapon
swapon [-d] [-f] [-p priority] [-v] specialfile...
 -a, --all       All  devices  marked  as  ``swap''  in  /etc/fstab  are made available, except for those with the ``noauto'' option. # 激活所有在 /etc/fstab 中设置为自动激活的 swap 分区
 -e, --ifexists       Silently skip devices that do not exist. # 跳过不存在的设备
 -s, --summary      Display swap usage summary by device. Equivalent to "cat /proc/swaps".  # 显示 swap 分区使用信息
 -v, --verbose       Be verbose.
 -p, --priority priority      Specify the priority of the swap device.  priority is a value between -1 and 32767.  Higher numbers indicate higher priority. # 指定优先级

# swapon -v /dev/sda6
# swapon -v

  • swapoff
swapoff [-v] specialfile...
Usage:
 swapoff [options] [<spec>]

Options:
 -a, --all              disable all swaps from /proc/swaps
 -v, --verbose          verbose mode

# swapoff -v /dev/sda6

4. 自动挂载

  • 配置文件:/etc/fstab
    系统开机时将根据 fstab 文件的配置来自动实现文件系统的挂载
    每行定义一个需要挂载的文件系统
/dev/mapper/centos-root                   /                       xfs     defaults        0 0
UUID=2d5d8e36-0d64-4d53-90ee-632136874187 /boot                   xfs     defaults        0 0
/dev/mapper/centos-swap                   swap                    swap    defaults        0 0

每一行分别对应如下

要挂载的设备或伪文件系统     挂载点     文件系统类型     挂载选项     转储频率     自检次序
/dev/mapper/centos-root    /           xfs        defaults      0           0
  • 要挂载的设备或伪文件系统:
    设备文件、LABEL(LABEL="")、UUID(UUID="")、伪文件系统名称(proc, sysfs)
  • 挂载选项:
    defaults
    可自定义,用逗号分隔,如:default,acl
  • 转储频率:
    0:不做备份
    1:每天转储
    2:每隔一天转储
  • 自检次序:
    0:不自检
    1:首先自检;一般只有rootfs才用1;
    ...

五、空间使用情况检查

  • 内存空间使用状态:
    free [OPTION]
    -m: 以MB为单位
    -g: 以GB为单位
    # free -g

  • 文件系统空间占用等信息的查看工具:
    df:
    -h: human-readable
    -i:inodes instead of blocks
    -P: 以Posix兼容的格式输出;
    # df -h

  • 查看某目录总体空间占用状态:
    du:
    du [OPTION]... DIR
    -h: human-readable
    -s: summary
    显示 /boot 目录的总体占用大小 # du -sh /boot
    显示 /boot 下每个文件占用空间大小 # du -sh /boot/*,仅显示 boot 目录下的一级目录和文件的总占用大小
    显示 /boot 目录下每一个文件及文件夹分别占用的空间 # du -ah /boot/

六、文件系统其他

1. Inode
Inode: Index Node, 索引节点

  • 地址指针:
    直接指针:
    间接指针:
    三级指针:

inode bitmap:对位标识每个inode空闲与否的状态信息

2.链接文件

  • 硬链接:
    不能够对目录进行;
    不能跨分区进行;
    指向同一个inode的多个不同路径;创建文件的硬链接即为为inode创建新的引用路径,因此会增加其引用计数;

  • 符号链接:
    可以对目录进行;
    可以跨分区;
    指向的是另一个文件的路径;其大小为指向的路径字符串的长度;不增加或减少目标文件inode的引用计数;

  • 创建链接
    ln [-sv] SRC DEST
    -s:symbolic link
    -v: verbose
    eg:在 /tmp (DEST)下创建一个名为 app 的符号链接,指向 /python (SRC)目录
    # ln -sv /python /tmp/app

[root@centos-7 tmp]# ls -lh /tmp/app
lrwxrwxrwx. 1 root root 7 Oct  1 23:05 /tmp/app -> /python
[root@centos-7 tmp]#
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,928评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,192评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,468评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,186评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,295评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,374评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,403评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,186评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,610评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,906评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,075评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,755评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,393评论 3 320
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,079评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,313评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,934评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,963评论 2 351

推荐阅读更多精彩内容