设为首页 收藏本站
查看: 1050|回复: 0

[经验分享] Linux文件管理系统

[复制链接]

尚未签到

发表于 2018-5-22 07:58:50 | 显示全部楼层 |阅读模式
  LINUX文件系统体系结构
DSC0000.gif

  用户空间(User space)包含一些应用程序(例如,文件系统的使用者)和 GNU C 库(glibc),它们为文件系统调用(打开、读取、写和关闭)提供用户接口。系统调用接口(System call interface)的作用就像是交换器,它将系统调用从用户空间发送到内核空间(Kernel space)中的适当端点。
  VFS(Virutal file systems) 是底层文件系统的主要接口。这个组件导出一组接口,然后将它们抽象到各个文件系统,各个文件系统的行为可能差异很大。有两个针对文件系统对象的缓存(inode 和 dentry)。它们缓存最近使用过的文件系统对象。每个文件系统实现(比如 ext2、JFS 等等)导出一组通用接口,供 VFS 使用。缓冲区缓存会缓存文件系统和相关块设备之间的请求。
  主要结构
  Linux 以一组通用对象的角度看待所有文件系统。这些对象是超级块(superblock)、inode、dentry 和文件。超级块在每个文件系统的根上,超级块描述和维护文件系统的状态。文件系统中管理的每个对象(文件或目录)在 Linux 中表示为一个 inode。inode 包含管理文件系统中的对象所需的所有元数据(包括可以在对象上执行的操作)。另一组结构称为 dentry,它们用来实现名称和 inode 之间的映射,有一个目录缓存用来保存最近使用的 dentry。dentry 还维护目录和文件之间的关系,从而支持在文件系统中移动。最后,VFS 文件表示一个打开的文件(保存打开的文件的状态,比如写偏移量等等)。
  虚拟文件系统层
  VFS 作为文件系统接口的根层。VFS 记录当前支持的文件系统以及当前挂装的文件系统。
  超级块
  超级块结构表示一个文件系统。它包含管理文件系统所需的信息,包括文件系统名称(比如 ext2)、文件系统的大小和状态、块设备的引用和元数据信息(比如空闲列表等等)。超级块通常存储在存储媒体上,但是如果超级块不存在,也可以实时创建它。
  Linux系统下可使用的文件系统有
  基本文件系统:ext2, ext3, ext4, reiserfs, xfs, btrfs, swap
  光盘:iso9660
  Windows: fat32(vfat), ntfs
  Unix: ffs, ufs, jfs, jfs2
  网络文件系统:nfs, cifs
  集群文件系统:ocfs2, gfs2
  分布式文件系统:ceph, moosefs, mogilefs, hdfs, gfs, glusterfs
  (1)日志型文件系统:非日志型文件系统:ext2
日志型文件系统:ext3
  (2)swap:交换分区
  创建文件系统
在分区上执行格式化(高级格式化)要使用某种文件系统,满足两个条件:
(1)内核中:支持此种文件系统
(2)用户空间:有文件系统管理工具
  系统文件一般的管理工具:
  mkfs命令
使用格式: mkfs [-V] [-t fstype] [fs-options] filesys [blocks] [-L Lable]  作用:创建文件系统
  参数
-V : 详细显示模式
-t : 给定文件系统的格式
-c : 在制做档案系统前,检查该partition 是否有坏轨
-l bad_blocks_file : 将有坏轨的block资料加到 bad_blocks_file 里面
block : 给定 block 的大小
-L:建立lable
实例:设定sda2分区的文件格式为ext3,以下两种方式同样可以实现[root@localhost ~]# mkfs.ext3 /dev/sda2[root@localhost ~]# mkfs -t ext3 /dev/sda2
mke2fs命令使用格式:mke2fs [OPTION]... DEVICE
常用参数-t:{ext2|ext3|ext4}  指定需使用的文件系统  -b: {1024|2048|4096}      指定块大小
  -L : 'LABEL'                 设定标签
  -j:  mke2fs -t ext3       创建使用ext3卷号的文件系统
  -i #:                                指定每个inode的字节数
  -N #:                              指定inode的数量
  -m #:                                预留磁盘空间占据多大百分比的空间为后期管理使用;
  -O: FEATURE[,...]     指定分区特性
  -O: ^FEATURE:      关闭此特性
  实例:
  (1)     使用fdisk创建分区
  fdisk /dev/sda
