Linux 的文件系统
磁盘物理组成
磁盘的组成与分区: 由图中可以看到磁盘中存储数据的部件为圆形的盘片(磁盘主要记录数据的部分)。
盘片的结构
而磁盘的物理组成如图所示,主要由扇区组成,扇区(sector)为最小的物理存储单元,每个扇区为512bytes;将扇区组成一个圆,那就是柱面(Cylinder),柱面是分区(partition)的最小单位; 磁盘的第一个扇区很重要,里面有硬盘主引导记录(MBR)以及分区表(partition table ),其中MBR占有446bytes,而分区表占有64bytes。
磁盘在linux系统中的存在方式
市面上的各种接口的磁盘在LINUX系统当中是以文件形式存在的(Linux 一切皆文件)。 SCSI、SATA、USB、Flash等接口的磁盘在LINUX系统当中的文件名:/dev/sd[a-p][1-15] IDE接口的磁盘在LINUX系统当中的文件名:/dev/hd[a-d][1-63] 上面中括号中的字母表示磁盘的序号,如sda ,sdb 等。而数字表示某一磁盘的某一分区,如/dev/sda2表示磁盘sba的2号分区;
磁盘的概念
上文中一直提到一个叫做“磁盘分区”的概念,那么什么是磁盘分区呢,所谓磁盘分区即指定分区的起始与结束柱面,说白了就类似于古代的×××圈地,我看中了某一片地,于是告诉地主(操作系统)从哪到哪这片地我要了(即指定分区的起始与结束柱面)。 那么指定分区的柱面范围记录在哪里呢?就是第一个山区的分区表中。但是因为分区表仅有64bytes ,所以最多只能记录4条分区记录,这四条记录我们称为主分区(primary)或拓展分区(extended),其中拓展分区是不能存储数据的,只有从其中分出逻辑分区(logical),才能存储数据。 由于操作系统的限制,拓展分区只能有一个,而在linux系统中,IDE硬盘最多有59个逻辑分区(5号到63号),SATA硬盘则有11个逻辑分区(5号到15号)。
磁盘分区
上面讲道理一些磁盘组成与分区的基本知识,那么如果我现在有一块硬盘,在linux系统下要怎样对它分区呢? 在linux系统下对硬盘分区有二类方式,图形界面下分区与命令行下分区,在这里我们讲解在命令行下对硬盘进行分区。 linux系统有三大分区管理工具:fdisk, parted, sfdisk fdisk是我们最常用的分区管理工具,fdisk对于一块硬盘来讲,最多只能管理15分区;在命令行下我们可以使用fdisk 命令带 -l 选项来查看机器所挂硬盘个数及分区情况。
[root@localhost ~]# fdisk -l 磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘 /dev/sda:21.5 GB, 21474836480 字节,41943040 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0x00064131 设备 Boot Start End Blocks Id System /dev/sda1 * 2048 1026047 512000 83 Linux /dev/sda2 1026048 41943039 20458496 8e Linux LVM
从中我们可以看出当前机器有俩快硬盘,一块已经分区(sda),一块还没有(sdb)。 fdisk命令的使用格式如下:
fdisk device
子命令:管理功能
-
-
-
-
-
p: print, 显示已有分区;
n: new, 创建
d: delete, 删除
w: write, 写入磁盘并退出
q: quit, 放弃更新并退出
m: 获取帮助
l: 列表所分区id
t: 调整分区id
-
-
-
-
在此我们要对磁盘sdb进行分区,首先 键入fdisk /dev/sdb 命令 开始对sdb进行分区
[root@localhost ~]# fdisk /dev/sdb 欢迎使用 fdisk (util-linux 2.23.2)。 更改将停留在内存中,直到您决定将更改写入磁盘。 使用写入命令前请三思。 Device does not contain a recognized partition table 使用磁盘标识符 0x1550511f 创建新的 DOS 磁盘标签。 命令(输入 m 获取帮助):
然后输入n 新建一个分区
命令(输入 m 获取帮助):n Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p):
这里会出现一个提示让你选择创建的分区类型,主分区还是拓展分区,默认为主分区。 这里我们输入p 建立一个主分区。
Select (default p): p 分区号 (1-4,默认 1):
这里会让你输入分区号,默认为1,分区号从5开始是留给逻辑分区的。 这里我们直接回车默认分区号为1。
分区号 (1-4,默认 1): 起始 扇区 (2048-41943039,默认为 2048):
接下来会让你输入分区的起始扇区,我们直接回车默认为2048.
起始 扇区 (2048-41943039,默认为 2048): 将使用默认值 2048 Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):
在这一步会让你输入分区的大小,有俩种输入方式,输入结束扇区数或直接输入分区大小(后跟单位K,M,G前跟+号)。 这里我们给第一个分区10G空间。
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+10G 分区 1 已设置为 Linux 类型,大小设为 10 GiB 命令(输入 m 获取帮助):
自此一个分区划分完毕,我们输入p 显示已有分区。
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0x97df264f 设备 Boot Start End Blocks Id System /dev/sdb1 2048 20973567 10485760 83 Linux
在你划分好分区以后一定要注意,要输入w 保存分区信息并退出,否则你就白干了,如果你没有保存分区信息直接输入q退出,那么你再输入fdisl -l 查看机器所挂硬盘个数及分区情况时
[root@localhost ~]# fdisk -l 磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘 /dev/sda:21.5 GB, 21474836480 字节,41943040 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0x00064131 设备 Boot Start End Blocks Id System /dev/sda1 * 2048 1026047 512000 83 Linux /dev/sda2 1026048 41943039 20458496 8e Linux LVM
你的劳动没有效果,一切都付之东流了。 一定一定要记得输入w 保存退出,如下
命令(输入 m 获取帮助):w The partition table has been altered! Calling ioctl() to re-read partition table. 正在同步磁盘。
其他分区划分方式类似,如下划分俩个逻辑分区。
命令(输入 m 获取帮助):n Partition type: p primary (1 primary, 0 extended, 3 free) e extended Select (default p): e 分区号 (2-4,默认 2):2 起始 扇区 (20973568-41943039,默认为 20973568): 将使用默认值 20973568 Last 扇区, +扇区 or +size{K,M,G} (20973568-41943039,默认为 41943039):+5G 分区 2 已设置为 Extended 类型,大小设为 5 GiB 命令(输入 m 获取帮助):n Partition type: p primary (1 primary, 1 extended, 2 free) l logical (numbered from 5) Select (default p): l 添加逻辑分区 5 起始 扇区 (20975616-31459327,默认为 20975616): 将使用默认值 20975616 Last 扇区, +扇区 or +size{K,M,G} (20975616-31459327,默认为 31459327):+5G 值超出范围。 Last 扇区, +扇区 or +size{K,M,G} (20975616-31459327,默认为 31459327):+4G 分区 5 已设置为 Linux 类型,大小设为 4 GiB 命令(输入 m 获取帮助):p 磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0x97df264f 设备 Boot Start End Blocks Id System /dev/sdb1 2048 20973567 10485760 83 Linux /dev/sdb2 20973568 31459327 5242880 5 Extended /dev/sdb5 20975616 29364223 4194304 83 Linux 命令(输入 m 获取帮助):
大家不知有没有注意到在你的分区信息中有一个id 项,这是个什么东东? 查看分区id的方法,在 命令(输入 m 获取帮助):下直接输入l
命令(输入 m 获取帮助):l 0 空 24 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 1e 隐藏的 W95 FAT1 80 旧 Minix 命令(输入 m 获取帮助):
分区已经创建完成,此时这个分区就真的已经存在了嘛?难道不是嘛,我已经看到它的分区信息了呀。 NO,NO ,NO 因为使用fdisk 快速分区,需要重启电脑,否则内核无法识别到新的分区。 这时我们可以采取另一种方法,使用partx命令通知内核重新读取硬盘分区表: 语法 partx [-a|-d|-l] [--type TYPE] [--nr M-N] [partition] disk 选项
-a 增加制定的分区或读磁盘新增的分区
-d 删除制定或所有的分区
-l 列出分区
--type 指定分区类型。dos,bsd,solaris,unix,或者gpt
--nr M-N 指定分区范围
现在我们可以向分区存储内容了吧。
[root@localhost ~]# cd /dev/sdb1 -bash: cd: /dev/sdb1: 没有那个文件或目录
显然不能,会报错的,为什么呢?因为我们还没对分区进行格式化(format)。 为什么需要进行格式化呢?这是因为每种操作系统所设置的文件属性/权限并不相同,为了存放这些文件所需的数据,因此就需要将分区进行格式化,以成为操作系统能够利用的文件系统格式。 既然提到了文件系统那么都有那些文件系统呢?
Linux文件系统:
ext2, ext3, ext4, xfs, btrfs, reiserfs, jfs, swap
swap: 交换分区
光盘:iso9660
Windows:
fat32, ntfs
Unix:
FFS, UFS, JFS2
网络文件系统:NFS, CIFS
分布式文件系统:ceph, moosefs, mogilefs, GlusterFS, Lustre
集群文件系统:GFS2, OCFS2
根据其是否支持"journal"功能:
日志型文件系统: ext3, ext4, xfs, ...
非日志型文件系统: ext2, vfat
inode,block,super block
那么文件系统是如何运行的呢?这与操作系统的文件数据有关。较新的操作系统的文件数据除了文件实际内容外,通常含有非常多的属性,例如linux操作系统的文件权限,与文件属性。文件系统通常会将这两部分的数据分别存放在不同的块,权限与属性放置到inode中,至于实际的数据则放置到data block 块中。另外还有一个超级块(superblock)会记录记录整个文件系统的整体信息,包括inode与block的总量、使用量、剩余量等。 每个inode与block都有编号,至于这三个数据的意义可以简略说明如下: superblock :记录文件系统的整体信息,包括文件系统inode/block 的总量、使用量、剩余量以及文件系统的格式与相关信息等; 可以通过dumpe2fs查看超级块信息 dumpe2fs:-h 设备文件名 如:
[root@localhost ~]# dumpe2fs -h /dev/sdb dumpe2fs 1.42.9 (28-Dec-2013) Filesystem volume name:Last mounted on:Filesystem UUID: 27a699ec-aeb5-45c9-997a-5ca47af333c0 Filesystem magic number: 0xEF53 Filesystem revision #: 1 (dynamic) Filesystem features: has_journal ext_attr resize_inode dir_index filetype extent 64bit flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize Filesystem flags: signed_directory_hash Default mount options: user_xattr acl Filesystem state: clean Errors behavior: Continue Filesystem OS type: Linux Inode count: 1310720 Block count: 5242880 Reserved block count: 262144 Free blocks: 5116558 Free inodes: 1310709 First block: 0 Block size: 4096 Fragment size: 4096 Group descriptor size: 64 Reserved GDT blocks: 1024 Blocks per group: 32768 Fragments per group: 32768 Inodes per group: 8192 Inode blocks per group: 512 Flex block group size: 16 Filesystem created: Wed Dec 23 21:39:32 2015 Last mount time: n/a Last write time: Wed Dec 23 21:39:56 2015 Mount count: 0 Maximum mount count: -1 Last checked: Wed Dec 23 21:39:32 2015 Check interval: 0 () Lifetime writes: 132 MB Reserved blocks uid: 0 (user root) Reserved blocks gid: 0 (group root) First inode: 11 Inode size: 256 Required extra isize: 28 Desired extra isize: 28 Journal inode: 8 Default directory hash: half_md4 Directory Hash Seed: 1bc9fae0-4477-46a3-9e89-5bceedb64907 Journal backup: inode blocks Journal superblock magic number invalid!
VFS
如此多的文件系统,那么linux的内核又是如何管理这些认识的文件系统呢?其实整个linux系统都是通过VFS(虚拟文件系统)的内核功能区读取文件系统的。也就是说,整个linux认识的文件系统其实都是VFS在进行管理,我们用户并不需要知道每个分区上头的文件系统是什么,VFS会主动帮我们做好读取的操作。
磁盘格式化
在罗嗦了一些关于文件系统的知识以后,现在我们进入文件系统的格式化。格式化的方法非常简单,那就是使用linux文件系统的用户空间的管理工具:mkfs命令。
mkfs命令的两种用法: (1) # mkfs.FS_TYPE /dev/DEVICE
ext4 xfs btrfs vfat
(2) # mkfs -t FS_TYPE /dev/DEVICE
-L 'LABEL': 设定卷标
范例:
[root@localhost ~]# mkfs.ext4 /dev/sdb1 mke2fs 1.42.9 (28-Dec-2013) 文件系统标签= #分区的名称既卷标 OS type: Linux 块大小=4096 (log=2) #block大小 分块大小=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 655360 inodes, 2621440 blocks #由此设置决定的inode/block数量 131072 blocks (5.00%) reserved for the super user 第一个数据块=0 Maximum filesystem blocks=2151677952 80 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 Allocating group tables: 完成 正在写入inode表: 完成 Creating journal (32768 blocks): 完成 Writing superblocks and filesystem accounting information: 完成 [root@localhost ~]# mkfs.ext4 /dev/sdb2 mke2fs 1.42.9 (28-Dec-2013) mkfs.ext4: inode_size (128) * inodes_count (0) too big for a filesystem with 0 blocks, specify higher inode_ratio (-i) or lower inode count (-N). [root@localhost ~]# mkfs.ext4 /dev/sdb5 mke2fs 1.42.9 (28-Dec-2013) 文件系统标签= OS type: Linux 块大小=4096 (log=2) 分块大小=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 262144 inodes, 1048576 blocks 52428 blocks (5.00%) reserved for the super user 第一个数据块=0 Maximum filesystem blocks=1073741824 32 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 Allocating group tables: 完成 正在写入inode表: 完成 Creating journal (32768 blocks): 完成 Writing superblocks and filesystem accounting information: 完成
上面在将sdb格式化为ext4文件系统的例子中,可以发现结果里有非常多的信息,由于我们没有指定文件系统的这些具体信息的具体内容,因此系统会使用默认值来进行格式化。其中比较重要的部分为:卷标(label)、block块的大小以及inodede数量。如果要在格式化时同时设置这些值,就要使用ext系列文件系统专用管理工具:mke2fs mke2fs:ext系列文件系统专用管理工具
-t {ext2|ext3|ext4}
-b {1024|2048|4096} 设置block大小
-L 'LABEL' 设置卷标
-j: 相当于 -t ext3 (当没有指定-j选项时,mke2fs使用ext2 为格式化文 件格式 ,如加入-j 时,则格式化为ext3这个Journaling(日志记录)的文件 系统) mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs -t ext3
-i #: 为数据空间中每多少个字节创建一个inode;此大小不应该小于block 的大小;
-N #:为数据空间创建个多少个inode;
-m #: 为管理人员预留的空间占据的百分比;
-O FEATURE[,...]:启用指定特性 -O ^FEATURE:关闭指定特性
范例:格式化sdb为ext3文件系统,卷标为L5,block为2048,每8192bytes分配一个inode ;
[root@localhost ~]# mke2fs -i 8192 -L L5 -b 2048 -j /dev/sdb5 mke2fs 1.42.9 (28-Dec-2013) 文件系统标签=L5 OS type: Linux 块大小=2048 (log=1) 分块大小=2048 (log=1) Stride=0 blocks, Stripe width=0 blocks 524288 inodes, 2097152 blocks 104857 blocks (5.00%) reserved for the super user 第一个数据块=0 Maximum filesystem blocks=538968064 128 block groups 16384 blocks per group, 16384 fragments per group 4096 inodes per group Superblock backups stored on blocks: 16384, 49152, 81920, 114688, 147456, 409600, 442368, 802816, 1327104, 2048000 Allocating group tables: 完成 正在写入inode表: 完成 Creating journal (32768 blocks): 完成 Writing superblocks and filesystem accounting information: 完成 [root@localhost ~]#
大家在学习安装linux系统时有时会在图形界面下创建一个swap(内存交换空间),那么在命令行下要如何用命令创建一个swap分区呢?四步即可搞定。 第一步: 分区:
[root@localhost ~]# fdisk /dev/sdb 欢迎使用 fdisk (util-linux 2.23.2)。 更改将停留在内存中,直到您决定将更改写入磁盘。 使用写入命令前请三思。 命令(输入 m 获取帮助):n Partition type: p primary (1 primary, 1 extended, 2 free) l logical (numbered from 5) Select (default p): Using default response p 分区号 (3,4,默认 3): 起始 扇区 (31459328-41943039,默认为 31459328): 将使用默认值 31459328 Last 扇区, +扇区 or +size{K,M,G} (31459328-41943039,默认为 41943039): 将使用默认值 41943039 分区 3 已设置为 Linux 类型,大小设为 5 GiB 命令(输入 m 获取帮助):l 0 空 24 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 1e 隐藏的 W95 FAT1 80 旧 Minix 命令(输入 m 获取帮助):t 分区号 (1-3,5,默认 5):3 Hex 代码(输入 L 列出所有代码):82 #修改System为82 即linux交换分区 已将分区“Linux”的类型更改为“Linux swap / Solaris” 命令(输入 m 获取帮助):p 磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0xf8f3e822 设备 Boot Start End Blocks Id System /dev/sdb1 2048 20973567 10485760 83 Linux /dev/sdb2 20973568 31459327 5242880 5 Extended /dev/sdb3 31459328 41943039 5241856 82 Linux swap / Solaris /dev/sdb5 20975616 29364223 4194304 83 Linux 命令(输入 m 获取帮助):w The partition table has been altered! Calling ioctl() to re-read partition table. 正在同步磁盘。 [root@localhost ~]# [root@localhost ~]# partprobe
第二部: 格式化:使用mkswap命令 (前提:调整其分区的ID为82;) mkswap:格式化分区为swap格式
语法:mkswap [options] device -L 'LABEL'
[root@localhost ~]# mkswap /dev/sdb3 正在设置交换空间版本 1,大小 = 5241852 KiB 无标签,UUID=e2b3e522-974d-4337-9fcc-66aa5ba7a8f2 [root@localhost ~]#
第三步: 启动:使用swapon命令
[root@localhost ~]# swapon /dev/sdb3
第四步: 查看:使用free命令
[root@localhost ~]# free total used free shared buff/cache available Mem: 1010336 539824 236556 8116 233956 290804 Swap: 7339000 0 7339000 [root@localhost ~]#
[root@localhost ~]# swapon -s #列出目前使用的swap设备有哪些 文件名 类型 大小 已用 权限 /dev/dm-1 partition 2097148 0 -1 /dev/sdb3 partition 5241852 0 -2 [root@localhost ~]#
大家在使用windows系统时,可以通过一些磁盘管理软件在不格式化分区的前提下更换卷标,那么在linux系统时,更换卷标就只能在格式化时设置嘛? 当然不是可以通过e2label命令管理ext系列文件系统的卷标。 语法: e2label DEVICE [LABEL] 设置卷标 e2lable DEVICE 查看卷标
[root@localhost ~]# e2label /dev/sdb5 L6 [root@localhost ~]# e2label /dev/sdb5 L6
那么分区的其他属性是否也可以在不重新格式化的前提下修改呢?答案是可行的,通过使用tune2fs命令。 tune2fs:重新设定ext系列文件系统可调整参数的值
-l:查看指定文件系统超级块信息;super block
-L 'LABEL':修改卷标
-m #:修预留给管理员的空间百分比
-j: 将ext2升级为ext3
-O: 文件系统属性启用或禁用
-o: 调整文件系统的默认挂载选项
-U UUID: 修改UUID号;
计算机用户在使用计算机的过程当中死机这种情况,我想已经是见怪不怪了,而死机飞常可能导致文件系统的错乱。如果发生文件系统错乱的话该怎么办呢?简单那就是使用文件系统检查命令:fsck。
文件系统检测: fsck: File System CheCk fsck.FS_TYPE
fsck -t FS_TYPE
-a: 自动修复错误
-r: 交互式修复错误
ext系列文件系统的额外参数:
-f:强制检查
范例:
[root@localhost ~]# fsck -t ext3 -f -C /dev/sdb5 fsck,来自 util-linux 2.23.2 e2fsck 1.42.9 (28-Dec-2013) 第一步: 检查inode,块,和大小 第二步: 检查目录结构 第3步: 检查目录连接性 Pass 4: Checking reference counts 第5步: 检查簇概要信息 L6: 11/524288 files (0.0% non-contiguous), 104300/2097152 blocks [root@localhost ~]#
另外我们的系统实际执行的fsck命令,其实是调用e2fsck这个ext系列文件专用的检测修复工具的。 e2fsck语法: e2fsck:ext系列文件专用的检测修复工具
e2fsck [option..] device
选项: -y:自动回答为yes; (同fsck的 -a选项)
-f:强制修复;
转载于:https://blog.51cto.com/3037673/1727878