Linux系统中的磁盘和文件系统管理,之所以将二者放在一起总结,是因为在平时的工作中,二者是相辅相成的,常常用来一起使用。
首先介绍下磁盘分区的管理工具
常用的磁盘分区管理工具有fdisk,parted,sfdisk
这里我们介绍下常用的fdsik工具
fdisk -l [DEVICE]... :列出指定磁盘设备上的分区情况
fdisk [DEVICE]:创建分区
fdisk提供了一个交互式接口来管理分区,它有许多子命令,分别用于不同的管理功能;所有的操作均在内存中完成,没有直接同步到磁盘;直到使用w命令保存至磁盘上;
常用命令:
n:创建新分区
d:删除已有分区
t:修改分区类型
l:查看所有已有ID
w:保存并退出
q:不保存退出
m:查看帮助信息
p:显示现有分区信息
注意:在已经分区并且已经挂载其中某个分区的磁盘设备上创建的新分区,内核可能在创建完成后无法直接识别;
这时我们查看内核是否已经识别新的分区:cat /proc/partitions
对于已有分区处于使用状态的磁盘来讲,新建分区后需要让内核重读其分区表:
通知内核强制重读磁盘分区表:
centos5:partprobe[device]
centos6,7:partx,kpartx
partx -a [device]
kpartx -af [device]
这里给大家补充下删除磁盘分区后的同步方法:
centos5,7:partprobe[device]
centos6:partx -d --nr #(分区号) [DEVICE]
有时我们添加新的物理磁盘时,通常情况下我们需要重启系统才能让系统检查新加入的磁盘,这里给大家介绍一种小技巧,可是在不重启的情况下检查新加入的硬盘
echo "- - -" > /sys/class/scsi_host/host2/scan
介绍完磁盘管理工具,下面来说说Linux文件系统管理
首先来说下Linux文件系统的分类
VFS:Virtual File System
Linux的文件系统:ext2,ext3,ext4,xfs,reiserfs,btrfs
光盘:iso9660
网络文件系统:nfs,cifs
集群文件系统:gfs2,ocfs2
内核级分布式文件系统:ceph
Windows文件系统:vfat,ntfs
伪文件系统:proc,sysfs,tmpfs,hugepagefs
unix的文件系统:UFS,FFS,JFS
交换文件系统:swap
用户空间的分布式文件系统:mogilefs,moosefs,glusterfs
根据是否支持日志功能还可分为:
日志型文件系统:ext3,ext4,xfs
非日志型文件系统:ext2,vfat
在介绍如何创建文件系统之前,先为大家介绍下文件系统的管理工具
创建文件系统工具:mkfs
mkfs.ext2,mkfs.ext3,mkfs.ext4,mkfs.xfs..
检测及修复文件系统的工具:fsck
fsck.ext2,fsck.ext3,...
查看其属性的工具:dumpe2fs,tune2fs
调整文件系统特性:tune2fs
下面我们们来详细介绍下以上提到的文件系统的管理工具
mkfs命令:make file system
-t FSTYPE [DEVICE]
mkfs -t FSTYPE=mkfs.FSTYPE
mkfs -t ext4=mkfs.ext4
-L‘LABEL‘:设定卷标
ext系列文件系统专用管理工具:mke2fs
mke2fs[OPTIONS] device
-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与字节的比率;既每多少字节创建一个inode;
-N#:直接指明要给此文件系统创建的inode的数量;
-m#:指定预留的空间,百分比;
-O[^]FEATURE:以指定的特性创建目标文件系统;加^表示关闭此特性;
e2label命令:卷标的查看与设定
查看:e2label device
设定:e2label device LABEL
tune2fs命令:查看或修改ext系列文件系统的某些属性
adjust tunable filesystem parameters on ext2/ext3/ext4 filesystems
注意:块大小创建后无法改变
tune2fs [OPTIONS] device
-l:查看超级块儿内容;
修改指定文件系统的属性:
-j:ext2-->ext3;
-L LABEL:修改卷标;
-m #:调整预留空间百分比
-O [^]FEATURE:开启或关闭某种特性
-o [^] mount_options:开启或关闭某种默认挂载选项;
acl:启用acl
^acl:关闭acl
dumpe2fs命令:显示ext系列文件系统的属性信息
dumpe2fs [-h] device
fsck:用于实现文件系统检测的工具
因进程意外终止或系统崩溃等原因导致操作系统非正常终止时,可能会造成文件损坏;此时,应检测并修复文件系统;建议:离线进行;
ext系列文件系统的专用工具:e2fsck
e2fsck [OPTIONS] device
-y:对所有文件自动回答为yes;
-f:即使文件系统处于clean状态,也要强制进行检测;
fsck:check and repair a linux file system
-t fstype:指明文件系统类型;
fsck -t ext4=fsck.ext4
-a:无须交互而自动修复所有错误;
-r:交互式修复
blkid命令:
blkid device
blkid -L LABEL:根据LABEL定位设备
blkid -U UUID:根据UUID定位设备
文件系统的挂载
此前我们创建的磁盘分区,在格式化完成之后要想被使用,就必须先挂载,
根文件系统之外的其它文件系统要想被访问,都必须通过“关联”至根文件系统上的某个目录来实现,此关联操作即为"挂载";此目录即为“挂载点”;
Linux系统上的固定挂载点为:/mnt,/media
挂载点:mount_point,用于作为另一个文件系统的访问入口;
1.事先存在;
2.应该使用未被或不会被其它进程使用到的目录;
3.挂载点下原有的文件将会被隐藏;
mount命令:
mount [-nrw] [-t vfstype] [-o options] device dir
命令选项:
-r:readonly,只读挂载;
-w:read and write,读写挂载;
-n:默认情况下,设备挂载或卸载的操作会同步更新至/etc/mtab文件中;-n用于禁止此特性;
-t vfstype:指明要挂载的设备上的文件系统的类型;多数情况下可省略,此时mount会通过blkid来判断要挂载的文件系统类型;
-L LABEL:挂载时以卷标的方式指明设备
mount -L LABEL dir
-U UUID:挂载时以UUID的方式指明设备;
mount -U UUID dir
-o options:挂载选项
sync/async:同步/异步操作;
atime/noatime:文件或目录在被访问时是否更新其访问时间戳;
diratime/nodiratime:目录在被访问时是否更新其访问时间戳;
remount:重新挂载;
acl:支持使用facl功能;
# mount -o acl device dir
# tune2fs -o acl device
ro:只读
rw:读写
dev/nodev:此设备上是否允许创建设备文件;
exec/noexec:是否允许运行此设备上的程序文件;
auto/noauto:
user/nouser:是否允许普通用户挂载此文件系统;
suid/nosuid:是否允许程序文件上的suid和sgid特殊权限生效;
defaults:Use default options: rw, suid, dev, exec, auto, nouser, async, and relatime.
一个使用技巧:
可以实现将目录绑定至另一个目录上,作为其临时访问入口;
mount --bind 源目录 目标目录
查看当前系统所有已经挂载的设备;
# mount
# cat /etc/mtab
# cat /proc/mounts
挂载光盘:
mount -r /dev/cdrom mount_point
光盘设备文件:/dev/cdrom,/dev/dvd
挂载U盘:
事先识别U盘的设备文件:
挂载本地的回环设备:
#mount -o loop /PATH/TO/SOME_LOOP_FILE MOUNT_POINT
umount命令:
umount device | dir
注意:正在被访问到的挂载点无法被卸载;
查看被哪个或哪些进程所占用;
#lsof MOUNT_POINT
#fuser -v MOUNT_POINT
终止所有正在访问某挂载点的进程:
#fuser -km MOUNT_POINT
挂载交换分区
交换分区的启用和禁用:
创建交换分区的命令:mkswap
启用:swapon
swapon[OPTION][DEVICE]
-a :定义在/etc/fstab文件中的所有swap设备
禁用:swapoff
swapoff DEVICE
设定除根文件系统以外的其它文件系统能够开机时自动挂载:/etc/fstab文件
每行定义一个要挂载的文件系统及相关属性;
6个字段:
1.要挂载的设备;
设备文件;
LABEL
UUID
伪文件系统:如sysfs,proc,tmpfs等
2.挂载点
swap类型的设备的挂载点为swap;
3.文件系统类型;
4.挂载选项:
defaults:使用默认挂载选项;
如果要同时指明多个挂载选项,彼此之间使用逗号隔开;
5.转储频率:
0:从不备份;
1:每天备份;
2:每隔一天备份
6.自检次序
0:不自检
1:首先自检,通常只能是根文件系统可用1;
2:次级自检:
...
mount -a:可自动挂载定义在此文件中的所有支持自动挂载的设备;
两个命令:df和du
df命令:
df[OPTION]...[FILE]...
-l:仅显示本地文件的相关信息;
-h:human-readable
-i:显示inode的使用状态而非blocks
du命令:
du [OPTION]...[FILE]...
-s:sumary 显示目录时显示所有文件大小之和
-h:human-readable
文件系统的卸载
卸载:挂载点没有被进程访问时方可被卸载;
卸载命令:umonut DEVICE 或者 unmont MOUNT_POINT
在卸载之前最好是查看下哪些进程正在访问挂载的设备,可使用:
fuser -v 挂载点
如果有程序正在使用该设备,并且想终止正在此挂载点的进程,则可使用:
fuser -km 挂载点
本文出自 “11798474” 博客,请务必保留此出处http://11808474.blog.51cto.com/11798474/1843403
原文地址:http://11808474.blog.51cto.com/11798474/1843403