DSC0001.jpg
(2)创建分区后,使用partx /dev/sda3 重新激活分区表
[root@localhost~]# partx /dev/sda
#1:      2048-  4098047 ( 4096000 sectors,   2097 MB)
# 2:   4098048-106498047 (102400000 sectors,  52428 MB)
# 3:106498048-110703914 (  4205867sectors,   2153 MB)
(3)创建文件系统为ext4,指定块大小为1024,卷标为“test”
[root@localhost~]# mke2fs -t ext4 -b 1024 -L test /dev/sda3
(4)使用blkid命令查看结果
[root@localhost~]# blkid /dev/sda3
/dev/sda3:LABEL="test" UUID="22c70ef3-9497-4b48-b5c9-5067c5b71710"TYPE="ext4"


文件系统属性查看及调整工具
e2label命令
使用格式:e2lable DEVICE [LABEL]
作用: 查看分区的卷标及设置
[root@localhost~]# e2label /dev/sda3
test


tune2fs命令
显示ext系列文件系统的属性,或调整其属性;
-l:显示超级块中的信息;显示整个文件的属性及布局等相关信息;
-L: 'LABEL':修改卷标;
-m#: 调整预留给管理员的管理空间百分比;
-j:ext2 --> ext3
-O:文件系统属性的启动或关闭
-o:文件系统默认挂载选项的启用或关闭

dumpe2fs命令
-h: 仅显示超级块信息

文件系统检测
fsck(Filesystem check)命令
fsck-t type
fsck.type
-a: 自动修复错误
-r: 交互式修复错误
-f: 强制检测

e2fsck命令:ext系列文件系统专用的检测修复工具;
-y: 自动回答为“yes”
-f:force
  文件系统的挂载和使用
  将额外文件系统与根文件系统某现存的目录建立起关联关系,进而使得此目录做为其它文件系统访问入口的行为,称之为挂载;
  解除此关联关系的过程为卸载。
  挂载点:mount point, 设备挂载至目录;
  注意:挂载点在挂载在之后,其内部原有的文件会被暂时隐藏;建立使用空目录做为挂载点
  常用的挂载命令有
  mount
格式为:mount [-afFhnrvVw] [-L<标签>] [-o<选项>] [-t<文件系统类型>] [设备名] [加载点]作用: 加载指定的文件系统。常用参数和选项:
-a 加载文件/etc/fstab中设置的所有设备。
-f 不实际加载设备。可与-v等参数同时使用以查看mount的执行过程。
-F 需与-a参数同时使用。所有在/etc/fstab中设置的设备会被同时加载,可加快执行速度。
-h 显示在线帮助信息。
-L<标签> 加载文件系统标签为<标签>的设备。
-n 不将加载信息记录在/etc/mtab文件中。
-o<选项> 指定加载文件系统时的选项。有些选项也可在/etc/fstab中使用。这些选项包括:
    async 以非同步的方式执行文件系统的输入输出动作。
    atime 每次存取都更新inode的存取时间,默认设置,取消选项为noatime。
    auto 必须在/etc/fstab文件中指定此选项。执行-a参数时,会加载设置为auto的设备,取消选取为noauto。
    defaults 使用默认的选项。默认选项为rw、suid、dev、exec、anto nouser与async。
    dev 可读文件系统上的字符或块设备,取消选项为nodev。
    exec 可执行二进制文件,取消选项为noexec。
    noatime 每次存取时不更新inode的存取时间。
    noauto 无法使用-a参数来加载。
    nodev 不读文件系统上的字符或块设备。
    noexec 无法执行二进制文件。
    nosuid 关闭set-user-identifier(设置用户ID)与set-group-identifer(设置组ID)设置位。
    nouser 使一位用户无法执行加载操作,默认设置。
    remount 重新加载设备。通常用于改变设备的设置状态。
    ro 以只读模式加载。
    rw 以可读写模式加载。
    suid 启动set-user-identifier(设置用户ID)与set-group-identifer(设置组ID)设置位,取消选项为nosuid。
    sync 以同步方式执行文件系统的输入输出动作。
    user 可以让一般用户加载设备。
