Linux磁盘分区及文件系统管理详解(2)

硬链接和符号链接

硬链接和符号链接都是都是链接文件,用"l"表示

Linux磁盘分区及文件系统管理详解

(红色为符号链接标识l,黄色为引用计数)

 硬链接

指向同一个inode的多个文件路径

特性:目录不支持硬链接,硬链接不支持跨文件系统,创建硬链接会增加inode引用计数

创建硬链接:

ln 源文件 链接文件

我们来看一下如下:

[root@localhost ~]# ls -l /etc/ | grep "fstab" -rw-r--r--. 1 root root 541 7月 16 04:37 fstab为其创建一个链接

为其创建一个链接

[root@localhost ~]# ln /etc/fstab /tmp/fstab.link

引用计数变为了2

[root@localhost ~]# ls -l /etc/ | grep "fstab" -rw-r--r--. 2 root root 541 7月 16 04:37 fstab

再去看一下/tmp下的链接文件

[root@localhost ~]# ls -l /tmp/ | grep "link" -rw-r--r--. 2 root root 541 7月 16 04:37 fstab.link

cat一下内容,因为指向的是inode,所有即使你删除了源文件,通过符号链接还是读取文件内容:

 

[root@localhost ~]# cat /tmp/fstab.link # # /etc/fstab # Created by anaconda on Sun Jul 16 04:37:14 2017 # # 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/cl-root / xfs defaults 0 0 UUID=ee087898-527c-41b0-85f6-3880e6bf0b73 /boot xfs defaults 0 0 /dev/mapper/cl-var /var xfs defaults 0 0 /dev/mapper/cl-swap swap swap defaults 0 0

符号链接

指向一个文件路径的另一个文件路径

特性:符号链接与文件两个各自是独立的文件,各有自己的inode,对文件创建符号链接不会增加引用计数

支持对目录创建符号链接,可以跨文件系统,删除原文件,符号链接指定的路径就不存在了,此时变成了无效链接:

ln -s 源文件 链接文件

举例:在当前目录下创建文件,并添加内容:

[root@localhost ~]# touch frank.txt [root@localhost ~]# echo "hello" > ./frank.txt [root@localhost ~]# cat frank.txt hello

创建符号链接:

[root@localhost ~]# ln -s frank.txt frank.link

查看符号链接:

Linux磁盘分区及文件系统管理详解

删除原文件后,符号填充色变黑,原文件名闪烁:

Linux磁盘分区及文件系统管理详解

写了这么些文件系统的基础知识,应该可以大致理解文件系统是什么个东西了,下面我们就开始介绍如何管理和使用文件系统。

文件系统的管理

文件系统的创建:

mkfs

格式1:

mkfs.文件系统格式 device 文件系统格式: mkfs.cramfs mkfs.ext3 mkfs.fat mkfs.msdos mkfs.xfs mkfs.btrfs mkfs.ext2 mkfs.ext4 mkfs.minix mkfs.vfat

举例:将/dev/sdb1格式化为ext4格式

[root@localhost ~]# mkfs.ext4 /dev/sdb1 mke2fs 1.42.9 (28-Dec-2013) 文件系统标签= OS type: Linux 块大小=4096 (log=2) 分块大小=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 1310720 inodes, 5242880 blocks 262144 blocks (5.00%) reserved for the super user 第一个数据块=0 Maximum filesystem blocks=2153775104 160 block groups 32768 blocks per group, 32768 fragments per group 8192 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: 完成

也可以使用:

mkfs -t 文件系统格式 device

举例:将/dev/sdb1格式化为ext3格式

 

[root@localhost ~]# mkfs -t ext3 /dev/sdb1 mke2fs 1.42.9 (28-Dec-2013) 文件系统标签= OS type: Linux 块大小=4096 (log=2) 分块大小=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 1310720 inodes, 5242880 blocks 262144 blocks (5.00%) reserved for the super user 第一个数据块=0 Maximum filesystem blocks=4294967296 160 block groups 32768 blocks per group, 32768 fragments per group 8192 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: 完成

ext系列系统专用管理工具

 mke2fs

创建一个ext2或ext3或ext4的文件系统,和mkfs命令类似

mke2fs [OPTIONS] device 常用选项: -t {ext2|ext3|ext4}:指明要创建的文件系统类型 -b {1024|2048|4096}:指明文件系统的块大小; -L LABEL:指明系统卷标; -j:创建有日志功能的文件系统ext3; -i #:bytes-per-inode,指明inode与字节的比率;即每多少字节创建一个Indode; -N #:直接指明要给此文件系统创建的inode的数量; -m #:指定预留的空间,百分比;

也可以使用-O选项,指定特性,具体指定的各种feature可以使用命令"man 5 ext4"查看

mke2fs -O feature device

举例:

 

[root@localhost ~]# mke2fs -t ext4 -L my_data /dev/sdb1 mke2fs 1.42.9 (28-Dec-2013) 文件系统标签=my_data OS type: Linux 块大小=4096 (log=2) 分块大小=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 1310720 inodes, 5242880 blocks 262144 blocks (5.00%) reserved for the super user 第一个数据块=0 Maximum filesystem blocks=2153775104 160 block groups 32768 blocks per group, 32768 fragments per group 8192 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: 完成  

e2label

系统卷标的查看与设定

查看:

[root@localhost ~]# e2label /dev/sdb1 my_data

设定:

[root@localhost ~]# e2label /dev/sdb2 mydata2 [root@localhost ~]# [root@localhost ~]# e2label /dev/sdb2 mydata2


tune2fs

调整ext2/ext3/ext4的文件系统的某些属性,块大小写创建之后是不可以改变的

 

