在Linux中,文件是如何存储的,磁盘分区的逻辑组成是如何实现的,怎么对磁盘进行分区、格式化、挂载?
文件是如何存储的 块组 超级块 块组描述符号
文件系统先是分成了多个块组和超级块。每个块组分别包含了inode和data block,每个块组也包含了inode bitmap和block bitmap;每个块组还包括了块组描述符。
超级块包括的信息: 卷标、挂载时间、UUID、魔数、文件系统特性、挂载的默认选项、文件系统状态、OS类型、Inode和Block的相关数量、大小、可用数量、 保留的空间等信息。使用tune2fs -l /dev/sda3来查看超级块的信息。
GDT:记录了未使用的inodes数量,inode bitmap和datablock bitmap的位置,inode表的位置,空闲的block和inode数量。dumpe2fs /dev/sda3 | less 也可以使用-h参数
软链接:指向一个文件路径的另一个文件路径
一个正常的文件,其inode的指针指向的是datablock的位置,而软链接则是指向了另一个文件的路径。软链接在文件大小是它指向的文件路径的字节数。
ln -s passwd.back passwd.sylink
[root@localhost tmp]# ls -il
总用量 12
33554511 -rwx------. 1 root root 836 2月 29 09:50 ks-script-XVVd4f
33554501 -rw-r--r--. 2 root root 1099 3月 1 11:37 passwd.back
33554501 -rw-r--r--. 2 root root 1099 3月 1 11:37 passwd.back2
33578842 lrwxrwxrwx. 1 root root 11 3月 1 11:38 passwd.sylink -> passwd.back
[root@localhost tmp]# mke2fs -t ext3 -b 4096 -L lq_data -i 32768 -m 3 /dev/sda3
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=lq_data
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
655360 inodes, 5242880 blocks
157286 blocks (3.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=4294967296
160 block groups
32768 blocks per group, 32768 fragments per group
4096 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000
Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
掌握Fdisk分区
请实验完成
元数据区存放了什么
元数据区存储了:inode inode位图和块位图
数据存储区则是磁盘块。
inode存储了文件的权限和属性相关信息。可以使用 stat /etc/passwd来查看文件的元数据信息。
A. partx - tell the Linux kernel about the presence and numbering of on-disk partitions
-a Add the specified partitions, or read the disk and add all partitions.
用法: partx -a /dev/sda
B. kpartx - Create device maps from partition tables
-a Add partition mappings
用法: kpartx -a /dev/sda
如果一次没有刷出来,请再刷一次。
创建交换分区并生效
mkswap /dev/sda6
swapon
创建一个5G的交换分区
[root@localhost ~]# blkid -L lq_data
/dev/sda3
[root@localhost ~]# blkid -U f80f0e3d-9ccb-43a2-ac30-98722a8a6ea2
/dev/sda3
[root@localhost ~]# blkid -t TYPE=ext3
/dev/sda3: LABEL="lq_data" UUID="f80f0e3d-9ccb-43a2-ac30-98722a8a6ea2" TYPE="ext3
[root@localhost ~]# e2label /dev/sda3
lq_data
[root@localhost ~]# e2label /dev/sda3 DATA
[root@localhost ~]# e2label /dev/sda3
DATA
[root@localhost ~]# blkid /dev/sda3
/dev/sda3: LABEL="DATA" UUID="f80f0e3d-9ccb-43a2-ac30-98722a8a6ea2" TYPE="ext3"
[root@localhost ~]# mke2fs -t ext2 -L TEST -m 10 /dev/sda3
接下来,我们通过tune2fs来调整文件系统的属性,我先尝试在挂载状态下进行。
[root@localhost ~]# mount /dev/sda3 /mnt
A. 将文件系统类型升级成ext3
[root@localhost ~]# tune2fs -j /dev/sda3
tune2fs 1.42.9 (28-Dec-2013)
Creating journal inode: 完成
[root@localhost ~]# blkid /dev/sda3
/dev/sda3: LABEL="TEST" UUID="96361554-d8a3-43cb-860d-45ce26daaeff" SEC_TYPE="ext2" TYPE="ext3"
B. 设置卷标为Corun
[root@localhost ~]# tune2fs -L Corun /dev/sda3
tune2fs 1.42.9 (28-Dec-2013)
[root@localhost ~]# blkid /dev/sda3
/dev/sda3: LABEL="Corun" UUID="96361554-d8a3-43cb-860d-45ce26daaeff" SEC_TYPE="ext2" TYPE="ext3"
C. 更改预留的空间百分比为2%
[root@localhost ~]# tune2fs -m 2 /dev/sda3
tune2fs 1.42.9 (28-Dec-2013)
Setting reserved blocks percentage to 2% (104857 blocks)
dumpe2fs: 显示ext系列文件系统的属性信息
dumpe2fs /dev/sda5
dumpe2fs -h /dev/sda5
fsck和e2fsck
ext系列文件系统的专用工具:
e2fsck : check a Linux ext2/ext3/ext4 file system
e2fsck [OPTIONS] device
-y:对所有问题自动回答为yes;
-f:即使文件系统处于clean状态,也要强制进行检测;
fsck:check and repair a Linux file system
-t fstype:指明文件系统类型;
fsck -t ext4 = fsck.ext4
-a:无须交互而自动修复所有错误;
-r:交互式修复;
示例:
mount /dev/sda3 /mnt
umount /dev/sda3
南要注意的是:挂载点应该是一个空目录,推荐将挂载点放置在根所在的文件系统上。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。