概述:

      本篇为上篇博客---创建文件系统,(格式化)的后续内容,将陆续为大家介绍用于系统检测的工具、blkid命令,及如何创建swap文件系统,最重要的是文件系统创建后如何使用,挂载的内容!

==============================================================================

 4.用于实现系统检测的工具:fsck,e2fsck

为什么要进行文件系统检测:

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

  • 常发生于死机或者非正常关机之后;

  • 挂载为文件系统标记为“dirty”

e2fsck:ext系列文件专用的检测修复工具

语法:

  • e2fsck [OPTIONS] device

选项:

  • -y:对所有问题自动回答为yes;

  • -f:即使文件系统处于clean状态,也要强制进行检测;

fsck 命令

作用:

  • check and repair a Linux file system

语法:

  • fsck.FS_TYPE

wKioL1isQHiRtGHDAAANny4YAPk290.png

选项:

  • -t FS_TYPE:指明文件系统类型   如:fsck -t ext4=fsck.ext4

  • -a:自动修复错误;

  • -r:交互式修复错误

注意:

  •  FS_TYPE 一定要与分区上已知文件类型相同;

演示:

 1.e2fsck 命令

[root@CentOS6 ~]# e2fsck -f /dev/sda3
e2fsck 1.41.12 (17-May-2010)
Pass 1: Checking inodes, blocks, and sizes  # 第一步,检查indoe块和大小
Pass 2: Checking directory structure        # 第二步,检查目录结构;
Pass 3: Checking directory connectivity     # 第三步,检查目录连接性;
Pass 4: Checking reference counts           # 检查引用计数
Pass 5: Checking group summary information  # 检查簇摘要信息
/dev/sda3: 11/328656 files (0.0% non-contiguous), 56006/1313064 blocks

其他相关命令:

 1.blkid:

blkid:块设备属性信息查看

语法:

  • blkid [OPTION]...[DEVICE]

选项:

  • -U UUID:根据指定的UUID来查找对应的设备;

-L LABEL:根据指定的LABEL来查找对应的设备

演示:

[root@CentOS6 ~]# e2label /dev/sda3 MYDATA

# 根据指定的卷标,UUID来查找对应的设备
[root@CentOS6 ~]# blkid -L MYDATA
/dev/sda3

# 查看其设备的相关属性
[root@CentOS6 ~]# blkid /dev/sda3
/dev/sda3: UUID="ddd258cd-c7bc-48a2-8783-3bb629e21f81" SEC_TYPE="ext2" TYPE="ext3" LABEL="MYDATA"

[root@CentOS6 ~]# blkid -U ddd258cd-c7bc-48a2-8783-3bb629e21f81
/dev/sda3

swap文件系统:

swap文件系统:

  • Linux上的交换分区必须使用独立的文件系统(磁盘分区);且文件系统的System ID必须为82;

创建swap设备:

  • mkswap 命令

语法:

  • mkswap [OPTIONS] device

选项:

  • -L LIBEL:指明卷标;

  • -f:强制

演示:

[root@CentOS6 ~]# fdisk -l /dev/sda

Disk /dev/sda: 85.9 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00093c28

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          26      204800   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              26        7859    62914560   8e  Linux LVM
/dev/sda3            7859        8512     5252256   83  Linux
/dev/sda4            8513       10443    15510757+   5  Extended
/dev/sda5            8513        8905     3156741   83  Linux
/dev/sda6            8906        9167     2104483+  82  Linux swap / Solaris

# 创建swap文件系统
[root@CentOS6 ~]# mkswap /dev/sda6
Setting up swapspace version 1, size = 2104476 KiB
no label, UUID=c8a63073-5ab8-4384-8905-0326830a3953
[root@CentOS6 ~]# blkid /dev/sda6
/dev/sda6: UUID="c8a63073-5ab8-4384-8905-0326830a3953" TYPE="swap"

支持windows和linux的文件系统:fat32

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

  • # mkfs.vafat device

==============================================================================

第二篇:文件系统的使用(挂载)

==============================================================================

挂载的相关概念

为什么要挂载

  • 磁盘的分区和格式化完成后,磁盘要想能够使用,就需要挂载,在挂载某个分区前需要先建立一个挂载点。

相关概念:

首先要"挂载":mount 和 卸载 unmount 命令

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

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

  • 事先存在;

  • 应该使用未被或不会被其他进程使用到的目录;

  • 挂载点下原有文件将会被临时隐藏;

