天天看点

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

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

4.5.1 df命令

1.功能说明

df命令用来检查linux系统的磁盘空间占用情况。其格式如下。

<code>df [选项]</code>

df命令的选项及其说明如表4.34所示。

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

2.举例

1)查看当前系统磁盘分区情况,并显示文件系统类型,人性化输出。

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

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

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

4.5.2 du命令

du命令用来显示文件或目录所占用的磁盘空间情况。其格式如下。

<code>du [选项] 文件或目录</code>

du命令的选项及其说明如表4.35所示。

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

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

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

4.5.3 fsck命令

fsck命令用来检查文件系统并尝试修复错误。其格式如下。

<code>fsck [选项] [-t &lt;文件系统类型&gt;] [设备名]</code>

fsck命令的选项及其说明如表4.36所示。

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

“-t &lt;文件系统类型&gt;”是指定要检查的文件系统类型。

注意

 在执行fsck命令修复某个文件系统时,这个文件系统对应的磁盘分区一定要处于卸载状态,磁盘分区在挂载状态下进行修复是极为不安全的,数据可能遭到破坏,也有可能损坏磁盘。

检查并尝试修复出问题的磁盘分区/dev/sda10,在执行修复时进行询问,让用户得以确认并决定处理方式,显示详细修复过程。

从上面可以看出,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命令用来强制把内存中的数据写回硬盘,以免数据的丢失。其格式如下。

<code>sync</code>

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

4.5.5 eject命令

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

<code>eject [选项] 设备名</code>

eject命令的选项及其说明如表4.37所示。

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

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

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

<code>[root@mylinux ~]#eject /tmp</code>

4.5.6 mount/umount命令

挂载以及卸载指定的文件系统。在第3章我们曾经讲述过mount/umount命令,这里再深入讲述mount/umount的使用。

mount命令的选项及其说明如表4.38所示。

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

1)-l&lt;标签&gt;:标签其实就是磁盘分区标识的别名,标签可以随便起名,这样便于记忆,在linux下磁盘分区的设备名比较难记,利用标签代替设备名,简单易记。

2)-o&lt;选项&gt;:指定加载文件系统时的选项,这些选项如下。

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&lt;文件系统类型&gt;:指定设备的文件系统类型,常用选项如下。

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系统下指定的某个目录。

1)将光盘镜像文件挂载到linux系统下。

<code>[root@localhost/]#mount-o loop -t iso9660 /iso/centos-7-x86_64-dvd-1503-01.iso /ixdba</code>

在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目录下,并且支持中文,使用以下命令。

<code>[root@localhost/]#mount -t vfat -ocodepage=936,iocharset=cp936 /dev/hda3 /mnt/d</code>

上面的命令中,“-t vfat”选项表示需要挂载的d盘是fat格式的文件系统;“-o”后面的选项指定了分区挂载后支持中文显示;“/dev/hda3”是windows下的d盘在linux下的硬件标识;“/mnt/d”是linux系统上指定的挂载点,挂载成功就可以通过访问linux下的/mnt/d目录来访问windows下的d盘内容了。

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

<code>[root@localhost/]#mount-t nfs -o ro192.168.60.133:/home/ixdba /mnt/nfs</code>

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

继续阅读