tune2fs [OPTIONS] DEVICE -l:查看super block的信息 修改文件系统的属性: -j:修改文件系统 -L LABEL:修改卷标 -m #:调整预留空间百分比 -O [^]FEATURE:开启或关闭某种特性 -o [^]mout_options:开启或关闭某种默认挂载选项,比如 开启acl -o acl 或者关闭 -o ^acl
 

blkid

查看设备属性

blkid device blkid -L LABEL:根据LABEL定位设备 blkid -U UUID:根据唯一表示号定位设备

举例

[root@localhost ~]# blkid /dev/sdb1 /dev/sdb1: LABEL="my_data" UUID="0557dfda-a2ab-4d75-93be-38f84c6663a1" TYPE="ext4"

文件系统检测工具

因进程意外终止或者系统崩溃的时候,可能会造成文件损坏,此时应该检查并修复文件系统,建立离线修复。

 

e2fsck

检测ext2\ext3\ext4类型的linux文件系统

e2fsck [OPTIONS] device -y:对所有问题自动回答yes -f:即使文件系统处于clean状态,也要强制检查,clean说明文件系统没有问题,反之为dirty

fsck

检查和修改一个linux的文件系统

-t fstype:指名文件系统 -a:无须交互而自动修复所有的错误 -r:交互式修复

也可以使用以下格式:

[root@localhost ~]# fsck fsck fsck.cramfs fsck.ext3 fsck.fat fsck.msdos fsck.xfs fsck.btrfs fsck.ext2 fsck.ext4 fsck.minix fsck.vfat [root@localhost ~]# fsck.ext2 /dev/sdb1

CentOS7上,默认使用的文件系统是xfs,centos6默认不可以格式化分区为xfs文件系统,可以安装其文件系统驱动,在centos6安装:

[root@localhost ~]# yum -y install xfsprogs

swap文件系统

linux上的交换分区必须使用独立的文件系统,system-ID必须是82

Linux磁盘分区及文件系统管理详解

举例:现在要把分区sdb5转换为支持swap文件系统

[root@localhost ~]# fdisk /dev/sdb 欢迎使用 fdisk (util-linux 2.23.2)。 更改将停留在内存中,直到您决定将更改写入磁盘。 使用写入命令前请三思。 命令(输入 m 获取帮助):t 分区号 (1-5,默认 5):5 Hex 代码(输入 L 列出所有代码):l 024 NEC DOS 81 Minix / 旧 Linu bf Solaris 1 FAT12 27 隐藏的 NTFS Win 82 Linux 交换 / So c1 DRDOS/sec (FAT- 2 XENIX root 39 Plan 9 83 Linux c4 DRDOS/sec (FAT- 3 XENIX usr 3c PartitionMagic 84 OS/2 隐藏的 C: c6 DRDOS/sec (FAT- 4 FAT16 <32M 40 Venix 80286 85 Linux 扩展 c7 Syrinx 5 扩展 41 PPC PReP Boot 86 NTFS 卷集 da 非文件系统数据 6 FAT16 42 SFS 87 NTFS 卷集 db CP/M / CTOS / . 7 HPFS/NTFS/exFAT 4d QNX4.x 88 Linux 纯文本 de Dell 工具 8 AIX 4e QNX4.x 第2部分 8e Linux LVM df BootIt 9 AIX 可启动 4f QNX4.x 第3部分 93 Amoeba e1 DOS 访问 a OS/2 启动管理器 50 OnTrack DM 94 Amoeba BBT e3 DOS R/O b W95 FAT32 51 OnTrack DM6 Aux 9f BSD/OS e4 SpeedStor c W95 FAT32 (LBA) 52 CP/M a0 IBM Thinkpad 休 eb BeOS fs e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a5 FreeBSD ee GPT f W95 扩展 (LBA) 54 OnTrackDM6 a6 OpenBSD ef EFI (FAT-12/16/ 10 OPUS 55 EZ-Drive a7 NeXTSTEP f0 Linux/PA-RISC 11 隐藏的 FAT12 56 Golden Bow a8 Darwin UFS f1 SpeedStor 12 Compaq 诊断 5c Priam Edisk a9 NetBSD f4 SpeedStor 14 隐藏的 FAT16 <3 61 SpeedStor ab Darwin 启动 f2 DOS 次要 16 隐藏的 FAT16 63 GNU HURD or Sys af HFS / HFS+ fb VMware VMFS 17 隐藏的 HPFS/NTF 64 Novell Netware b7 BSDI fs fc VMware VMKCORE 18 AST 智能睡眠 65 Novell Netware b8 BSDI swap fd Linux raid 自动 1b 隐藏的 W95 FAT3 70 DiskSecure 多启 bb Boot Wizard 隐 fe LANstep 1c 隐藏的 W95 FAT3 75 PC/IX be Solaris 启动 ff BBT Hex 代码(输入 L 列出所有代码):82 已将分区“Linux”的类型更改为“Linux swap / Solaris” 命令(输入 m 获取帮助):w The partition table has been altered! Calling ioctl() to re-read partition table. 正在同步磁盘。

再来查看sdb的分区情况

[root@localhost ~]# fdisk -l /dev/sdb 磁盘 /dev/sdb:128.8 GB, 128849018880 字节,251658240 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0x3918c6ef 设备 Boot Start End Blocks Id System /dev/sdb1 2048 41945087 20971520 83 Linux /dev/sdb2 41945088 83888127 20971520 83 Linux /dev/sdb3 83888128 125831167 20971520 83 Linux /dev/sdb4 125831168 251658239 62913536 5 Extended /dev/sdb5 125833216 167776255 20971520 82 Linux swap / Solaris

 

 注意:windows无法识别linux的文件系统,要使用U盘在两种类型的设备上copy文件的时候,可以使用wimdows和Linux都能识别的文件系统:FAT32(vfat)。

~]# mkfs.vfat device

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/13472.html