卸载:为解除此关联关系的过程

  • 卸载时:可使用设备,也可以使用挂载点

mount命令

 1.使用方法及语法:

挂载方法:

  • mount DEVICE MOUNT_POINT

  • mount:通过查看/etc/mtab文件显示当前已挂载的所有设备

语法:

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

device:指明要挂载的设备;

  • 设备文件:例如/dev/sda5;

  • 卷标:-L 'LABEL':例如-L 'MYDATA';

  • UUID, -U 'UUID':例如-U '0c50523c-43f1-45e7-85c0-a126711d406e'

  • 伪文件系统名称:proc, sysfs, devtmpfs, configfs

dir:挂载点

  • 事先存在;建议使用空目录;

  • 进程正在使用中的设备无法被卸载

演示:

[root@CentOS6 ~]# blkid /dev/sda3
/dev/sda3: UUID="ddd258cd-c7bc-48a2-8783-3bb629e21f81" SEC_TYPE="ext2" TYPE="ext3" LABEL="MYDATA" 

# 挂载 /dev/sda3 设备到 /mnt 目录下
[root@CentOS6 ~]# mount /dev/sda3 /mnt
[root@CentOS6 ~]# mount
/dev/mapper/vg0-root on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda1 on /boot type ext4 (rw)
/dev/mapper/vg0-usr on /usr type ext4 (rw)
/dev/mapper/vg0-var on /var type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/sda3 on /mnt type ext3 (rw)  # 挂载的设备

[root@CentOS6 ~]# df
Filesystem           1K-blocks    Used Available Use% Mounted on
/dev/mapper/vg0-root  20511356  407728  19055052   3% /
tmpfs                   502068       0    502068   0% /dev/shm
/dev/sda1               194241   34097    149904  19% /boot
/dev/mapper/vg0-usr   10190136 2142576   7523272  23% /usr
/dev/mapper/vg0-var   20511356  480824  18981956   3% /var
/dev/sda3              5169700  141468   4765620   3% /mnt

[root@CentOS6 ~]# cp /etc/fstab /mnt/
[root@CentOS6 ~]# ls /mnt/
fstab  lost+found
[root@CentOS6 ~]# umount /dev/sda3   # 取消挂载此设备,再次访问文件访问不到
[root@CentOS6 ~]# ls /mnt/

[root@CentOS6 ~]# mount /dev/sda3 /media/  # 挂载到其他文件作为访问入口
[root@CentOS6 ~]# ls /media/
fstab  lost+found

[root@CentOS6 ~]# umount /media/
[root@CentOS6 ~]# ls /media/

命令选项

  • -r:readonly,只读挂载;

  • -w:read and write, 读写挂载;(默认特性)

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

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

  • -a:自动挂载所有支持自动挂载的设备(定义在了/etc/fstab文件中,且挂载选项中有auto功能);

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

  • -U 'UUID':挂载时以UUID指定要挂载的设备;mount -U UUID dir

  • -B, --bind:将目录绑定至另一个目录上,作为其临时访问入口;


演示:

 1.-r: readonly,只读挂载

# 只读挂载
[root@CentOS6 ~]# mount -r /dev/sda3 /mnt
[root@CentOS6 ~]# ls /mnt
fstab  lost+found

