一、Linux常见文件系统
1、常见文件系统:
ext2---centos5
ext3---centos5
ext4---centos6、7
xfs----centos7(企业级应用推荐使用)
btrfs--centos7(Oracle开发,目前最强大)
reiserfs
jfs
swap---交换分区文件系统,独自占用一个分区,内存不足时将磁盘当做内存使用
iso96609---光盘文件系统
windows光盘系统:fat32(linux也支持叫vfat)、ntfs
Unix光盘系统:FFS 、UFS 、JFS
网络文件系统---NFS 、CIFS
集群文件系统---GFS2 、OCFS2
分布式文件系统---ceph 、moosefs 、GlusterFS 、Lustre
2、日志型文件系统(根据是否支持journal日志功能)---推荐使用日志文件系统
日志型文件系统:ext3 、ext4 、xfs...
非日志型文件系统:ext2 、vfat
3、Linux或centos7上建议使用的文件系统:xfs或者btrfs(特别推荐btrfs)
二、文件系统管理基础
01、查看系统支持的文件系统
cat /proc/filesystems
[root@localhost ~]# cat /proc/filesystems
nodev sysfs
nodev rootfs
nodev ramfs
nodev bdev
nodev proc
nodev cgroup
nodev cpuset
nodev tmpfs
nodev devtmpfs
nodev debugfs
nodev securityfs
nodev sockfs
nodev dax
nodev pipefs
nodev anon_inodefs
nodev configfs
nodev devpts
nodev hugetlbfs
nodev autofs
nodev pstore
nodev mqueue
nodev selinuxfs
xfs
02、查看系统上装载的文件系统内核模块(装在了文件系统内核工具系统才能支持该文件系统)
lsmod
[root@localhost ~]# lsmod
Module Size Used by
ip6t_rpfilter 12595 1
...
dm_mirror 22289 0
dm_region_hash 20813 1 dm_mirror
dm_log 18411 2 dm_region_hash,dm_mirror
dm_mod 123941 8 dm_log,dm_mirror
03、需要掌握的文件系统:
ext4:Centos默认使用的文件系统
xfs:推荐使用的文件xiton
btrfs:极为推荐使用的文件系统
04、Centos上的文件系统管理工具mkfs.*
[root@localhost ~]# mkfs
mkfs mkfs.btrfs mkfs.cramfs mkfs.ext2 mkfs.ext3 mkfs.ext4 mkfs.minix mkfs.xfs
三、文件系统管理命令
1、创建文件系统:将分区按照指定的文件系统规范进行格式化(会导致分区内数据清空)
mkfs命令:
格式:
mkfs.指定文件系统名 选项 /dev/分区
mkfs -t 指定文件系统 选项 /dev/分区
常用选项:
-L "卷标" #指定卷标
-f #强制创建
示例:
创建ext4文件系统
[root@localhost ~]# mkfs.ext4 -L "LogData" /dev/sda3
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=LogData
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
65536 inodes, 262144 blocks
13107 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=268435456
8 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376
Allocating group tables: done
Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done
创建xfs文件系统
[root@localhost ~]# mkfs.xfs -L "LogData" -f /dev/sda3
meta-data=/dev/sda3 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
创建btrfs文件系统
[root@localhost ~]# mkfs -t btrfs -L "LogData" -f /dev/sda3
btrfs-progs v4.9.1
See http://btrfs.wiki.kernel.org for more information.
Label: LogData
UUID: 1ad00a4e-3882-4b82-aa1a-5184e38c28a9
Node size: 16384
Sector size: 4096
Filesystem size: 1.00GiB
Block group profiles:
Data: single 8.00MiB
Metadata: DUP 51.19MiB
System: DUP 8.00MiB
SSD detected: no
Incompat features: extref, skinny-metadata
Number of devices: 1
Devices:
ID SIZE PATH
1 1.00GiB /dev/sda3
mkswap命令:超级交互分区文件系统,将指定分区格式化为swap文件系统
首先使用fdisk件分区的id调整为82,并partx -a重新挂载到内核
mkswap -L "标签" /dev/分区 #将指定分区格式化为swap文件系统
2、块设备属性信息查看(设备UUID及文件系统类型)
blkid 选项 /dev/分区
选项:
-U "UUID" //根据UID查找设备
-L "卷标" //根据卷标查找设备
示例:
[root@localhost ~]# blkid /dev/sda3
/dev/sda3: LABEL="LogData" UUID="1ad00a4e-3882-4b82-aa1a-5184e38c28a9" UUID_SUB="f9b546bd-624c-464d-a01a-7720b86ce530" TYPE="btrfs"
[root@localhost ~]# blkid -L "LogData"
/dev/sda3
[root@localhost ~]# blkid -U "6865eba1-c7ef-4022-9ad7-e90c47c995a8"
/dev/sda3
3、文件系统检查修复
fsck -t 指定文件系统 选项 /dev/分区
-a #检查出错误,自动修复文件系统(可能会自动删除数据)
-r #检查出错误,进入用户交互式修复文件系统
注意:-t指定的文件系统一定要与要检查的分区文件系统已经
4、分区文件系统的挂载及卸载
挂载:将目标分区文件系统与根文件系统现存目录建立关联关系,进而使得此目录成为目标文件系统的访问入口
卸载:解除目标分区文件系统与目录的关联关系
挂载点:Mount Point,一般为目录
注意:挂载目标分区文件系统到目录时,若目录中有文件则挂载后,这些文件将被隐藏
(所以一般挂载点为空目录)
挂载及卸载操作都记录在了/proc/mounts文件及/etc/mtab文件中
挂载命令格式:
mount 选项 /dev/分区 /path//to/dir # 将指定分区文件系统挂载到指定目录
常用选项:
mount #不带选项,显示系统所有分区文件系统的挂载情况
(实质为cat /proc/mounts)
-L "卷标" #使用卷标指明要挂载的分区文件系统
-U "UUID" #使用UUID指明要挂载的分区文件系统
-t "文件系统类型" #指定要挂载的分区的文件系统类型(可省略但不能错)
-r #只读挂载
-w #读写挂载(默认)
-n #挂载操作在/etc/mtab文件中不记录
-a # 自动挂载所有支持自动挂载的设备
-B 或 --bind # 挂载(绑定)一个目录到另一个目录
-o "特性" #指定文件系统的挂载特性
async #异步模式,性能较高
sync #同步模式,数据可靠性高,但性能很差
auto #支持自动挂载(默认)
noauto #不支持自动挂载
exec #文件系统支持运行可执行文件
noexec #文件系统不支持运行可执行文件
dev #文件系统支持使用设备文件
nodev #文件系统不支持使用设备文件
suid #文件系统支持suid特殊权限
nouid #文件系统不支持suid特殊权限
remount #指明为重新挂载
ro #只读挂载
rw #读写挂载
user #允许普通用户挂载管理该分区
nouser #不允许普通用户挂载管理该分区
acl # 启用该分区的acl(访问控制列表)
atime #访问目录和目录下文件更新atime
noatime #访问目录和目录下文件后不更新atime(能提高挂载点的IO性能)
默认挂载选项:rw,suid,dev,exec,auto,nouser,async
以上选项能多个使用,使用逗号分割,也可使用"default,自定义选项"
卸载命令格式:
umount 设备或者挂载点
注意:处于使用状态的挂载设备或者挂载点无法被卸载
查看正在使用指定文件系统的系统进程:
fuser -v 挂载点
(需要安装:yum install -y psmisc)
终止所有正在使用文件系统的进程
fuser -km 挂载点
示例:
[root@localhost ~]# mount /dev/sda5 /data
[root@localhost ~]# mount | grep /dev
/dev/mapper/centos-root on / type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
mqueue on /dev/mqueue type mqueue (rw,relatime,seclabel)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,seclabel)
/dev/sda1 on /boot type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
/dev/sda5 on /data type ext4 (rw,relatime,seclabel,data=ordered)
[root@localhost ~]# mount -o remount,noatime /dev/sda5 /data
[root@localhost ~]# umount /data/
umount: /data: target is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1))
[root@localhost ~]# fuser -v /data/
USER PID ACCESS COMMAND
/data: root kernel mount /data
root 17139 ..c.. bash
root 17157 ..c.. vi
[root@localhost ~]# fuser -km /data/
/data: 17139c 17157c
[root@localhost ~]# umount /data/
[root@localhost ~]# mount | grep /dev
/dev/mapper/centos-root on / type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
mqueue on /dev/mqueue type mqueue (rw,relatime,seclabel)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,seclabel)
/dev/sda1 on /boot type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
5、交互分区的挂载及卸载
启用交换分区:
swapon 选项 /dev/分区
-a #激活所有交换分区
-p num #指定优先级(优先级一致负载轮询)
禁用交换分区:
swapoff /dev/分区
四、ext系列文件系统专用管理工具
1、创建文件系统
mke2fs命令:ext系列文件系统专用管理工具(只能创建etx2、ext3、ext4文件系统)
格式:mke2fs /dev/分区
选项:
-t etx系列文件系统 //指明文件系统
-b "块大小" //指明块大小
-L "卷标" //指明卷标
-i "字节数" //为数据空间中每多少个字节创建inode(字节数应小于块大小)
-N "inde数" //为数据空间创建多少个inode
-m n //为管理人员预留的空间占据的百分比(默认5%)
-O 特性1,特性2... //指明开启指定特性
-O ^特性1 //指明关闭指定特性
示例:
[root@localhost ~]# mke2fs -t ext4 -b 1024 -m 3 -L "DATA" /dev/sda5
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=DATA
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
65536 inodes, 1048576 blocks
31457 blocks (3.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=34603008
128 block groups
8192 blocks per group, 8192 fragments per group
512 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409, 663553,
1024001
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
2、e2label:ext系列文件系统卷标管理
e2label /dev/分区 #查看文件系统卷标
e2label /dev/分区 "卷标" # 设置卷标
3、tune2fs 选项 /dev/分区 # 重新设定ext系列文件系统的可调参数
-l #查看指定分区的文件系统的超级块信息
-L '卷标' #修改指定分区文件系统的卷标
-m n #修改指定分区文件系统的预留空间n%
-o #调整文件系统的默认挂载选项
-O #启用或者禁用文件系统特性
-U UUID #修改指定分区文件系统的UUID
4、dumpe2fs -h /dev/分区 # 查看指定分区文件系统的超级块信息
5、e2fsck 选项 /dev/分区:ext系列文件专用检测工具
-y #检测出问题,修复时自动应答为y
-f #强制修复
五、分区文件系统挂载配置文件:/etc/fstab
[root@localhost ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Mon Mar 2 14:48:56 2020
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root / xfs defaults 0 0
UUID=e76b3af5-9b41-4604-9a8b-2aa001412264 /boot xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
字段说明:
要挂载设备 挂载点 分区文件系统类型 挂载特性 转储频率 自检次序
-要挂载的设备:
设备文件:/dev/设备名
设备文件LABAL:LABAL="LABAL名"
设备的UUID:UUID="对应设备的UUID"
伪文件系统:伪文件系统名称
挂载点:
/path/to/dir
swap
分区文件系统类型:
ext4
xfs
btrfs
swap
转储频率:一般为0,即不使用
0 不做备份
1 每天转储备份
2 每隔1天转储备份
自检次序:一般都为0
0 不自检
1 首先自检,一般只有rootfs才用1
2 第二个自检
...
(一般都为0,不使用自检功能,因为自检有问题往往会自动删除文件)
mount -a 自动挂载:按文件格式追加要挂载的设备后执行mount -a实现自动挂载
六、链接文件
硬链接:即为inode创建新的引用路径,因此会增加其引用计数
(不能为文件创建硬链接,不能跨分区创建硬链接)
ln /path/to/src_file /path/to/dest_file #创建硬链接
符号链接:创建的符号链接文件指向另外一个文件路径
ln -s /path/to/src_file /path/to/dest_file #创建符号链接