Linux文件系统管理

Posted liang-yao

tags:

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

分区类型: 

MBR:最大支持2T硬盘,最多支持4个主分区

GPT:最大支持容量18EB(EB=1024PB,PB=1024TB),单个分区最大支持1EB容量,理论上支持无限个磁盘分区

文件系统:

ext4: ext4向下兼容于ext3与ext2;子目录最高可达64000,使用“dir_nlink”功能后可以达到更高(虽然父目录的link count会停止增加)。为了避免性能受到大量目录的影响,ext4默认打开Htree(一种特殊的B树)索引功能。该功能已经实现于Linux核心2.6.23版

 

df 查看挂载点和磁盘使用量

-a 显示所有文件系统信息

-h 使用常用单位显示容量,如MB、GB、TB

-i 显示Inode信息

-T 显示文件系统类型

 

du 统计目录或文件大小

-a 显示每个文件而非目录的磁盘占用量

-h 使用常用单位显示磁盘占用量

-s 统计总占用量而非子目录和子文件的占用量

 

dudf的区别

df是从文件系统考虑的,不光要考虑文件占用的空间,还要统计被命令或程序占用的空间

du是面向文件的,只计算文件或目录占用的空间

 

fsck 文件系统修复(适用于ext文件系统)

-a 不用显示用户提示,自动修复文件系统

-y 自动修复,和-a一致,不过有些文件系统只支持-y

xfs_repair 文件系统修复(适用于xfs文件系统)修复前,建议使用xfs_metadump备份元数据

-n 检查文件系统是否损坏,损坏将会列出要执行的操作

修复失败方法(慎重):

-L 清空日志,可能丢失部分数据,然后执行xfs_repair

 

dumpe2fs 显示磁盘状态(适用于ext文件系统)

xfs_info 显示磁盘状态(适用于xfs文件系统)

 

mount 挂载文件系统

–a 依据/etc/fstab/的内容,自动挂载

-t 加入文件系统类型来指定挂载的类型,可以ext3、ext4、iso9660等文件系统

-o 可以指定挂载的额外选项

 

atime/noatime 更新访问时间/不更新访问时间。访问分区文件时,是否更新文件的访问时间,默认更新
async/syna 异步/同步,默认为异步
auto/noauto 自动/手动,mount –a执行时,是否自动安装/etc/fstab/文件内容挂载,默认为自动
defaults 定义默认值,相当于rw,suid,dev,exec,auto,nouser,async这七个选项
exec/noexec 执行/不执行,设定是否允许在文件系统中执行可执行文件,默认是exec允许
remount 重新挂载已经挂载的文件系统,一般用于指定修改特殊权限
rw/ro 读写/只读,文件系统挂载时,是否具有读写权限,默认是w
suid/nosuid 具有/不具有suid权限,设定文件系统是否具有suid和sgid的权限,默认有
user/nouser 允许/不允许普通用户挂载,设定文件系统是否允许普通用户挂载,默认不允许,只有root可以挂载分区
usrquota 写入代表文件系统支持用户磁盘配额,默认不支持
grpquota 写入代表文件系统支持组磁盘配额,默认不支持

例:mount -o remount,noexec /home 不允许在文件系统中执行可执行文件(不要选根分区,我的centos7 /home不知道为什么不能挂,直接挂根分区试试,成功后啥命令都无法执行了)

 技术分享图片

挂载光盘步骤:

mkdir /mnt/cdrom

mount /dev/sr0 /mnt/cdrom

卸载光盘:(注:不能在cdrom目录卸载光盘,否则会提示目标忙)

umount /dev/sr0或

umount /mnt/cdrom

 

挂载U盘步骤

fdisk –l 先查看U盘设备名

mkdir /mnt/upan

[[email protected] ~]# mount -t vfat /dev/sdb2 /mnt/upan

卸载U盘:(注:不能在upan目录卸载U盘,否则会提示目标忙)

umount /dev/sdb2

 

支持NTFS文件系统-NTFS_3G