-r 以只读方式加载设备。
-t<文件系统类型> 指定设备的文件系统类型。常用的选项说明有:
    minix Linux最早使用的文件系统。
    ext2 Linux目前的常用文件系统。
    msdos MS-DOS 的 FAT。
    vfat Win85/98 的 VFAT。
    nfs 网络文件系统。
    iso9660 CD-ROM光盘的标准文件系统。
    ntfs Windows NT的文件系统。
    hpfs OS/2文件系统。Windows NT 3.51之前版本的文件系统。
    auto 自动检测文件系统。
-v 执行时显示详细的信息。
-V 显示版本信息。
-w 以可读写模式加载设备,默认设置。
unmount:卸载命令# umount DEVICE       # umount MOUNT_POINT
实例:(1)  创建挂载点 /mnt/test[root@localhost ~]# mkdir /mnt/test(2)把/dev/sda3挂载到/mnt/test上[root@localhost ~]# mount /dev/sda3 /mnt/test(3)使用df –h 命令查看 [root@localhost ~]# df -hFilesystem            Size  Used Avail Use% Mounted on/dev/mapper/789-LogVol01                       47G  3.5G   41G   8% /tmpfs                 491M  224K  491M   1% /dev/shm/dev/sda1             1.9G   37M  1.8G   3% /boot/dev/sr0              3.7G  3.7G     0 100% /mnt/iso/dev/sda3             2.0G  3.1M  1.9G   1% /mnt/test
使用umount命令卸载[root@localhost ~]# umount /mnt/test/[root@localhost ~]# df -hFilesystem            Size  Used Avail Use% Mounted on/dev/mapper/789-LogVol01                       47G  3.5G   41G   8% /tmpfs                 491M  224K  491M   1% /dev/shm/dev/sda1             1.9G   37M  1.8G   3% /boot/dev/sr0              3.7G  3.7G     0 100% /mnt/iso
交换分区  查看内存(memory)及交换分区(swap)的命令
  free
  -m: MB为单位
  -g: GB为单位
  [root@localhost ~]# free -m
  total       used       free    shared    buffers     cached
  Mem:           981        710        270          3         62        312
  -/+ buffers/cache:        336        645
  Swap:         1999         0       1999
  创建交换分区
  mkswap
  格式:mkswap [option] DEVICE
         -L 'LABEL'       指定卷标
  
  swapon:启用交换分区
  格式:swapon [option] [DEVICE]
         -a: 激活所有交换分区
         -p PRIORITY: 设定其优先级
  
  swapoff:禁用交换分区
  格式:swapoff [option] [DEVICE]
  
  实例:
  创建一个交换分区
[root@localhost ~]# mkswap /dev/sda3
Setting up swapspace version 1, size = 2102928 KiB
no label, UUID=023db09a-ccd8-4714-ad69-337b744e2843
[root@localhost ~]# swapo
swapoff  swapon   
[root@localhost ~]# swapo
swapoff  swapon   
[root@localhost ~]# swapon /dev/sda3
[root@localhost ~]# swapon –s   
Filename                           Type             SizeUsed      Priority
/dev/dm-1                              partition     2047996       0     -1
/dev/sda3                               partition      2102928       0     -2  

  
  文件系统等空间占用信息的查看工具
  df命令