# 提示为只读文件系统,不允许创建文件
[root@CentOS6 ~]# cp /etc/issue /mnt
cp: cannot create regular file `/mnt/issue': Read-only file system

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

[root@CentOS6 ~]# blkid /dev/sda3
/dev/sda3: UUID="ddd258cd-c7bc-48a2-8783-3bb629e21f81" SEC_TYPE="ext2" TYPE="ext3" LABEL="MYDATA" 
[root@CentOS6 ~]# mount -L MYDATA /mnt
[root@CentOS6 ~]# mount
/dev/mapper/vg0-root on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda1 on /boot type ext4 (rw)
/dev/mapper/vg0-usr on /usr type ext4 (rw)
/dev/mapper/vg0-var on /var type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/sda3 on /mnt type ext3 (rw)

3. -U 'UUID': 挂载时以UUID指定要挂载的设备

[root@CentOS6 ~]# umount /dev/sda3

# 指明 UUID 挂载
[root@CentOS6 ~]# mount -U ddd258cd-c7bc-48a2-8783-3bb629e21f81 /mnt
[root@CentOS6 ~]# mount
/dev/mapper/vg0-root on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda1 on /boot type ext4 (rw)
/dev/mapper/vg0-usr on /usr type ext4 (rw)
/dev/mapper/vg0-var on /var type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/sda3 on /mnt type ext3 (rw)
[root@CentOS6 ~]# ls /mnt
fstab  lost+found

4.-B, --bind: 将目录绑定至另一个目录上,作为其临时访问入口

[root@CentOS6 ~]# umount /mnt

# 将 /etc 目录挂载至 /mnt 目录下
[root@CentOS6 ~]# mount -B /etc/ /mnt

[root@CentOS6 ~]# mount
/dev/mapper/vg0-root on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda1 on /boot type ext4 (rw)
/dev/mapper/vg0-usr on /usr type ext4 (rw)
/dev/mapper/vg0-var on /var type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/etc on /mnt type none (rw,bind)

[root@CentOS6 ~]# ls /mnt
abrt                   cron.hourly              fstab             kde             nanorc                        prelink.cache     rpc            sudo-ldap.conf
acpi                   cron.monthly             gai.conf          kdump-adv-conf  netconfig                     prelink.conf      rpm            sysconfig
adjtime                crontab                  gconf             kdump.conf      NetworkManager                prelink.conf.d    rsyslog.conf   sysctl.conf
aliases                cron.weekly              gcrypt            krb5.conf       networks                      printcap          rsyslog.d      sysctl.d
aliases.db             crypttab                 gdm               ld.so.cache     nfsmount.conf                 profile           rwtab          system-release

-o options:(挂载文件系统的选项),多个选项使用逗号分隔

  • async:异步模式;

  • sync:同步模式,内存更改时,同时写磁盘;

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

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

  • auto/noauto:是否支持自动挂载,是否支持-a选项;

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

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

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

  • remount:重新挂载;

  • ro:只读;

  • rw:读写;

  • user/nouser:是否允许普通用户挂载此设备,默认管理员才能挂载;

  • acl:启用此文件系统上的acl功能(mount -o acl device dir 或者 tune2fs -o acl device

注意:

  • 如果挂载选项什么都不指的话,相当于默认(defaults):相当于rw, suid, dev, exec, auto, nouser, async  

演示:

# 默认新创建的文件系统是不支持acl权限的
[root@CentOS6 ~]# mount /dev/sda3 /mnt
[root@CentOS6 ~]# mount
/dev/mapper/vg0-root on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda1 on /boot type ext4 (rw)
/dev/mapper/vg0-usr on /usr type ext4 (rw)
/dev/mapper/vg0-var on /var type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/sda3 on /mnt type ext3 (rw) 

[root@CentOS6 ~]# ls /mnt
lost+found

[root@CentOS6 ~]# cp /etc/fstab /mnt/

[root@CentOS6 ~]# getfacl /mnt/fstab 
getfacl: Removing leading '/' from absolute path names
# file: mnt/fstab
# owner: root
# group: root
user::rw-
group::r--
other::r--

# 提示不允许设定acl权限
[root@CentOS6 ~]# setfacl -m u:centos:rw /mnt/fstab 
setfacl: /mnt/fstab: Operation not supported


#====================================================================
# 现在重新挂载,并添加挂载选项 acl(多个选项之间用逗号分隔)
[root@CentOS6 ~]# mount -o remount,acl /dev/sda3 /mnt
[root@CentOS6 ~]# mount
/dev/mapper/vg0-root on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda1 on /boot type ext4 (rw)
/dev/mapper/vg0-usr on /usr type ext4 (rw)
/dev/mapper/vg0-var on /var type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/sda3 on /mnt type ext3 (rw,acl) # 可以看到多了一个acl权限

[root@CentOS6 ~]# setfacl -m u:centos:rw /mnt/fstab  # 设置acl权限成功
[root@CentOS6 ~]# getfacl /mnt/fstab
getfacl: Removing leading '/' from absolute path names
# file: mnt/fstab
# owner: root
# group: root
user::rw-
user:centos:rw-   # 设置成功
group::r--
mask::rw-
other::r--

# 注意:也可以使用 tune2fs -o acl /dev/sda3 调整其默认挂载选项,使用 tune2fs -l /dev/sda3  查看

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

  • # mount;

  • # cat /etc/mtab

  • # cat /proc/mounts

 3.挂载光盘和U盘设备:

挂载光盘

光盘设备文件

IDE:/dev/hdc;

SATA:/dev/sr0

符号链接文件

  • dev/cdrom;

  • dev/dvd

挂载方法:

  • mount -r /dev/cdrom mount_point

特殊挂载光盘的使用方法:

  • 启动 autofs 服务,会将 /dev/sr0 自动挂载到 /misc/cd 目录中;

  • 启动 autofs:# systemctl enable|start autofs (centos7) centos6 可直接使用,随系统自启

把光盘制作成iso文件的方法:

  • 使用cp命令直接备份就可以 (cp /dev/cdrom  /root/centos6.iso)

挂载U盘

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

挂载本地回环设备:

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

演示:

# 只读挂载光盘到指定挂载点
[root@CentOS6 ~]# mount -r /dev/cdrom /mnt
[root@CentOS6 ~]# cd /mnt
[root@CentOS6 mnt]# ls
CentOS_BuildTag  EULA  p_w_picpaths    Packages                  repodata              RPM-GPG-KEY-CentOS-Debug-6     RPM-GPG-KEY-CentOS-Testing-6
EFI              GPL   isolinux  RELEASE-NOTES-en-US.html  RPM-GPG-KEY-CentOS-6  RPM-GPG-KEY-CentOS-Security-6  TRANS.TBL

# 特殊使用方法,启动自动挂载服务(autofs,CentOS6自动开启,7需要手动开启),会挂载到 /misc/cd 目录中
[root@CentOS6 ~]# cd /misc/cd
[root@CentOS6 cd]# ls
CentOS_BuildTag  EULA  p_w_picpaths    Packages                  repodata              RPM-GPG-KEY-CentOS-Debug-6     RPM-GPG-KEY-CentOS-Testing-6
EFI              GPL   isolinux  RELEASE-NOTES-en-US.html  RPM-GPG-KEY-CentOS-6  RPM-GPG-KEY-CentOS-Security-6  TRANS.TBL

[root@CentOS6 ~]# df
Filesystem           1K-blocks    Used Available Use% Mounted on
/dev/mapper/vg0-root  20511356  407728  19055052   3% /
tmpfs                   502068       0    502068   0% /dev/shm
/dev/sda1               194241   34097    149904  19% /boot
/dev/mapper/vg0-usr   10190136 2142576   7523272  23% /usr
/dev/mapper/vg0-var   20511356  480868  18981912   3% /var
/dev/sda3              3824484 3824484         0 100% /mnt
/dev/sr0               3824484 3824484         0 100% /misc/cd
/dev/sr0               3824484 3824484         0 100% /mnt

umount命令

 1.使用方法及语法:

umount命令

使用方法:

  • umount DEVICE

  • umount MOUNT_POINT

注意:

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

查看挂载情况:

  • # findmnt MOUNT_POINT

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

  • lsof MOUNT_POINT

  • fuser -v MOUNT_POINT

终止所有在正访问指定的文件系统的进程:

  • # fuser -km MOUNT_POINT

演示:

# 当有一个终端在使用时,另一个终端用户执行umount提示正在忙,表示不能卸载
[root@CentOS6 ~]# umount /mnt
umount: /mnt: device is busy.
        (In some cases useful info about processes that use
         the device is found by lsof(8) or fuser(1))

# 查看挂载情况:        
[root@CentOS6 ~]# findmnt /mnt
TARGET SOURCE    FSTYPE OPTIONS
/mnt   /dev/sda3 ext3   rw,relatime,errors=continue,barrier=1,data=ordered

# 查看被那个或者哪些进程所占用:
[root@CentOS6 ~]# lsof /mnt
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
bash    2059 root  cwd    DIR    8,3     4096    2 /mnt
[root@CentOS6 ~]# fuser -v /mnt
                     USER        PID ACCESS COMMAND
/mnt:                root       2059 ..c.. bash

# 终止所有在正访问指定的文件系统的进程:
[root@CentOS6 ~]# fuser -km /mnt
/mnt:                 2059c

[root@CentOS6 ~]# umount /mnt  # 正常卸载
[root@CentOS6 ~]# mount
/dev/mapper/vg0-root on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda1 on /boot type ext4 (rw)
/dev/mapper/vg0-usr on /usr type ext4 (rw)
/dev/mapper/vg0-var on /var type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)