文件系统
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文件系统相关的知识,希望对你有一定的参考价值。
磁盘没有文件系统 对其读取是以二进制读取
文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的 系统。具体地说,它负责为用户建立文件,存入、读出、修 改、转储文件,控制文件的存取,安全控制,日志,压缩, 加密等 对磁盘进行格式化
显示支持的文件系统: ls /lib/modules/`uname –r`/kernel/fs
根据其是否支持"journal"功能:journal 日志
日志型文件系统: ext3, ext4, xfs, ...
非日志型文件系统: ext2, vfat
文件系统的组成部分:
内核中的模块:ext4, xfs, vfat
用户空间的管理工具:mkfs.ext4, mkfs.xfs,mkfs.vfat
1.创建文件系统
mkfs命令:
v(1) mkfs.FS_TYPE /dev/DEVICE
ext4
xfs
btrfs
vfat
(2) mkfs -t FS_TYPE /dev/DEVICE -L 'LABEL': 指明文件类型并设定卷标
-b {1024|2048|4096} 块大小 mkfs.xfs -b 1024 /dev/sdc 里面文件至少占1024
块大小为磁盘扇区(512字节) 的整数倍
2.创建ext文件系统
mke2fs:ext系列文件系统专用管理工具
-t {ext2|ext3|ext4}
-b {1024|2048|4096} 创建后无法更改
-L 'LABEL' 卷标 一般为 挂载目录 mkdir /mnt/ss4 mount /dev/sdd1 /mnt/ss4
-j: 相当于 -t ext3
mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs -t ext3
-i #: 为数据空间中每多少个字节创建一个inode;此大小不应该小于block的大小
-N #:指定分区中创建多少个inode
-I 一个inode记录占用的磁盘空间大小,128---4096
-m #: 默认5%,为管理人员预留空间占总空间的百分比
-O FEATURE[,...]:启用指定特性
-O ^FEATURE:关闭指定特性
3.ext系列文件系统参数调整 不能调整block大小
tune2fs:重新设定ext系列文件系统可调整参数的值
-l:查看指定文件系统超级块信息;super block
-L 'LABEL':修改卷标
tune2fs /dev/sdd1 -L /mnt/ss4
-m #:修预留给管理员的空间百分比
-j: 将ext2升级为ext3
-O: 文件系统属性启用或禁用, –O ^has_journal
-o: 调整文件系统的默认挂载选项,–o ^acl
-U UUID: 修改UUID号
4.文件系统标签
blkid:块设备属性信息查看
vblkid [OPTION]... [DEVICE]
-U UUID: 根据指定的UUID来查找对应的设备
-L LABEL:根据指定的LABEL来查找对应的设备
ve2label:管理ext系列文件系统的LABEL
e2label DEVICE [LABEL]
vfindfs :查找分区
findfs [options] LABEL=<label>
findfs LABEL=/mnt/ss4
findfs [options] UUID=<uuid>
findfs UUID=9e141ad2-0d2f-4668-963e-bf2c4d01c4d2
[[email protected] fs]$mkfs.ext4 /dev/sdd1
[[email protected] fs]$blkid
/dev/sdd1: UUID="3e7988c1-6f1a-4fe8-b6a2-68cad8553fdc" TYPE="ext4"
[[email protected] fs]$mkfs -t ext3 /dev/sdd1
/dev/sdd1: UUID="afc398dd-2c59-4c7b-b1b4-3d42d46a85f6" SEC_TYPE="ext2" TYPE="ext3"
[[email protected] fs]$tune2fs -l /dev/sdd1
(默认特性)Filesystem features: has_journal ext_attr resize_inode dir_index filetype sparse_super large_file
[r[email protected] fs]$tune2fs -O ^has_journal /dev/sdd1
[[email protected] fs]$blkid
/dev/sdd1: UUID="afc398dd-2c59-4c7b-b1b4-3d42d46a85f6" TYPE="ext2" ex3与ex2多了日志功能
5.文件系统检测和修复
常发生于死机或者非正常关机之后
挂载为文件系统标记为“no clean”
v 注意:一定不要在挂载状态下修复
vfsck: File System Check fsck.FS_TYPE fsck -t FS_TYPE
-p: 自动修复错误
-r: 交互式修复错误 FS_TYPE一定要与分区上已经文件类型相同
ve2fsck:ext系列文件专用的检测修复工具
-y:自动回答为yes
-f:强制修复
注:fsck 扫描文件系统时一定要在单用户模式、修复模式或把设备umount后进行。
文件系统的修复 顶多修复的是文件系统的元数据 并不能修复其内容
dumpe2fs DEVICE: 查看文件系统详细信息
块分组管理,32768块 一组
-h:查看超级块信息,不显示分组信息
Primary superblock at 0主要超块0
Superblock backups stored on blocks: 备份超级块
[[email protected] ~]$dumpe2fs /dev/sdd1 | grep -i "superblock"
dumpe2fs 1.42.9 (28-Dec-2013)
Primary superblock at 0, Group descriptors at 1-1
Backup superblock at 32768, Group descriptors at 32769-32769
Backup superblock at 98304, Group descriptors at 98305-98305
Backup superblock at 163840, Group descriptors at 163841-163841
Backup superblock at 229376, Group descriptors at 229377-229377
Backup superblock at 294912, Group descriptors at 294913-294913
[[email protected] ~]$dd if=/dev/zero of=/dev/sdd1 bs=1M count=1 破坏sdd1 主要超快0 (Reserved GDT blocks at 2-256) 256x4(块大小)=1M 全局描述符表GDT损坏
[[email protected] ~]$dumpe2fs /dev/sdd1
dumpe2fs 1.42.9 (28-Dec-2013)
dumpe2fs: Bad magic number in super-block while trying to open /dev/sdd1
Couldn't find valid filesystem superblock.
[[email protected] ~]$fsck /dev/sdd1 未挂载状态下修复
[[email protected] ~]$dumpe2fs /dev/sdd1 | grep -i "superblock"
Backup superblock at 163840, Group descriptors at 163841-163841
6.用mount命令挂载文件系统
挂载:将额外文件系统与根文件系统某现存的目录建立起关联 关系,进而使得此目录做为其它文件访问入口的行为,无文件系统无法挂载
v 挂载点下原有文件在挂载完成后会被临时隐藏
v 挂载点目录一般为空
v 卸载时:可使用设备, 也可以使用挂载点 umount 但当挂载设备被访问时,不能取消该设备挂载
多个设备分区不允许同1个挂载点
1个设备分区可以多个挂载点
mount [-fnrsvw] [-t vfstype] [-o options] device dir
-n: 不更新/etc/mtab,mount不可见 cat /proc/mounts可查看
-B, --bind: 绑定目录到另一个目录上
给文件创建文件系统
[[email protected] ~]#dd if=/dev/zero of=/app/cantest bs=1M count=100 文件
[[email protected] ~]mke2fs -t ext4 /app/cantest
[[email protected] ~]#blkid /app/cantest 在centos6中 cantest为文件 查看属性需要跟详细路径
/app/cantest: UUID="50955518-b925-4b14-b127-7b13d671ca62" TYPE="ext4"
对文件挂载目录
[[email protected] ~]#mkdir one
[[email protected] ~]#mount /app/file one
mount: /app/file is not a block device (maybe try `-o loop'?) 不是块设备不能定义block大小
[[email protected] ~]#mount -o loop /app/file one 对文件进行挂载 需要使用loop设备进行挂载 ls /dev/loop*
[[email protected] ~]#mount
/app/file on /root/one type ext4 (rw,loop=/dev/loop0)
在centos6中 /dev/loop*设备不够 可手动创建
[[email protected] ~]#ll /dev/loop*
brw-rw----. 1 root disk 7, 7 Aug 1 21:14 /dev/loop7
[[email protected] ~]#mknod /dev/loop8 b 7 8
[[email protected] ~]#cp /app/file{,1}
[[email protected] ~]#blkid /app/file{,1}
/app/file: UUID="add5eca5-be19-4603-bd20-ba40f28017a0" TYPE="ext4"
/app/file1: UUID="add5eca5-be19-4603-bd20-ba40f28017a0" TYPE="ext4" 复制保留文件系统特性
目录挂载目录
[[email protected] ~]#mount -B /etc /app
[[email protected] ~]#ls /app
abrt drirc latrace.conf pinforc screenrc
acpi enscript.cfg latrace.d pkcs11 securetty
[[email protected] ~]#ls /etc
abrt drirc latrace.conf pinforc screenrc
acpi enscript.cfg latrace.d pkcs11 securetty
像文件的硬链接 但实现了跨分区
mount常用命令选项
-o options:(挂载文件系统的选项),多个选项使用逗号分开
atime/noatime:包含目录和文件 不刷新访问时间 适用于web服务器
[[email protected] ~]#mount -B -o noatime /etc one one访问/etc文件目录 不刷新访问时间
diratime/nodiratime:目录的访问时间戳
suid/nosuid:不否支持suid和sgid权限
remount:重新挂载 不用取消在挂载 mount -o remount MOUNT_POINT|device
[[email protected] ~]#mount /mnt/cdrom /mnt/sdd2
挂载后重挂载
[[email protected] ~]#umount /mnt/sdd2
[[email protected] ~]#mount -o dev /mnt/cdrom /mnt/sdd2
等同于
[[email protected] ~]#mount -o remount,dev /mnt/sdd2|mnt/cdrom
defaults(默认挂载选项):相当于rw, suid, dev, exec, auto, nouser, async
v 查看正在访问指定文件系统的进程
lsof 查看那个进程,那个用户打开了某个文件,目录等信息。
lsof MOUNT_POINT
fuser -v MOUNT_POINT
v 终止所有在正访问指定的文件系统的进程 fuser -km MOUNT_POINT
v 取消挂载 umount DEVICE
umount MOUNT_POINT
查看挂载情况
findmnt MOUNT_POINT|device
echo $?
7.挂载点和/etc/fstab
v 配置文件系统体系
cat /etc/fstab
v 被mount、fsck和其它程序使用
v 系统重启时保留文件系统体系
v 可以在设备栏使用文件系统卷标
v 使用mount -a 命令挂载/etc/fstab中的所有文件系统带 defaults(默认挂载选项)立即生效 试用于一般挂载 不适合文件 目录 swap 要 使用mount -o remount /dev/sdd 重挂立即生效
设备名、卷标 、UUID都可以描述设备 由于设备名位置可能发生变化以及卷标可能重复性 ,在设备的配置文 件中描述设备最好用UUID 文件系统的通用唯一标识符UUID
处理交换文件和分区
v 交换分区是系统RAM的补充 v不能存放数据 直接进行数据交换
基本设置包括:
? 创建交换分区或者文件
? 使用mkswap写入特殊签名
? 在/etc/fstab文件中添加适当的条目
? 使用swapon -a 激活交换空间
挂载交换分区
指明优先级swapon -p PRIORITY:指定优先级 /etc/fstab:pri=value
使用文件作为交换分区
--生成文件 大小1G
[[email protected] ~]$dd if=/dev/zero of=swapfile bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 29.1077 s, 36.9 MB/s
--将生成的文件格式化成交换分区:
[[email protected] ~]$mkswap swapfile
Setting up swapspace version 1, size = 1048572 KiB
no label, UUID=863bfe20-417e-4905-af91-603e2a1d48f9
--启动swapfile分区 并查看状态
[[email protected] ~]$swapon swapfile
swapon: /root/swapfile: insecure permissions 0644, 0600 suggested. 建议修改权限为0600
--重启生效写入/etc/fstab
echo "UUID=863bfe20-417e-4905-af91-603e2a1d48f9 swap swap defaults 0 0">>/etc/fstab
删除交换分区文件
(1)回收交换文件
swapoff ~/swapfile
(2 )去除/etc/fstab中的该行
(3)删除该文件
rm ~/swapfile
使用磁盘作为交换分区
--创建sdc3 分区作为swap分区
[[email protected] ~]$fdisk /dev/sdc
--修改为swap分区
Command (m for help): t 指定挂载选项
Partition number (1-3, default 3): 3
Hex code (type L to list all codes): 82 centos7为8200
--格式化分区使其生效 相对于构建文件系统
[[email protected] ~]$mkswap /dev/sdc3
Setting up swapspace version 1, size = 10484732 KiB
no label, UUID=b95483f9-351d-4e26-96fc-06055a19f321
[[email protected] ~]$swapon -s
Filename Type Size Used Priority 优先级
/dev/sda3 partition 1952764 57132 -1
/root/swapfile file 1048572 0 -2
/dev/sdc3 partition 10484732 0 -3
--在/etc/fstab下修改配置文件 并指明优先级
[[email protected] ~]swapon -p 100 /dev/sdc3
--查看swap分区使用状况
[[email protected] ~]$free -m
total used free shared buff/cache available
Mem: 1824 575 75 16 1174 1017
Swap: 13169 55 13114
--关机交换分区
[[email protected] ~]$swapoff /dev/sdc3
swap能应物理内存的使用情况 当free命令中swap使用率较高时,说明内存不足,须加内存
光盘挂载
mount /dev/cdrom MOUNT_POINT
/dev/cdrom(挂载盘) 通用 软连接于sr0
创建ISO文件 cp /dev/cdrom /root/centos7.iso
mkisofs -r -o /root/etc.iso /etc 针对etc 打包成root下etc.iso文件
设置光盘挂载
mount /dev/cdrom /mnt/cdrom
开启自动挂载
在 7中 systemctl start autofs 没有此服务 安装 autofs包 systemctl enable autofs 开机自启
6: service autofs start
#cd /misc/cd
写入/etc/fstab配置文件
练习:
1、创建一个2G的文件系统,块大小为2048byte,预留1%可用空间,文件系统ext4,卷标为TEST,要求此分区开机后自动挂载至/test目录,且默认有acl挂载选项
mkfs.ext4 -b 2048 -m 1 -O acl /dev/sdb1 -L TEST -L TEST 需跟在后面
mount /dev/sdb1 /test
/dev/sdc2 /test ext4 defaults,acl 0 0
2、写一个脚本,完成如下功能:
(1) 列出当前系统识别到的所有磁盘设备
(2) 如磁盘数量为1,则显示其空间使用信息
否则,则显示最后一个磁盘上的空间使用信息
3.实现CentOS-6.9-x86_64-bin-DVD1 CentOS-6.9-x86_64-bin-DVD2 两张光盘合为一张iso镜像文件 并设置为yum源
cp centos6-DVD1
[[email protected] ~]#mkdir centos6
[[email protected] ~]#cp -r /media/CentOS_6.9_Final/* centos6
[[email protected] ~]#ls centos6
CentOS_BuildTag isolinux RPM-GPG-KEY-CentOS-Debug-6
EFI Packages RPM-GPG-KEY-CentOS-Security-6
EULA RELEASE-NOTES-en-US.html RPM-GPG-KEY-CentOS-Testing-6
GPL repodata TRANS.TBL
images RPM-GPG-KEY-CentOS-6
挂载centos6-DVD2 dvd2与dvd1就Packages下文件不同
[[email protected] ~]#cp -r /media/CentOS_6.9_Final/Packages/* centos6
[[email protected] ~]#./mkdvdiso.sh centos6 /app/CentOS-6-x86_64-Everything.iso
Error: /usr/bin/implantisomd5 Not Found!
Please install isomd5sum and try again.
[[email protected] ~]#yum install isomd5sum
[[email protected] ~]#./mkdvdiso.sh centos6 /app/CentOS-6-x86_64-Everything.iso
以上是关于文件系统的主要内容,如果未能解决你的问题,请参考以下文章