8.2 磁盘与文件系统的管理命令
磁盘使用与文件系统管理介绍
本节,我们来学习磁盘和文件系统管理的相关命令,我们将按照从磁盘到创建一个可用的文件系统的顺序,逐步讲解相关命令的使用,内容如下:
- 磁盘分区
- 重载内核分区表
- 文件系统管理
- 挂在文件系统
- 其他相关命令
1. 磁盘进行分区
磁盘分区管理主要有 fdisk
,parted
,sfdisk
三个命令。掌握一个即可,我们主要来学习 fdisk
。fdisk
提供了一个交互式接口来管理分区,它有许多子命令,分别用于不同的管理功能;所有的操作均在内存中完成,不会直接同步到磁盘,直到使用w命令保存至磁盘上。fdisk 命令的使用方式如下
查看磁盘的分区信息:
fdisk -l [device...]
- 作用: 列出指定磁盘设备上的分区情况,默认列出所有磁盘设备的分区情况
- 参数:
device
设备文件名
cat /proc/partitions
- 作用: 查看内核分区信息
管理分区
fdisk device
- 作用: 管理分区,进入 fdisk 交互式管理界面
|
|
2. 重载内存分区表
在已经分区并且已经挂载其中某个分区的磁盘设备上创建的新分区,内核可能在创建完成后无法直接识别;需要通知内核强制重读磁盘分区表。可用命令有如下三个:
partprobe
partprobe [device]
- 作用: inform the OS of partition table changes
- 附注: CentOS 5 仅能使用此命令
partx
partx [-a|-u] device
- 作用: tell the Linux kernel about the presence and numbering of on-disk partitions
- 选项:
-a
: 向内核添加所有分区表-u
: 向内核更新分区表-l
: 列出分区表-s, --show
: 显示分区表详细信息-n, --nr M:N
: 与-s
一起使用,限制显示的行-o, --output list
: 与-s
一起使用,限制显示的列
kpartx
kpartx -af device
- 作用: Create device maps from partition tables
3. 文件系统管理
3.1 文件系统创建
Windows无法识别Linux的文件系统; 因此,存储设备需要两种系统之间交叉使用时,应该使用windows和Linux同时支持的文件系统:fat32(vfat)。mkfs.vfat device
mkfs
mkfs -t fs_type device
- 作用: 通用的文件系统创建命令,内部会调用特定文件系统的创建命令
- 选项:
-t
指定要创建的文件系统 - eg:
mkfs -t ext4 /dev/sda1
==mkfs.ext4 /dev/sda1
|
|
mke2fs
mke2fs [OPTIONS] device
- 作用: ext系列文件系统专用创建工具
- 选项:
-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
:以指定的特性创建目标文件系统;
mkswap
mkswap [OPTIONS] device
- 作用: 创建swap文件系统
- 选项:
-L LABEL
:指明卷标-f
:强制创建
- 附注:
- Linux上的交换分区必须使用独立的swap文件系统;
- 且文件系统的System ID必须为82;
swapon [OPTION] [DEVICE]
- 作用: 启用交换分区
- 选项:
-a
启用定义在/etc/fstab文件中的所有swap设备;-p #
: 指定此交换设备的优先级
swapoff DEVICE
- 作用: 禁用交换分区
3.2 文件系统查看和修改
e2label
- 作用: 查看与设定 ext 系列文件系统的卷标
- 查看:
e2label device
- 设定:
e2label device LABEL
dumpe2fs
dumpe2fs [-h] device
- 作用: 显示 ext 系列文件系统的属性信息
- 选项:
-h
仅显示超级块信息
tune2fs
tune2fs [OPTIONS] device
- 作用: 查看或修改ext系列文件系统的某些属性
- 注意:块大小创建后不可修改;
- 选项:
-l
:查看超级块的内容;-j
:启动日志功能,即将 ext2 转换为 ext3;-L LABEL
:修改卷标;-m #
:调整预留空间百分比,后跟数字标直接表示百分之几;-O [^]FEATHER
:开启或关闭某种特性;-o [^]mount_options
:开启或关闭某种默认挂载选项tune2fs -0 acl /dev/sda1
: 开启访问控制列表功能tune2fs -0 ^acl /dev/sda1
: 关闭访问控制列表功能
blkid
blkid
- 作用: 显示块设备属性,主要是显示文件系统类型
blkid device
: 查看特定设备所有分区文件系统的类型和属性blkid -L LABEL
:根据LABEL定位设备blkid -U UUID
:根据UUID定位设备
3.3 文件系统检查
因进程意外中止或系统崩溃等原因导致定稿操作非正常终止时,可能会造成文件损坏;此时,应该检测并修复文件系统。建议离线进行,不能让其他用户在正在修复的文件系统中读写文件。Linux 上的文件系统检测工具 fsck
同 mkfs
一样是一个通用的文件系统修复工具
fsck
fsck -t fs_type device
- 作用: check and repair a Linux file system
- 选项:
-t fstype
: 指明文件系统类型;-a
:无须交互而自动修复所有错误;-r
:交互式修复
- eg:
fsck -t ext4 = fsck.ext4
e2fsck
e2fsck [OPTIONS] device
- 作用: ext系列文件系统的专用工具
- 选项:
-y
: 对所有问题自动回答为yes;-f
:即使文件系统处于clean状态,也要强制进行检测
4. 文件系统挂载
根文件系统这外的其它文件系统要想能够被访问,都必须通过“关联”至根文件系统上的某个目录来实现,此关联操作即为“挂载”;此目录即为“挂载点”。Linux 中用于挂载和卸载的命令是 mount
,umount
挂载点,即用于作为另一个文件系统的访问入口,应该具有如下特性:
- 事先存在;
- 应该使用未被或不会被其它进程使用到的目录;
- 挂载点下原有的文件将会被隐藏;
4.1 文件系统挂载
mount [option]... [-t fstype] [-o option] 设备 挂载点
- 作用: 将设备挂载至特定目录
- 设备:
- 设备文件: /dev/sda
- 卷标: -L 卷标
- UUID: -U UUID
- 常用的挂载选项:
-r
: readonly, 只读挂载-w
: read and write, 读写挂载-t
fstype:指明要挂载的设备上的文件系统的类型;多数情况下可省略,此时mount会通过blkid来判断要挂载的设备的文件系统类型;-L
LABEL:以卷标方式指定设备,mount -L MYDATA 挂载点
-U
UUID: 以UUID的方式指定设备,mount -U uuid 挂载点
-a
: 自动挂载所有(/etc/fstab文件中定义的)支持自动挂载的设备-n
: 默认情况下,设备挂载或卸载的操作会同步更新至/etc/mtab文件中;-n用于禁止此特性;-B --bind
: 绑定到目录到另一个目录上
- -o option: 挂载文件系统的选项
async
:异步I/O,数据写操作先于内存完成,而后再根据某种策略同步至持久设备中sync
: 同步I/O,atime/noatime
: 文件和目录被访问时是否更新最近一次的访问时间戳auto/noauto
:设备是否支持mount的-a选项自动挂载diratime/nodiratime
: 目录被访问时是否更新最近一次的访问时间戳dev/nodev
: 是否支持在此设备上使用设备;user/nouser
: 是否允许普通用户挂载此文件设备exec/noexec
: 是否允许执行此设备上的二进制程序文件suid/nosuid
: 是否支持在此设备的文件上使用suidro
: 只读rw
: 读写remount
: 重新挂载,通常用于不卸载的情况下重新指定挂载选项acl
: 启用此文件系统的 acl 功能,默认不支持;defaults
: 默认选项 rw, suid, dev, exec, auto, nouser, and async
- eg:
mount -o acl DEVICE MOUNT_POINT
: 挂载后启动 acl 选型tune2fs -o acl DEVICE
为设备设定默认挂载选项,启动 aclmount -o remount,ro /dev/sda
: 以只读方式重新挂载
4.2 查看已挂载的设备
查看已挂载的设备可使用如下三个命令
mount
cat /etc/mtab
cat /proc/mounts
4.3 特殊设备挂载
挂载文件
mount --bind 源目录 目标目录
:
- 作用: 可以实现将目录绑定至另一个目录上,作为其临时访问入口;
挂载光盘
mount -r /dev/cdrom mount_point
- 光盘设备文件:
- IDE 接口的光盘:
/dev/hdc
- SATA接口的光盘:
/dev/sr0
- 符号链接文件:
/dev/cdrom
/dev/cdrw
: rw 表示是可写光盘/dev/dvd
/dev/dvdrw
: rw 表示可写 dvd
- IDE 接口的光盘:
挂载本地的回环设备
mount -o loop /PATH/TO/SOME_LOOP_FILE MOUNT_POINT
4.4 文件系统卸载
umount device|dir
- 作用: 卸载设备
- 参数: 设备文件或挂载点
- 注意:正在被进程访问到的挂载点无法被卸载,要想查看设备被哪个或哪些进程所战用,可以使用如下命令
lsof MOUNT_POINT
: 查看占用设备的进程fuser -v MOUNT_POINT
: 查看占用设备的用户fuser -km MOUNT_POINT
: 终止所有正在访问某挂载点的进程
4.5 自动挂载
/etc/fstab
文件可用于配置除根文件系统以外的其它文件系统在开机时自动挂载。每行定义一个要挂载的文件系统及相关属性,每行有 6 个字段,从左往右各个字段的含义如下。使用 mount -a
可自动挂载定义在此文件中的所支持自动挂载的设备。需要额外注意的是swap 分区的挂载点永远是 swap, 且自动使用 swapon 挂载
- 挂载的设备:
- 设备文件
- LABEL=""
- UUID=""
- 伪文件系统名称: proc, sysfs, devtmpfs, configfs
- 挂载点:
- 文件系统类型
- 挂载选项:
- 挂载选项可以有多个,彼此间使用逗号分隔;
- 转储频率:作用不大,大多数是 0
- 0:从不转储
- 1: 每天转储
- 2: 每隔一天
- 自检次序:
- 0:不自检,额外创建的文件系统都无须自动自检
- 1:首先自检,通常只有根文件系统需要首先自检
- 2:次级自检,不同的设备可以使用同一个自检次序
- 3
- ….
5. 其他相关命令
其他命令主要包括如下几个命令:
- 手动创建设备文件的 mknod 命令
- 查看磁盘使用量的 df 命令
- 查看文件夹大小的 du 命令
mknod
mknod [OPTION]... NAME TYPE [MAJOR MINOR]
- 作用: 可用于手动创建字符或块设备文件
- 选项:
-m MODE
:创建后的设备文件的访问权限
df
df [OPTION]... [FILE]...
- 作用: 查看已挂载设备的磁盘使用量
- 选项:
-l
:仅显示本地挂载设备的相关信息;-h
:human-readable,以易读的方式显示磁盘使用量-i
:显示inode的使用状态而非blocks-P, --portability
: 使用POSIX格式输出,不会出现换行
du
du [OPTION]... [FILE]...
- 作用: 查看文件夹的大小
- 选项:
-s
: sumary,只显示文件夹的总大小-h
: human-readable 以人类易读方式显示容量大小
|
|