《循序渐进Linux(第2版) 基础知识 服务器搭建 系统管理 性能调优 虚拟化与集群应用》——4.5 磁盘管理与维护

简介: 因此当用户在利用fsck命令修复磁盘分区以后,如果发现分区中有文件丢失,就可以到对应的lost+found目录中去查找。由于此时通过文件名称已经无法分辨文件,因此可以利用file命令查看文件系统类型,进而判断哪个是需要的文件。

本节书摘来自异步社区《循序渐进Linux(第2版) 基础知识 服务器搭建 系统管理 性能调优 虚拟化与集群应用》一书中的第4章,第4.5节,作者:高俊峰著,更多章节内容可以访问云栖社区“异步社区”公众号查看

4.5 磁盘管理与维护

4.5.1 df命令
1.功能说明
df命令用来检查Linux系统的磁盘空间占用情况。其格式如下。

df [选项]
df命令的选项及其说明如表4.34所示。
screenshot
2.举例
1)查看当前系统磁盘分区情况,并显示文件系统类型,人性化输出。

[root@web1 ~]# df -hT
Filesystem  Type  Size Used Avail Use% Mounted on
/dev/sda2   ext3   15G603M14G  5% /
/dev/sda1   ext3   99M14M81M 14% /boot
/dev/sda7   ext496G19G72G 21% /ixdba
nonetmpfs  2.0G   0 2.0G  0% /dev/shm
/dev/sda3   ext3  9.7G3.3G5.9G 36% /usr
/dev/sda6   ext3  7.7G243M7.1G  4% /var
/dev/sdf6  xfs951G77G875G  9% /webdata

从上面的输出可以看出,每个文件系统分区的总大小、已经使用大小、剩余大小和占用的百分比等,还可以看出,上面的系统使用了ext3、ext4、tmpfs和xfs这4种类型的文件系统。

关于文件系统的概念,后面章节有详细讲述。

2)输出文件系统的inode信息。

[root@web1 ~]# df -ihT
Filesystem  Type  Inodes  IUsed  IFree IUse% Mounted on
/dev/sda2   ext3   1.9M  8.8K  1.9M  1% /
/dev/sda1   ext3    26K   38   26K  1% /boot
/dev/sda7   ext413M   41K   13M  1% /ixdba
nonetmpfs   496K    1  496K  1% /dev/shm
/dev/sda3   ext3   1.3M  156K  1.1M  13% /usr
/dev/sda6   ext3   1003K  3.3K  999K  1% /var
/dev/sdf6   xfs30M2.4M28M  9% /webdata

4.5.2 du命令
1.功能说明
du命令用来显示文件或目录所占用的磁盘空间情况。其格式如下。

du [选项] 文件或目录
du命令的选项及其说明如表4.35所示。

screenshot
2.举例
1)要显示当前目录下所有文件的大小,使用以下命令。

[root@localhost iso]# du -sh ./*
174M  ./RHEL4-U4-i386-AS-disc1.iso
631M  ./rhel-5-server-i386-disc1.iso
631M  ./rhel-5-server-i386-disc2.iso
631M  ./rhel-5-server-i386-disc3.iso
629M  ./rhel-5-server-i386-disc4.iso
224M  ./rhel-5-server-i386-disc5.iso
3.7G  ./rhel-5-server-i386-discDvD.iso

2)要显示当前Linux系统/etc目录的总大小,使用以下命令。

[root@localhost iso]#du –sh /etc
54M   /etc

4.5.3 fsck命令
1.功能说明
fsck命令用来检查文件系统并尝试修复错误。其格式如下。

fsck [选项] [-t <文件系统类型>] [设备名]
fsck命令的选项及其说明如表4.36所示。
screenshot
“-t <文件系统类型>”是指定要检查的文件系统类型。

注意
 在执行fsck命令修复某个文件系统时,这个文件系统对应的磁盘分区一定要处于卸载状态,磁盘分区在挂载状态下进行修复是极为不安全的,数据可能遭到破坏,也有可能损坏磁盘。
2.举例
检查并尝试修复出问题的磁盘分区/dev/sda10,在执行修复时进行询问,让用户得以确认并决定处理方式,显示详细修复过程。

[root@localhost /]# fsck -rV -t ext3 /dev/sda10 
fsck 1.39 (29-May-2006)
[/sbin/fsck.ext3 (1) -- /dev/sda10] fsck.ext3 -r /dev/sda10 
e2fsck 1.39 (29-May-2006)
/opt contains a file system with errors, check forced.
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Inode 6121 ref count is 2, should be 1. Fix<y>? yes
Unattached inode 6122
Connect to /lost+found<y>? yes
Inode 6122 ref count is 2, should be 1. Fix<y>? yes
Pass 5: Checking group summary information
Block bitmap differences: -(519--529) -9273
Fix<y>? yes
…………
/opt: ***** FILE SYSTEM WAS MODIFIED *****
/opt: 19/128520 files (15.8% non-contiguous), 46034/514048 blocks

