Linux基础之磁盘及文件系统管理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux基础之磁盘及文件系统管理相关的知识,希望对你有一定的参考价值。

磁盘和文件系统管理


   

 文件系统管理工具:

  创建文件系统的工具

   mkfs

    mkfs.ext2, mkfs.ext3, mkfs.ext4, mkfs.xfs, mkfs.vfat, ...

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

   fsck

    fsck.ext2, fsck.ext3, ...

  查看其属性的工具

   dumpe2fs, tune2fs

  调整文件系统特性:

   tune2fs 

   

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

  文件系统驱动:由内核提供

  文件系统箮理工具:由用户空间的应用程序提供

  

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

  mkfs.ext2, mkfs.ext3, mkfs.ext4

  

  mkfs -t ext2 = mkfs.ext2

  

  ext系列文件系统专用管理工具: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; 

    -N #:直接指明要给此文件系统创建的inode的数量;

    -m #:指定预留的空间,百分比;

    

    -O [^]FEATURE:以指定的特性创建目标文件系统; 

    

   e2label命令:卷标的查看与设定

    查看:e2label device

    设定:e2label device LABEL

    

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

    adjust tunable filesystem parameters on ext2/ext3/ext4 filesystems;

    注意:块大小创建后不可修改;

    

    tune2fs [OPTIONS] device

     -l:查看超级块的内容;

     

     修改指定文件系统的属性:

      -j:ext2 --> ext3;

      -L LABEL:修改卷标;

      -m #:调整预留空间百分比;

      -O [^]FEATHER:开启或关闭某种特性;

      

      -o [^]mount_options:开启或关闭某种默认挂载选项

       acl

       ^acl

       

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

    dumpe2fs  [-h] device

    

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

    

    因进程意外中止或系统崩溃等 原因导致定稿操作非正常终止时,可能会造成文件损坏;此时,应该检测并修复文件系统; 建议,离线进行; 

    

    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:交互式修复;  

  

 CentOS 6如何使用xfs文件系统:

  # yum  -y  install  xfsprogs

   

  事先:

    # cd /etc/yum.repos.d/

    # wget  http://172.16.0.1/centos6.7.repo 

    # mv CentOS-Base.repo CentOS-Base.repo.bak

    

  创建:mkfs.xfs 

  检测:fsck.xfs   

  

 blkid命令:

  blkid device

  blkid  -L LABEL:根据LABEL定位设备

  blkid  -U  UUID:根据UUID定位设备 

  

 swap文件系统:

  Linux上的交换分区必须使用独立的文件系统;

   且文件系统的System ID必须为82;

   

  创建swap设备:mkswap命令

   mkswap [OPTIONS]  device

    -L LABEL:指明卷标

    -f:强制

    

 Windows无法识别Linux的文件系统; 因此,存储设备需要两种系统之间交叉使用时,应该使用windows和Linux同时支持的文件系统:fat32(vfat); 

  # mkfs.vfat device

  

 文件系统的使用:

  首先要“挂载”:mount命令和umount命令

  

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

  

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

    (1) 事先存在;

    (2) 应该使用未被或不会被其它进程使用到的目录;

    (3) 挂载点下原有的文件将会被隐藏;

   

  mount命令:

   mount  [-nrw]  [-t vfstype]  [-o options]  device  dir

   

    命令选项:

     -r:readonly,只读挂载; 

     -w:read and write, 读写挂载; 

     -n:默认情况下,设备挂载或卸载的操作会同步更新至/etc/mtab文件中;-n用于禁止此特性;

     

     -t vfstype:指明要挂载的设备上的文件系统的类型;多数情况下可省略,此时mount会通过blkid来判断要挂载的设备的文件系统类型;

     

     -L LABEL:挂载时以卷标的方式指明设备;

      mount -L LABEL dir

      

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

      mount -U UUID dir

      

    -o options:挂载选项

     sync/async:同步/异步操作;

     atime/noatime:文件或目录在被访问时是否更新其访问时间戳

     diratime/nodiratime:目录在被访问时是否更新其访问时间戳;

     remount:重新挂载; 

     acl:支持使用facl功能;

      # mount -o acl  device dir 

      # tune2fs  -o  acl  device 

      

     ro:只读 

     rw:读写 

     dev/nodev:此设备上是否允许创建设备文件;

     exec/noexec:是否允许运行此设备上的程序文件;

     auto/noauto:

     user/nouser:是否允许普通用户挂载此文件系统;

     suid/nosuid:是否允许程序文件上的suid和sgid特殊权限生效;     

     

     defaults:Use default options: rw, suid, dev, exec, auto, nouser, async, and relatime.

     

   一个使用技巧:

    可以实现将目录绑定至另一个目录上,作为其临时访问入口;

     mount --bind  源目录  目标目录

     

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

    # mount 

    # cat  /etc/mtab

    # cat  /proc/mounts

    

   挂载光盘:

    mount  -r  /dev/cdrom  mount_point

    

    光盘设备文件:/dev/cdrom, /dev/dvd

    

   挂载U盘:

    事先识别U盘的设备文件;

    

   挂载本地的回环设备:

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

    

  umount命令:

   umount  device|dir

   

   注意:正在被进程访问到的挂载点无法被卸载;

    查看被哪个或哪些进程所战用:

     # lsof  MOUNT_POINT

     # fuser -v  MOUNT_POINT

     

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

     # fuser  -km  MOUNT_POINT

     

 交换分区的启用和禁用:

  创建交换分区的命令:mkswap

  

  启用:swapon

   swapon  [OPTION]  [DEVICE]

    -a:定义在/etc/fstab文件中的所有swap设备;

    

  禁用:swapoff

   swapoff DEVICE

   

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

  每行定义一个要挂载的文件系统及相关属性:

   6个字段:

    (1) 要挂载的设备:

     设备文件;

     LABEL

     UUID

     伪文件系统:如sysfs, proc, tmpfs等

    (2) 挂载点 

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

    (3) 文件系统类型;

    (4) 挂载选项

     defaults:使用默认挂载选项;

     如果要同时指明多个挂载选项,彼此间以事情分隔;

      defaults,acl,noatime,noexec

    (5) 转储频率

     0:从不备份;

     1:每天备份;

     2:每隔一天备份;

    (6) 自检次序

     0:不自检;

     1:首先自检,通常只能是根文件系统可用1;

     2:次级自检

     ...

    

   mount  -a:可自动挂载定义在此文件中的所支持自动挂载的设备;

   

 两个命令:df和du

  df命令:

   df [OPTION]... [FILE]...

    -l:仅显示本地文件的相关信息;

    -h:human-readable

    -i:显示inode的使用状态而非blocks

    

  du命令:

   du [OPTION]... [FILE]...

    -s: sumary

    -h: human-readable

    

 练习:

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

   (1) block大小为2048;预留空间为2%,卷标为MYDATA;

   (2) 挂载至/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳;

   (3) 可开机自动挂载;

   

  2、创建一个大小为1G的swap分区,并启动之;


以上是关于Linux基础之磁盘及文件系统管理的主要内容,如果未能解决你的问题,请参考以下文章

Linux命令——磁盘操作及文件系统的管理

Linux系统管理之磁盘管理与文件系统

Linux初学之btrfs文件系统及磁盘配额

磁盘及文件系统管理之三

2018-1-17Linux系统管理Linux磁盘及文件系统的概念

Linux入门之磁盘管理文件系统