NTFS_3G安装:(安装源码包必装gcc)

下载NTFS_3G及其依赖的fuse-2.9.3

先安装fuse-2.9.3

tar xzvf fuse-2.9.3.tar.gz

cd fuse-2.9.3

./configure&&make&&make install

安装NTFS_3G

tar xzvf ntfs-3g-1.328.tgz

cd ntfs-3g-1.328

./configure&&make&&make install

 

mount -t ntfs-3g /dev/sdb4 /mnt/ntfs 挂载NTFS硬盘

 

fdisk -l 列出所有可用分区类型

fdisk /dev/sdb 为硬盘分区

a 设置可引导标记
b 编辑bsd磁盘标签
c 设置dos操作系统兼容标记
d 删除一个分区
l 显示已知的文件系统类型,82为swap分区,83为Linux分区
m 显示帮助
n 新建分区
o 建立空白dos分区表
p 显示分区列表
q 不保存退出
s 新建空白SUN磁盘标签
t 改变一个分区的系统ID
u 改变显示记录单位
v 验证分区表
w 保存退出
x 附加功能(仅专家)

 

partprobe 让内核同步分区信息

mkfs -t ext4 /dev/sdb1 格式化为ext4分区

 

/etc/fstab文件:

UUID=fd370686-828c-49bf-ba6c-c000d0a47ecc /boot                   xfs     defaults        0 0

第一字段:分区设备文件名或UUID(硬盘通用唯一识别码)

第二字段:挂载点

第三字段:文件系统名称

第四字段:挂载参数

第五字段:指定分区是否被dump备份,0不备份,1每天备份,2不定期备份

第六字段:指定分区是否被fsck检测,0代表不检测,其他数字代表检测的优先级,1的优先级比2的优先级高

修改此文件后可以根据mount -a来检测错误

 

当开机提示分区找不到时,可输入root用户密码,然后执行mount -o remount,rw /

技术分享图片

 

然后编辑/etc/fstab改正错误,执行mount -a检测错误

free 查看内存和swap分区使用情况

cached(缓存):是指读取出来的数据保存在内存中,当再次读取时,直接从内存读取,加速数据的读取

buffer(缓冲):是指写入数据时,先把分散的写入操作保存在内存中,当达到一定程度在集中写入硬盘,减少磁盘碎片和硬盘反复寻道,加速数据写入过程

增加swap分区:

[[email protected] ~]# fdisk /dev/sdb

命令(输入 m 获取帮助):n

Select (default p): e #先创建逻辑分区,在创建扩展分区

分区号 (2-4,默认 2):2

起始 扇区 (1050624-4194303,默认为 1050624):

Last 扇区, +扇区 or +size{K,M,G} (1050624-4194303,默认为 4194303):+1024M

命令(输入 m 获取帮助):n

Select (default p): l #创建扩展分区

起始 扇区 (1052672-3147775,默认为 1052672):

Last 扇区, +扇区 or +size{K,M,G} (1052672-3147775,默认为 3147775):+512M

命令(输入 m 获取帮助):t #把分区文件系统更改为82 swap

分区号 (1,2,5,默认 5):5

Hex 代码(输入 L 列出所有代码):82

命令(输入 m 获取帮助):w

The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: 设备或资源忙.

The kernel still uses the old table. The new table will be used at

the next reboot or after you run partprobe(8) or kpartx(8)

#分区表读取失败,执行下列命令重新读取分区表

[[email protected] ~]# partprobe

[[email protected] ~]# mkswap /dev/sdb5 #格式化

[[email protected] ~]# swapon /dev/sdb5 #加入swap分区

[[email protected] ~]# swapoff /dev/sdb5 #取消swap分区

[[email protected] ~]# vim /etc/fstab #swap分区开机自动挂载

/dev/sdb5       swap swap    defaults        0 0

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

Linux里面文件系统都有哪些?

linux文件系统类型

linux系统中对文件系统的原理进行分析

Linux文件系统操作命令

Linux文件系统的演变

linux kernel 文件系统编程接口