Linux磁盘和文件系统管理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux磁盘和文件系统管理相关的知识,希望对你有一定的参考价值。

    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

以上是关于Linux磁盘和文件系统管理的主要内容,如果未能解决你的问题,请参考以下文章

Linux磁盘及文件系统Linux文件系统

Linux磁盘及文件系统管理1

Linux命令——磁盘操作及文件系统的管理

Linux磁盘和文件系统管理

2018-1-27Linux系统管理磁盘和文件系统管理工具

linux磁盘与文件系统管理/查看硬盘内存空间/文件系统的操作/ 文件的压缩和打包