作用:报告文件系统磁盘空间的使用情况格式:df [OPTION]... [FILE]... POSIX 选项: [-kP]  
  常用参数
  df: disk free                      显示磁盘空间
-h: human-readable   用常见的格式显示出大小-i: inode数量       用信息索引点代替块表示使用状况  -P:                                     Posix兼容的格式输出
  du: disk usage
  -s: summary
  
  文件系统上的链接文件:
  硬链接:
  特性:(1)两个路径指向同一个inode
2)不能对目录进行;
         3不能跨分区进行
  注意:指向同一个inode的多个不同路径; 创建文件的硬链接会增加inode的引用计数;删除硬链接仅是删除其一个访问路径,只到最后一个路径被删除;
  
  符号链接(软链接):
  特性:(1)链接文件的数据指向另一个文件路径
2)可以对目录进行;
3)可以跨分区;
  注意:指向的是另一个文件路径,而非inode。对文件创建符号链接不会增加其引用计数;删除原文件,符号链接文件也将无法;
ln [-s] SRC DEST
                   -ssymbolic link
                   -vverbose
  
  作业
  创建一个10G文件系统,类型为ext4,要求开机可自动挂载至/mydata目录
  (1)   创建分区
[root@localhost ~]# fdisk /dev/sda
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
e                                             因只能分四个主分区,之前已有3个在用,因此此处第4个分区分为
Selected partition 4               extended(扩展)
First cylinder (6892-15665, default 6892):
Using default value 6892
Last cylinder, +cylinders or +size{K,M,G} (6892-15665, default 15665):
Using default value 15665
Command (m for help): n
First cylinder (6892-15665, default 6892):
Using default value 6892
Last cylinder, +cylinders or +size{K,M,G} (6892-15665, default 15665): +10G
Command (m for help): p
Device Boot      Start         End      Blocks  Id  System
/dev/sda1   *           1         256    2048000   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2             256        6630   51200000   8e  Linux LVM
/dev/sda3            6630        6891    2102933+  83  Linux
/dev/sda4            6892       15665   70477155    5  Extended
/dev/sda5            6892        8197   10490413+  83  Linux  

  
  2)使用kpatx命令刷新分区表后,查看/proc/partitions下的分区信息
[root@localhost ~]# kpartx /dev/sda5
[root@localhost ~]# cat /proc/partitions
major minor  #blocks  name
   7        0   3804160 loop0
   8        0 125829120 sda
   8        1   2048000 sda1
   8        2  51200000 sda2
   8        3   2102933 sda3
   8        4         31 sda4
   8        5  10490413 sda5
253        0  49147904 dm-0
253        1   2048000 dm-1  

  
  3)使用mke2fs命令创建文件系统ext4
[root@localhost ~]# mke2fs -t ext4  /dev/sda5
(4)使用blkid命令查看
[root@localhost ~]# blkid /dev/sda5
/dev/sda5: UUID="b6d1d8c9-6496-4e85-9d0f-026b3756c11e" TYPE="ext4"  

  
  4)创建挂载点并使用mount命令挂载上去;最后编辑/etc/fstab文件
[root@localhost ~]# mkdir /dev/sda5 /mnt/test
[root@localhost ~]# mount /dev/sda5 /mnt/test/
[root@localhost ~]# vim /etc/fstab  

DSC0002.jpg

(5)使用mount–a命令再检查一次,使用df命令输出结果。
[root@localhost~]# mount -a
[root@localhost~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/789-LogVol01
                       47G  3.5G  41G   8% /
tmpfs                 491M  224K 491M   1% /dev/shm
/dev/sda1             1.9G   37M 1.8G   3% /boot
/dev/sr0              3.7G 3.7G     0 100% /mnt/iso
/dev/sda5            9.8G   23M  9.3G  1% /mnt/test

  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-478888-1-1.html 上篇帖子: Linux命令初识二 下篇帖子: Linux yum配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表