从上面可以看出,fsck在修复文件系统的时候其实调用了/sbin/fsck.ext3命令。fsck修复经历了5个步骤的检查,中间如果发现需要修复的,就会提示用户是否修复,按y键进行修复,按其他任意键跳过修复。

当fsck命令执行时,fsck如果发现存在没有文件系统依赖的文件或者目录,就会提示用户是否把它们找回来,因为这些没有文件系统依赖的文件或者目录对用户来说是看不到的,也就无法使用,一般是由文件系统内部结构损坏导致的。如果用户同意找回,也就是上面说的按y键,fsck命令就会把这些孤立的文件或者目录放到lost+found目录下,并用这些文件自己对应的i-node号来命名,以便用户查找自己丢失的文件。lost+found的字面意思就是丢失并找回的含义。

因此当用户在利用fsck命令修复磁盘分区以后,如果发现分区中有文件丢失,就可以到对应的lost+found目录中去查找。由于此时通过文件名称已经无法分辨文件,因此可以利用file命令查看文件系统类型,进而判断哪个是需要的文件。

4.5.4 sync命令
功能说明
sync命令用来强制把内存中的数据写回硬盘,以免数据的丢失。其格式如下。

sync
需要说明的是:在Linux系统中,修改过的操作会缓存到内存中,不会马上写入硬盘,等待适当的时候再从内存写入磁盘,这样可以提高系统读写效率。Linux下默认每隔3秒系统自动执行一次sync操作,系统正常关机时也会执行sync操作,保证所有操作全部从内存写入磁盘。如果非法关机,系统内存信息无法及时同步到硬盘,就会造成数据丢失或者文件损坏,由此可见,Linux系统中正常关机是非常重要的。

4.5.5 eject命令
1.功能说明
eject命令用来退出抽取式设备,如光驱或者磁带。如果该设备已经挂载,则eject先将设备卸载,然后再退出设备。其格式如下。

eject [选项] 设备名
eject命令的选项及其说明如表4.37所示。

screenshot
2.举例
1)要显示当前系统中软盘、光盘和磁带的相应设备文件路径,使用以下命令。

[root@mylinux ~]# eject --noop floppy
eject: device is '/dev/fd0'
[root@mylinux ~]# eject -n cdrom
eject: device is '/dev/hda'
[root@mylinux ~]# eject -n st0
eject: device is '/dev/st0'

2)要卸载Linux系统的/tmp分区,使用以下命令。

[root@mylinux ~]#eject /tmp
4.5.6 mount/umount命令
1.功能说明
挂载以及卸载指定的文件系统。在第3章我们曾经讲述过mount/umount命令,这里再深入讲述mount/umount的使用。

mount [选项] [-L<标签>] [-o<选项>] [-t<文件系统类型>] [设备名] [挂载点]
umount [挂载点]

mount命令的选项及其说明如表4.38所示。
screenshot
1)-L<标签>:标签其实就是磁盘分区标识的别名,标签可以随便起名,这样便于记忆,在Linux下磁盘分区的设备名比较难记,利用标签代替设备名,简单易记。

2)-o<选项>:指定加载文件系统时的选项,这些选项如下。

  • async:以非同步的方式执行文件系统的输入、输出动作。
  • atime:每次存取都更新inode的存取时间,默认设置,取消选项为noatime。
  • auto:必须在/etc/fstab文件中指定此选项。指定-a选项时,会加载设置为auto的设备,取消选项为noauto。
  • dev:可读文件系统上的字符或块设备,取消选项为nodev。
  • exec:可执行二进制文件,取消选项为noexec。
  • noatime:每次存取时不更新inode的存取时间。
  • noauto:加入此选项,就无法使用-a选项来加载。
  • nodev:不读文件系统上的字符或块设备。
  • noexec:无法执行二进制文件。
  • nosuid:关闭set-user-identifier(设置用户ID)与set-group-identifer(设置组ID)设置位。
  • nouser:使用户无法执行加载操作,默认设置。
  • iocharset=XXX:指定mount分区时使用的字符集。
  • codepage=XXX:指定mount分区时使用的内码表。
  • remount:重新加载设备。通常用于改变设备的设置状态。
  • ro:以只读模式加载。
  • rw:以可读写模式加载。
  • suid:启动set-user-identifier(设置用户ID)与set-group-identifer(设置组ID)设置位,取消选项为nosuid。
  • sync:以同步方式执行文件系统的输入、输出动作。
  • user:可以让一般用户加载设备。
  • defaults:使用默认选项。默认选项为rw、suid、dev、exec、anto、nouser与async。

