系统本身自带的有内存,但系统自身的内存不足以支持数据的持续增长,因此需要磁盘来弥补这一缺陷,用于储存数据。随着储存到磁盘的内容越来越多,非常多的信息储存在一起,查找很不方便,因此,在Linux系统中,就出现了这些磁盘管理命令。磁盘的好坏直接关系到整个系统的性能问题。
一、常用工具
df
df命令:
查看文件系统空间占用的信息。
利用该命令可以了解硬盘已使用了多少空间,还剩下多少空间,还可以查看当前磁盘上所有挂载的设备(文件系统)及挂载点。
显示结果如下:①文件系统②磁盘总容量③已使用容量④剩余容量⑤已使用的百分比⑥挂载点
注:带tmpfs的表示临时文件系统,重启后内容会重置。如果已使用的百分比这个值大于90%时,磁盘将满。
如果 df 没有加任何选项,那么默认会将系统内所有的 (不含特殊内存内的文件系统与 swap) 都以 1 Kbytes 的容量来列出来!
选项:
-i:显示inode的详细信息 -h:使用合适的单位显示信息 -k:以K为单位显示信息 -m:以M为单位显示信息 -T:查看文件系统类型
示例:
df:查看系统磁盘设备,默认是KB为单位
df -h:查看系统磁盘设备,以合适的单位来显示
du
du命令:
用于查看某个目录总体空间占用的情况
du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,du 这个命令其实会直接到文件系统内去搜寻所有的文件数据。
选项:
-h:以合适的单位显示信息 -s:仅显示指定目录下所有文件大小的总和 -k:以KB为单位显示信息 -m:以MB为单位显示信息
示例:
du -sh:以合适的单位显示指定目录下所有文件大小的总和
free
free命令:
查看内存空间的使用情况
选项:
-m: 以MB为单位 -g: 以GB为单位
示例:
free -m: 以MB为单位查看内存空间的使用情况
free -g: 以GB为单位查看内存空间的使用情况
二、磁盘分区
在使用新的硬盘之前,我们必须对其进行分区。也就是在磁盘中存储分区信息,告诉操作系统哪个扇区是哪个分区的,哪个分区用来启动的等等。
parted
parted命令:
parted 是高级分区操作命令,它的操作都是实时生效的,小心使用。在centos 7及centos5以上都可以用partprobe命令更新硬盘,centos 6则使用 partx -a 或者partx -d --nr。
用法:
parted [选项]... [设备 [命令 [参数]...]...] parted /dev/Device mklabel gpt | msdos : 改变磁盘类型为GPT或MBR parted /dev/Device print :显示磁盘分区信息 parted /dev/Device mkpart primary 1 1000 : 创建分区 1 为分区号;1000为分区大小(默认为M) parted /dev/Device rm 1 : 删除第一个分区 parted -l : 列出所有设备信息
fdisk : MRB分区工具
fdisk是Linux的MRB分区表操作工具,gdisk是GPT分区表的操作工具,用法与fdisk基本一致。
fdisk /dev/sdX : 管理sdX磁盘,对指定硬盘修改分区
fdisk 子命令:
m: 帮助 o: 创建msdos分区label n: 创建新的分区 d: 删除分区 p: 查看当前分区表 a: 添加/取消 启动标记 t: 转换分区类型ID l/L: 显示分区类型ID表
示例:
fdisk -l : 列出所有块设备的分区信息
fdisk -l /dev/sdX: 查看指定块设备的分区信息
cat /proc/partitions :查看内核是否已经识别新的分区
注:若仅有 fdisk -l 时,则系统将会把整个系统内能够搜寻到的装置的分区均列出来。
三、磁盘格式化
文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储的文件信息的软件结构称为文件管理系统,简称文件系统。
从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体的说,它负责为用户建立文件存入、读出、修改、转储文件,控制文件的存取,安全控制,日志,压缩,加密等。
磁盘分割完毕后自然就是要进行文件系统的格式化,使用 mkfs
(make filesystem) 命令.
mkfs
mkfs命令:
创建文件系统
mke2fs是ext系列文件系统的专用管理工具
查看支持的文件系统:cat /proc/filesystems
配置文件: /etc/mke2fs.conf 用于设定默认特性及各文件系统特有的特性
创建ext文件系统
选项:
-t :指定文件系统类型 {ext2 | ext3 | ext4} -j :相当于 -t ext3 mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs -t ext3 -L label : 指定卷标, -b{1024|2028|4096} :指定块大小 -i # :为数据空间中每多少个字节创建一个inode;此大小不应该小于block的大小 -N # : 直接指定分区中创建多少个inode -I n :指定inode大小 -m #:为管理员预留空间占总空间百分比,默认为5% -O FEATURE[,...] :启用指定特性(只能开启以下特性) -o ^FEATURE 禁用指定特性
示例:
将分区 /dev/sdk格式化为 ext3 文件系统
tune2fs
tune2fs命令:
修改文件系统信息,重新设定ext 系列文件系统可调整参数的值
选项:
-l :查看指定文件系统超级块信息;super block -L 'LABEL' :修改卷标(ext) mkfs -L 'LABEL' 或 mke2fs -L 'LABEL' 创建时设置卷标 e2label /dev/sd# 查看卷标 e2label /dev/sd# 'LABEL' 重命名卷标 -m # :修改预留给管理员的空间百分比 -j: 将ext2 升级为ext3 -O: 文件系统属性启用或禁用, –O ^has_journal -o: 调整文件系统的默认挂载选项,–o ^acl (centos7里默认开启acl 6 默认不开启) -U UUID: 修改UUID号
示例:
e2label /dev/sdb :查看硬盘的卷标
这个命令很简单,后边直接跟分区编号,即可查看该分区的label,当想要修改标签名时,分区编号后边跟想要的标签名即可。
tune2fs -o acl /dev/sdb:开启/dev/sdb的acl功能
四、文件系统检测:
fsck
fsck命令:
用来检查和维护不一致的文件系统
若系统掉电或磁盘发生问题,可利用fsck命令对文件系统进行检查。
选项:
-t : 文件类型 设备 -f : 强行检测 -a : 如果检查有错自动修复错误 -r : 交互式修复错误
示例:
fsck -y : 检查修复每个文件
注:如果没有加上 -f 的选项,则由于这个文件系统不曾出现问题,检查的经过非常快速!若加上 -f 强制检查,才会一项一项的显示过程。
e2fsck : ext系列文件系统专用的检测修复工具
-y :自动回答为yes -f :强行检测
注:挂载为文件系统标记为“no clean”,一定不要再挂载状态下修复。
五、磁盘挂载和卸载:
磁盘的分区和格式化完成后,磁盘要想能够使用,就需要挂载。格式化后的磁盘其实是一个块设备文件,在挂载某个分区前需要先建立一个挂载点,这个挂载点是以目录的形式出现的。一旦把某一个分区挂载到了这个挂载点(目录)下,那么再往这个目录写数据时,就都会写到该分区中。有一点必须注意,在挂载该分区前,挂载点(目录)下必须是个空目录。其实目录不为空并不影响所挂载分区的使用,但是一旦挂载上了,那么该目录下以前的东西就不能看到了。只有卸载掉该分区后才能看到。
mount
mount 命令:
显示当前已挂载的设备
查看显示当前已挂载的设备的文件:/etc/mtab,/etc/fstab,/proc/mounts(内核)
/etc/fstab每行定义一个要挂载的文件系统。
mount只是临时挂载,如果需要永久挂载,需要对/etc/fstab进行配置
用法:
mount [options] -o [option] -t 文件类型 设备 挂载目录 设备: (1)设备文件:例如/dev/sr0,/dev/sdb1 (2)卷标:-L '卷标名' (3)UUID:-U 'UUID' (4)伪文件系统名称:proc,sysfs dir挂载点: (1)必须事先存在,尽量使用空目录 (2)进程正在使用中的设备无法被卸载
选项:
-t :指定要挂载设备的文件系统类型 -r :readonly,只读挂载 -w :读写挂载 -n :挂载后不更新/etc/mtab,导致mount和df命令无法查询到挂载信息,但可查看/proc/mounts -a :读取/etc/fstab 挂载当前尚未挂载的文件系统,已经挂载的文件系统不会重新挂载,也不会更新挂载选项 -L :以卷标名来指定要挂载的设备 -U :以UUID来指定要挂载的设备 -B,--bind :绑定目录到另一个目录上(相当于软链接) -o [options] :(挂载文件系统的选项),多个选项用逗号分隔 async (default) 异步模式 sync 同步模式,立即同步 atime (default) 文件被访问时,更新atime noatime 文件被访问时,不更新atime diratime (default) 目录被访问时,更新atime nodiratime 目录被访问时,不更新atime auto (default) 写入/etc/fstab后,被mount -a自动挂载 noauto 写入/etc/fstab后,不被mount -a自动挂载 exec (default) 该目录下有rx权限的文件可以被执行 noexec 该目录下所有文件对所有用户包括root,都不可以被执行 dev (default) 该目录下设备文件可以被使用 nodev 该目录下的设备文件不可被使用 suid (default) 表示该目录下的suid,sgid权限生效 nosuid 表示该目录下的suid,sgid权限不生效 remount,xxx 不卸载的情况下,可直接更新挂载选项 rw (default) 按只读权限挂载 ro 按可读可写权限挂载 nouser(default) 写入/etc/fstab的项目不能让普通用户挂载/卸载 user 写入/etc/fstab的项目可以让普通用户挂载/卸载 acl (centos7 default) 该目录下的文件可以设置acl权限 noacl (centos6及之前 default) 该目录下的文件不可以设置acl权限 loop 挂载loop设备,如iso时,要指定 defaults rw, suid, dev, exec, auto, nouser, async,atime,diratime,acl(centos7)
示例:
cat /proc/mounts:查看内核追踪到的已挂载的所有设备
注:文件挂载成功后,挂载后不更新/etc/mtab,导致mount和df命令无法查询到挂载信息,但可以用df -a查看。
umount
卸载设备
用法:
umount [-fn] 装置文件名或挂载点
选项与参数:
-f :强制卸除!可用在类似网络文件系统 (NFS) 无法读取到的情况下 -n :不升级 /etc/mtab 情况下卸除
六、练习
创建一个2G的文件系统,块大小为2048byte,预留1%可用空间,文件系统ext4,卷标为TEST,要求此分区开机后自动挂载至/test目录,且默认有acl挂载选项
1.创建一个2G大小的硬盘
2.激活硬盘
echo '- - -' > /sys/class/scsi_host/host2/scan (如果没有激活,把host2改为host0试试)
3.查看硬盘是否激活
lsblk
4.创建一个块大小为2048byte,预留1%可用空间,文件系统ext4,卷标为TEST的文件系统(回车后系统会询问,输入 y 就行了)
mkfs.ext4 -b 2048 -m 1 -L TEST /dev/sdb
5.显示所有文件系统名 uuid 文件系统类型
blkid /dev/sdb
6.列出文件系统的详细信息
tune2fs -l /dev/sdb
7.编写/etc/fstab,插入下列内容
vim /etc/fstab
UUID=f04671f4-6f99-4236-815c-2d8fc31d5666 /test ext4 acl 0 0
8.挂载
mount -a
9.查看结果
mount