续Linux磁盘管理part1
软链接
作用就类似windows的快捷方式;
可以快捷的指向另一个文件的特殊文件。
源文件如果删除,快捷方式也就失效了!
ln命令
语法
1 ln [options] [目标文件] [快捷方式]
参数
查询软链接文件本身
我们执行软链接文件时,其实就是执行软链接文件所指的文件,那么软链接文件本身又有什么内容呢?
readlink命令
使用这条命令我们发现,软链接文件内容就是源文件的路径。
硬链接
先复习一下,什么是块?
1个块是8个连续扇区,大小4kb,块是读写最小单位。
创建硬链接 硬链接
一般情况下,文件名和inode号是一一对应的。
软链接的inode号码,是不一样的,代表软链接文件,是两个单个的文件,硬链接的inode号是一样的。
创建命令
使用此命令创建的硬链接,inode号相同!
inode
操作系统中专门用于管理和存储文件的信息软件,称之为文件系统。
文件是以文件数据+文件元信息组成的,文件的inode号+文件的数据内容,代表一个单个文件。
信息系统又称文件元信息(源信息,存放文件的创建信息,修改信息,文件大小,等等)。
文件系统将文件的源信息等等存储在了一个称之为inode区域的地方,中文叫做“索引节点”。
inode大小关系 磁盘在格式化的时候,系统自动的分为两部分,一部分是元数据区域,存放文件的inode信息,另一个是文件数据的内容区域。
每个inode的大小,都是在格式化分区的时候决定的,默认是128字节或者256字节。
1 dumpe2fs -h /dev/vda1|grep -i 'inode size'
命令
使用ls -l <任意文件>查看文件详细内容
1 2 -rw-r--r--. 1 root root 6788 7月 24 19:10 access.log -rw-------. 1 root root 1257 7月 12 21:15 anaconda-ks.cfg
第二列的数字1代表该文件为硬链接
查看inode号
使用ls -li <任意文件>在详细内容前再加上inode号
1 2 33574991 -rw-r--r--. 1 root root 6788 7月 24 19:10 access.log 33574979 -rw-------. 1 root root 1257 7月 12 21:15 anaconda-ks.cfg
通过ls -l 查看到的数据,只有文件名不属于inode存储的元信息。
inode元数据区保存:
文件大小
属主信息
文件权限数字
文件修改时间
文件的实体指针(指向block位置)
文件系统
1 2 3 4 5 6 7 8 9 [root@localhost ~] 文件系统 类型 容量 已用 可用 已用% 挂载点 devtmpfs devtmpfs 899M 0 899M 0% /dev tmpfs tmpfs 910M 0 910M 0% /dev/shm tmpfs tmpfs 910M 9.6M 901M 2% /run tmpfs tmpfs 910M 0 910M 0% /sys/fs/cgroup /dev/mapper/centos-root xfs 17G 2.6G 15G 15% / /dev/sda1 xfs 1014M 189M 826M 19% /boot tmpfs tmpfs 182M 0 182M 0% /run/user/0
工作原理
用户通过查询文件名,打开文件;
系统找到文件inode号;
根据inode号找到文件所在磁盘block,然后读取。
软链接与硬链接 软链接特点
inode号码不同
软链接可以针对文件夹
硬链接特点
一般情况,文件名和inode一一对应
目录文件夹不支持硬链接
硬链接数量增加,会增加inode号的计数
综合比较
删除软链接对源文件和硬链接无影响;
删除硬链接,对软链接、源文件也是无影响;
删除源文件,对硬链接是无影响的,但是影响软链接(我的理解是:当我们删文件时,只是把指针干掉,磁盘上的数据还是在的,而硬链接inode指向了数据所在位置,所以硬链接还是可以读取);
只有删除所有的原文件和硬链接,文件的连接数就为0了,此时文件数据丢失;
源文件和硬链接具有相同的inode号;
软链接和源文件的inode号码不同,因此是两个单独的文件!
文件系统格式化 vfs文件系统
virtualenv File System
虚拟文件系统
Linux系统的文件系统格式有ext2、ext3、ext4等,vfs处于应用程序与具体文件系统之间,能够实现对多种不同类型的文件进行统一管理。
不同平台的文件系统 windows 98平台 FAT FAT16 FAT32
windows 2000 NTFS
Linux ext2 ext3(centos5) ext4(centos6) xfs(centos7)
网络共享文件系统 nfs,network file system
smb,server message block 服务消息块
集群文件系统 gfs,google file system #谷歌公司为了存储海量数据而开发的文件系统
ocfs,oracle cluster file system #甲骨文公司为了数据库研发平台而定制的文件系统
分布式文件系统 ceph 为了存储的可靠性和拓展性的分布式文件系统
交换文件系统 swap
区别在于
是否日志型文件系统
日志型文件系统原理:
磁盘是有个区域用于保存日志
数据写入日志区域
再应用到文件系统
能通过读取日志进行数据恢复
文件系统创建工具 创建文件系统 mkfs命令 1 2 3 [root@localhost ~] mkfs mkfs.cramfs mkfs.ext3 mkfs.minix mkfs.btrfs mkfs.ext2 mkfs.ext4 mkfs.xfs
使用特定的命令,可以创建不同的文件系统。
fsck命令
修复文件系统的命令
开机时,默认读取/etc/fstab即开机挂载文件
查看文件系统属性 dumpe2f命令
用于centos7之前的系统
打印系统文件的块组信息,使用与ext2~4
tune2fs命令
centos7以后的系统
设置linux是否开机自启检查文件系统正常与否
lsblk命令 列出所有设备以及文件系统信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14 [root@localhost ~] NAME FSTYPE LABEL UUID MOUNTPOINT sda ├─sda1 xfs 7fdc921b-f892-4c21-8f87-97f26f936673 /boot └─sda2 LVM2_mem LYVzwm-oAOF-Uxwx-m6tO-Ocrx-D64J-wvpb3G ├─centos-root xfs 745e580c-314d-4419-b634-97ea40c4ee49 / └─centos-swap swap dbb971fd-25ea-43d9-b515-87fd10cba0de [SWAP] sdb ├─sdb1 └─sdb2 sr0 iso9660 CentOS 7 x86_64 2018-11-25-21-21-31-00
实践格式化文件系统 我们从上面可以看到sdb的两个分区并没有文件系统
为sdb1设置ext4文件系统
提示
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 [root@localhost ~] mke2fs 1.42.9 (28-Dec-2013) 文件系统标签= OS type : Linux 块大小=1024 (log =0) 分块大小=1024 (log =0) Stride=0 blocks, Stripe width=0 blocks 122400 inodes, 488264 blocks 24413 blocks (5.00%) reserved for the super user 第一个数据块=1 Maximum filesystem blocks=34078720 60 block groups 8192 blocks per group, 8192 fragments per group 2040 inodes per group Superblock backups stored on blocks: 8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409 Allocating group tables: 完成 正在写入inode表: 完成 Creating journal (8192 blocks): 完成 Writing superblocks and filesystem accounting information: 完成 [root@localhost ~]
为sdb2设置xfs文件系统
提示
1 2 3 4 5 6 7 8 9 10 11 [root@localhost ~] meta-data=/dev/sdb2 isize=512 agcount=4, agsize=579776 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0, sparse=0 data = bsize=4096 blocks=2319104, 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 [root@localhost ~]
查看一下结果 1 2 3 4 5 6 7 8 9 10 11 12 13 14 [root@localhost ~] NAME FSTYPE LABEL UUID MOUNTPOINT sda ├─sda1 xfs 7fdc921b-f892-4c21-8f87-97f26f936673 /boot └─sda2 LVM2_mem LYVzwm-oAOF-Uxwx-m6tO-Ocrx-D64J-wvpb3G ├─centos-root xfs 745e580c-314d-4419-b634-97ea40c4ee49 / └─centos-swap swap dbb971fd-25ea-43d9-b515-87fd10cba0de [SWAP] sdb ├─sdb1 ext4 2ddcc1b2-2acf-4011-8c1b-1ee2858775d7 └─sdb2 xfs af6080aa-49e9-4319-a1a7-d0da302cdd01 sr0 iso9660 CentOS 7 x86_64 2018-11-25-21-21-31-00
关闭文件系统自检
开机自检一般会占用很多时间,我们一般会把它关闭。
1 2 3 [root@localhost ~] tune2fs 1.42.9 (28-Dec-2013) Setting maximal mount count to -1
禁止文件系统开机修复错误
修改/etc/fstab文件
1 2 /dev/mapper/centos-root / xfs defaults 0 0
结尾数字为0表示不检查,1表示检查错误
针对磁盘进行修复检查
修复sdb2
我们输入以上内容后,报错:
1 2 3 4 [root@localhost ~] fsck,来自 util-linux 2.23.2 If you wish to check the consistency of an XFS filesystem or repair a damaged filesystem, see xfs_repair(8).
意思是fsck 对于xfs系统来说已经不支持了,需要换成xfs_repair
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 [root@localhost ~] Phase 1 - find and verify superblock... Phase 2 - using internal log - zero log ... - scan filesystem freespace and inode maps... - found root inode chunk Phase 3 - for each AG... - scan and clear agi unlinked lists... - process known inodes and perform inode discovery... - agno = 0 - agno = 1 - agno = 2 - agno = 3 - process newly discovered inodes... Phase 4 - check for duplicate blocks... - setting up duplicate extent list... - check for inodes claiming duplicate blocks... - agno = 0 - agno = 1 - agno = 2 - agno = 3 Phase 5 - rebuild AG headers and trees... - reset superblock... Phase 6 - check inode connectivity... - resetting contents of realtime bitmap and summary inodes - traversing filesystem ... - traversal finished ... - moving disconnected inodes to lost+found ... Phase 7 - verify and correct link counts... done
修复sdb1
1 2 3 4 [root@localhost ~] fsck,来自 util-linux 2.23.2 e2fsck 1.42.9 (28-Dec-2013) /dev/sdb1: clean, 11/122400 files, 25976/488264 blocks