3)-t<文件系统类型>:指定设备的文件系统类型,常用选项如下。

  • ext3/ext2:Linux目前的常用文件系统。
  • msdos:MS-DOS的FAT。
  • vfat:Windows 95/98的VFAT。
  • nfs:网络文件系统。
  • iso9660:CD-ROM光盘的标准文件系统。
  • ntfs:Windows NT的文件系统。

4)设备名:硬盘分区在Linux上的设备标识,类似于/dev/sda1、/dev/hda2等。

5)挂载点:Linux系统下指定的某个目录。

2.举例
1)将光盘镜像文件挂载到Linux系统下。

[root@localhost/]#mount-o loop -t iso9660 /iso/CentOS-7-x86_64-DVD-1503-01.iso /ixdba
在Windows下访问ISO镜像文件需要虚拟光驱等第三方软件,而在Linux系统下光盘镜像文件可以直接通过挂载的方式实现读取。

这里的“loop”选项表示把一个镜像文件当成硬盘分区挂接到系统,“-t”指定镜像文件的类型为iso9660,也就是光盘的标准文件系统。“/iso/CentOS-7-x86_64-DVD-1503-01.iso”表示镜像文件的路径,而“/ixdba”表示挂载点,挂载成功后就可以通过/ixdba目录访问镜像文件的内容了。

2)Windows+Linux双系统并存环境,将Windows下的D盘挂载到Linux下的/mnt/d目录下,并且支持中文,使用以下命令。

[root@localhost/]#mount -t vfat -ocodepage=936,iocharset=cp936 /dev/hda3 /mnt/d
上面的命令中,“-t vfat”选项表示需要挂载的D盘是FAT格式的文件系统;“-o”后面的选项指定了分区挂载后支持中文显示;“/dev/hda3”是Windows下的D盘在Linux下的硬件标识;“/mnt/d”是Linux系统上指定的挂载点,挂载成功就可以通过访问Linux下的/mnt/d目录来访问Windows下的D盘内容了。

3)在一台Linux系统上以只读方式挂载另一台Linux系统上共享的分区,也就是我们以后要深入讲述的网络文件系统(network filesystem,NFS),使用以下命令。

[root@localhost/]#mount-t nfs -o ro192.168.60.133:/home/ixdba /mnt/nfs
上面的命令中,“-t nfs”指定挂载的文件系统类型是nfs;“-o ro”指定以只读方式挂载;“192.168.60.133:/home/ixdba”表示将IP地址为“192.168.60.133”的另外一台Linux系统中的/home/ixdba目录共享;“/mnt/nfs”指定在本机Linux系统上的挂载点。

相关文章
|
22天前
|
Linux
linux查看应用对应的端口
linux查看应用对应的端口
15 0
|
22天前
|
网络协议 安全 Linux
linux系统安全及应用——端口扫描
linux系统安全及应用——端口扫描
35 0
|
22天前
|
存储 负载均衡 索引
linux7安装elasticsearch-7.4.0集群配置
linux7安装elasticsearch-7.4.0集群配置
109 0
|
27天前
|
安全 Shell Linux
【Shell 命令集合 系统管理 】Linux 锁定终端 vlock命令 使用指南
【Shell 命令集合 系统管理 】Linux 锁定终端 vlock命令 使用指南
35 1
|
27天前
|
监控 Shell Linux
【Shell 命令集合 系统管理 】Linux 显示当前登录到系统的用户信息 who命令 使用指南
【Shell 命令集合 系统管理 】Linux 显示当前登录到系统的用户信息 who命令 使用指南
42 1
|
27天前
|
监控 Shell Linux
【Shell 命令集合 系统管理 】Linux 显示目前登入系统的用户信息 w命令 使用指南
【Shell 命令集合 系统管理 】Linux 显示目前登入系统的用户信息 w命令 使用指南
42 2
|
27天前
|
存储 Unix Shell
【Shell 命令集合 系统管理 】⭐⭐Linux 显示系统的基本信息 uname命令 使用指南
【Shell 命令集合 系统管理 】⭐⭐Linux 显示系统的基本信息 uname命令 使用指南
34 1
|
27天前
|
存储 Shell Linux
【Shell 命令集合 系统管理 】Linux 修改用户的属性和配置 usermod命令 使用指南
【Shell 命令集合 系统管理 】Linux 修改用户的属性和配置 usermod命令 使用指南
30 1
|
27天前
|
搜索推荐 Shell Linux
【Shell 命令集合 系统管理 】Linux 管理用户配置文件 userconf命令 使用指南
【Shell 命令集合 系统管理 】Linux 管理用户配置文件 userconf命令 使用指南
32 2
|
27天前
|
Shell Linux 数据库
【Shell 命令集合 系统管理 】Linux 创建新用户的命令 useradd命令 使用指南
【Shell 命令集合 系统管理 】Linux 创建新用户的命令 useradd命令 使用指南
44 1