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

[经验分享] Linux磁盘及文件系统管理进阶

[复制链接]

尚未签到

发表于 2017-11-17 19:39:29 | 显示全部楼层 |阅读模式

  • 文件系统管理工具

    • 创建文件系统的工具

      • mkfs

        • 具体实现各不相同,mkfs.ext2, mkfs.ext3, mkfs.ext4, mkfs.xfs, mkfs.vfat...
        • 或者统一使用mkfs -t命令,例如mkfs -t ext2 /dev/sda3


    • 检测及修复文件系统的工具

      • fsck

        • fsck.ext2, fsck.ext3...


    • 查看文件系统属性的工具

      • ext系列文件系统:dumpe2fs,tune2fs
      • 其它各个文件系统工具各不相同

    • 调整文件系统特性的工具

      • ext系列文件系统:tune2fs
      • 其它各个文件系统工具各不相同


  • 内核级文件系统的组成部分

    • 文件系统驱动:由内核提供
    • 文件系统管理工具:由用户空间的应用程序提供

  • ext系列文件系统的管理工具

    • mkfs.ext2, mkfs.ext3, mkfs.ext4;或者mkfs -t

      • 后面的版本兼容前面的版本
      • 使用方法:COMMAND Partition,例如mkfs.ext2 /dev/sda3
      • CentOS 6默认不支持xfs文件系统,需要安装xfs的npm包。

        • yum install xfsprogs
        • yum -y install xfsprogs,就不用敲yes了


    • ext系列文件系统专用的管理工具:mke2fs

      • mke2fs [Options] Partition
      • -t {ext2 | ext3 | ext4}:指明格式化的文件系统类型是什么

        • mkfs.ext4 = mkfs -t ext4 = mke2fs -t ext4

      • -b {1024 | 2048 | 4096}:指明块大小,分别代表1k,2k,4k
      • -L LABEL:指明卷标
      • -j:创建有日志功能的文件系统ext3

        • mkfs.ext3 = mkfs -t ext3 = mke2fs -t ext3 = mke2fs -j

      • -i #:每多少字节一个inode,bytes-per-inode
      • -N #:直接指明要给此文件系统创建的inode的数量
      • -m #:指定预留空间的百分比,不需要加百分号,给一个数字就行了;默认是5%
      • -O [^]FEATURE:以给定的特性创建目标文件系统,不加^表示启用某特性,加了表示取消某特性

        • mkfs.ext3 = mkfs -t ext3 = mke2fs -t ext3 = mke2fs -j = mke2fs -O has_journal


    • e2lable命令:ext系列文件系统专用的卷标查看修改工具

      • 查看:e2lable Partition
      • 修改:e2lable Partition Label

    • tune2fs命令:查看或修改ext系列文件系统的某些属性

      • 只能修改某些属性,例如块大小创建之后就不能再修改
      • tune2fs [Options] Partition

        • -l:查看超级块的内容
        • -j:将ext2升级为ext3,不损害数据
        • -L LABEL:修改卷标,不损害数据
        • -m #:调整预留空间的百分比
        • -O [^]Feature:开启或关闭某种特性
        • -o [^]mount_options:开启或关闭某种默认的挂载选项,比如acl选项


    • dumpe2fs命令:显示ext系列文件系统的属性信息

      • dumpe2fs [-h] Partition
      • -h:只显示超级块的信息;

    • 用于实现文件系统检测的工具

      • 因进程意外终止或系统崩溃,断电等原因导致的写入操作非正常终止时,可能会造成文件损坏,此时,建议检测并修复文件系统;建议离线进行,即不要挂载,或者不要写入。
      • ext系列文件系统的专用工具:e2fsck

        • e2fsck [Options] Partition
        • -y:对所有问题自动回答为yes
        • -f:即使文件系统处于clean状态(与dirty状态对应),也要强制进行检测

      • fsck:通用的工具

        • -t:指明文件系统类型,如果不指明的话有时候会自动检测出来

          • fsck -t ext4 = fsck.ext4

        • -a:无需交互而自动修复所有错误

          • 不推荐,因为修复就是把坏文件删除,有些文件已经写了很多了,删除就全没了

        • -r:交互式修复



  • blkid命令:

    • blkid Partition:查看分区的相关属性
    • blkid -L LABEL:根据LABEL定位分区
    • blkid -U UUID:根据UUID定位分区

  • swap文件系统

    • Linux上的交换分区必须使用独立的文件系统,且文件系统的System ID必须为82
    • mkswap命令:创建swap文件系统

      • mkswap [Options] Partition
      • -L LABEL:指明卷标
      • -f:强制


  • Windows无法识别Linux的文件系统
  • Windows的NTFS文件系统在某些桌面级的Linux版本上被支持
  • Windows的fat32文件系统在Linux上被识别为vfat文件系统
  • 存储设备需要在两种系统之间交叉使用时,应该使用windows和linux同时支持的文件系统: fat32(vfat)

    • mkfs.vfat Partition

  • 文件系统的使用

    • 首先要“挂载”:mount命令和umount命令
    • 根文件系统之外的其它文件系统要想能够被访问,都必须通过“关联”至根文件系统上的某个目录来实现,此关联操作即为“挂载”;此目录即为“挂载点”;

      • 挂载点:mount_point,用于作为另一个文件系统的访问入口
      • 挂载点特性

        • 事先存在的目录
        • 应该使用未被且不会被其它进程使用到的目录
        • 挂载点下原有的文件将会被隐藏


    • mount命令:

      • mount [-fnrsvw] [-t vfstype] [-o options] device dir
      • 命令选项

        • -r:只读挂载
        • -w:读写挂载,为默认值
        • -n:默认情况下,设备挂载或卸载的操作会同步更新至/etc/mtab文件中;-n用于禁止此特性
        • -t vfstype:指明要挂载的设备上的文件系统的类型;多数情况下可以省略,此时mount会通过blkid来判断要挂载的设备的文件系统类型
        • -L LABLE:挂载时以卷标的方式指明设备

          • mount -L LABEL dir

        • -U UUID:挂载时以UUID的方式指明设备

      • 挂载选项

        • -o options:挂载选项

          • sync/async:同步/异步操作;写入内存后,过一会儿再写入磁盘叫异步,立即写入磁盘叫同步;异步性能好,但是同步数据不容易丢失(比如突然断电)
          • atime/noatime:文件或目录在被访问时,是否更新其访问时间戳
          • diratime/nodiratime:目录在被访问时,是否更新其访问时间戳
          • remount:重新挂载
          • acl:支持使用facl功能

            • mount -o acl device dir
            • tune2fs -o acl device; mount device dir
            • 复习facl命令

              • setfacl -m u:centos:rw- fstab
              • getfacl fstab


          • ro:只读
          • rw:读写
          • dev/nodev:此设备上是否允许创建设备文件
          • exec/noexec:是否允许运行此设备上的程序文件;可以防止木马等未授权的程序自动运行;
          • auto/noauto:是否允许mount命令使用-a选项自动挂载
          • user/nouser:是否允许普通用户挂载此文件系统
          • suid/nosuid:是否允许程序文件上的suid和sgid特殊权限生效
          • defaults:使用默认选项,rw,suid,dev,exec,auto,nouser,async and relatime
          • -o选项之间通过逗号分隔,例如:mount -o remount,acl /dev/sda3 /mnt


      • 一个使用技巧:可以实现将目录绑定至另一个目录,作为其临时访问入口

        • mount --bind 源目录 目标目录
        • unmount 目标目录

      • 查看当前系统上所有已挂载的设备

        • 直接使用mount命令
        • cat /etc/mtab
        • cat /proc/mounts

      • 挂载光盘

        • mount -r /dev/cdrom mount_point
        • 光盘设备文件:/dev/cdrom,/dev/dvd

      • 挂载U盘

        • 事先需要识别U盘的设备文件

      • 挂载本地的回环设备(如iso镜像文件,img映像文件)

        • mount -o loop /PATH/TO/SOME_LOOP_FILE MOUNT_POINT


    • umount命令:

      • umount device | dir
      • 注意:正在被进程访问到的挂载点无法被卸载

        • 查看被哪个或者哪些进程所占用

          • lsof mount_point,例如:lsof /mnt
          • fuser -v mount_point,例如:fuser -v /mnt

        • 终止所有正在访问某挂载点的进程

          • fuser -km mount_point




  • 交换分区

    • 创建交换分区的命令:mkswap
    • 交换分区的启用和禁用不能使用mount
    • 启用:swapon

      • swapon [options] [device]
      • -a:定义在/etc/fstab文件中的所有swap设备

    • 禁用:swapoff

      • swapoff device


  • 设定除根文件系统以外的其它文件系统能够开机时自动挂载:/etc/fstab文件

    • 每行定义一个要挂载的文件系统及相关属性,一共有6个字段

      • 要挂载的设备,有四种方式指定:设备文件,UUID,Label,伪文件系统(如sysfs,proc,tmpfs等)
      • 挂载点

        • swap类型的设备的挂载点为swap

      • 文件系统类型
      • 挂载选项

        • 如果要同时指明多个挂载选项,彼此之间用逗号分隔

      • 转储频率

        • 0:从不备份
        • 1:每天备份一次
        • 2:每隔一天备份一次

      • 自检次序

        • 0:不自检
        • 1:首先自检,通常只能是根文件系统可用1
        • 2:次级自检
        • ......

      • mount -a命令会将fstab中定义的所有支持自动挂载的设备挂载上来


  • 两个与磁盘相关的命令:df和du

    • df命令:查看磁盘的使用状态

      • df [option]... [file]...
      • -l:仅显示本地文件系统的相关信息
      • -h:以人类可读的方式做单位换算后显示
      • -i:显示inode的使用情况,而非blocks

    • du命令:评估文件占用的空间大小

      • du [option]... [file]...
      • -s:summary,显示目录下所有文件的大小之和
      • -h:以人类可读的方式做单位换算后显示


  练习:
  1,创建一个10G的分区,并格式化为ext4文件系统

  • block大小为2048;预留空间为2%;卷标为MYDATA
  • 挂载至/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳
  • 可开机自动挂载,且默认有acl挂载选项
  以下为另一个相似题目的答案,用来参考。不是本题答案。
  (1) 创建20G分区略,假设为/dev/sda7
  (2) mke2fs -t ext4 -b 2048 -L 'MYDATA' /dev/sda7
  (3) 编辑/etc/fstab文件,
  LABEL=‘MYDATA’   /mydata    ext4     defaults,acl   0    0
  2,创建一个大小为1G的swap分区,并启用之
  后期补充:

  • 删除文件的过程

    • 将此文件inode指向的所有data block标记为未使用
    • 将此文件的inode标记为未使用

  • 复制文件

    • 新建文件

  • 移动文件

    • 同一文件系统:改变仅仅是路径
    • 不同文件系统:复制文件,并删除原文件

  • 符号链接文件的inode指向数据块的指针里存放的是一个字符串,即原文件的路径;但是当原文件的路径很长的时候,也有可能存在数据块里,然后inode指向该数据块

运维网声明 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-408010-1-1.html 上篇帖子: linux组网笔记 下篇帖子: Linux设置程序开机自启动
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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