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 获取帮助):nPartition type:p   primary (0 primary, 0 extended, 4 free)e   extendedSelect (default p):

这里会出现一个提示让你选择创建的分区类型,主分区还是拓展分区,默认为主分区。    这里我们输入p 建立一个主分区。

        Select (default p): p分区号 (1-4,默认 1):

这里会让你输入分区号,默认为1,分区号从5开始是留给逻辑分区的。   这里我们直接回车默认分区号为1。

        分区号 (1-4,默认 1):起始 扇区 (2048-41943039,默认为 2048):

接下来会让你输入分区的起始扇区,我们直接回车默认为2048.

        起始 扇区 (2048-41943039,默认为 2048):将使用默认值 2048Last 扇区, +扇区 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 获取帮助):wThe partition table has been altered!Calling ioctl() to re-read partition table.正在同步磁盘。

其他分区划分方式类似,如下划分俩个逻辑分区。

    命令(输入 m 获取帮助):nPartition type:p   primary (1 primary, 0 extended, 3 free)e   extendedSelect (default p): e分区号 (2-4,默认 2):2起始 扇区 (20973568-41943039,默认为 20973568):将使用默认值 20973568Last 扇区, +扇区 or +size{K,M,G} (20973568-41943039,默认为 41943039):+5G分区 2 已设置为 Extended 类型,大小设为 5 GiB命令(输入 m 获取帮助):nPartition type:p   primary (1 primary, 1 extended, 2 free)l   logical (numbered from 5)Select (default p): l添加逻辑分区 5起始 扇区 (20975616-31459327,默认为 20975616):将使用默认值 20975616Last 扇区, +扇区 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 获取帮助):l0  空              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, 1605632Allocating 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 afilesystem 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, 884736Allocating 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, 2048000Allocating 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 获取帮助):l0  空              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 ~]# freetotal        used        free      shared  buff/cache   availableMem:        1010336      539824      236556        8116      233956      290804Swap:       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

Linux文件系统及磁盘分区与格式化(二次排版)相关推荐

  1. Linux 命令学习 -磁盘分区和格式化

    Linux 命令学习 -磁盘分区和格式化 磁盘分区操作 创建逻辑卷 调整逻辑卷大小 创建VDO卷 在计算机上使用磁盘空间的过程: 识别磁盘----分区----格式化----挂载----访问挂载点 fd ...

  2. linux格式化ext4分区工具,linux学习笔记-磁盘分区、格式化与挂载

    磁盘分区.格式化与挂载 磁盘分区.格式化与挂载 一.给磁盘分区 分区工具介绍 fdisk:分区时只修改分区表信息:操作简单:不支持大于2T的分区:只能使用交互式来分区. parted:直接将分区信息写 ...

  3. 最详细的linux下的磁盘分区及格式化

    <Linux中磁盘的管理(格式化.分区.挂载)> <linux 下 格式化u盘 并分区 为fat32文件系统 > <解决linux重启后磁盘挂载失效的问题>

  4. linux 格式化 目录,Linux 磁盘分区、格式化、目录挂载

    实验环境: Citrix虚拟化, RHEL6.4系统环境 本文目的: 熟悉Linux的基本磁盘分区.格式化.目录挂载. 1.显示当前主机目录 2.磁盘分区 3.磁盘格式化 4.挂载目录 1. 显示当前 ...

  5. Linux磁盘管理——df、du、磁盘分区、格式化、挂载、LVM

    2019独角兽企业重金招聘Python工程师标准>>> Linux磁盘管理 一. df命令 df命令参数功能:检查文件系统的磁盘空间占用情况.可以利用该命令来获取硬盘被占用了多少空间 ...

  6. Linux小实验——设备挂载、磁盘分区、格式化、RAID的配置、LVM配置、磁盘配额的配置方法和验证

    小实验--设备挂载.磁盘分区.格式化.RAID的配置.LVM配置.磁盘配额的配置方法和验证 一.实验目的 二.要求 三.实验开始 1.加入新磁盘,创建分区,并把分区类型改成'8e'的RAID 2.创建 ...

  7. linux 挂载32T文件系统,linux Centos下磁盘分区及文件系统创建与挂载(示例代码)

    linux Centos下磁盘分区及文件系统创建与挂载 MBR(Master Boot Record)是传统的分区机制,应用于绝大多数使用BIOS的PC设备. 1.MBR支持32bit和64bit系统 ...

  8. linux Centos下磁盘分区及文件系统创建与挂载

    linux Centos下磁盘分区及文件系统创建与挂载 MBR(Master Boot Record)是传统的分区机制,应用于绝大多数使用BIOS的PC设备. 1.MBR支持32bit和64bit系统 ...

  9. linux格式化磁盘命令(磁盘分区及格式化)

    Ubuntu下挂载一个新硬盘的基本步骤是: 给硬盘创建分区; 给硬盘创建文件系统; 挂载移动硬盘. 需要用到的命令: lsblk #查看所有硬盘情况 df -lh #查看硬盘占用情况,以及挂载位置 s ...

最新文章

  1. JavaScript脚本文件学习总结
  2. tf.nn.max_pool 理解
  3. python可视化多个机器学习模型在训练集(train set)上交叉验证(cross validation)的AUC值、可视化模型效能
  4. 打开新窗口的js代码
  5. gateway 车辆网关
  6. Cloud Prizefight: OpenStack vs. VMware(转)-HA-FT
  7. 如何利用计算机实现非线性转换,基于cass数控绕线机非线性算法的设计与实现-计算机应用技术专业论文.docx...
  8. 矩池云使用VNC Viewer远程连接GPU主机,图形用户界面操作
  9. 仿照java做一个脚本语言_java调用其它语言脚本(python、js)
  10. paip.WEB乱码的解决流程
  11. LeetCode 707. Design Linked List
  12. 非洲做项目的务实与务虚
  13. Redis中的Stream的实现Radix Tree源码解读
  14. CentOS 8: yum设置为阿里源
  15. ZIP压缩包下载总结
  16. 百度识图上线,体验以图搜图
  17. 基于Tesseract-OCR的空调外包装表面的字符识别
  18. 电脑的危险端口?135,137,139,445,3389
  19. tal php x 1,PHP中TAL模板引擎语法的解析(代码)
  20. 【django】settings.py配置文件内容详细介绍

热门文章

  1. PHP实现文件安全下载
  2. .NET/ASP.NET MVC Controller 控制器(IController控制器的创建过程)
  3. AnkhSVN的自动加锁
  4. 深度优先搜索(DFS)算法
  5. 2018年最新的single-cell-RNA-seq analysis repositories
  6. Codeforces Round #470 (rated, Div. 2, based on VK Cup 2018 Round 1)B. Primal Sport
  7. iOS开发之线程间的MachPort通信与子线程中的Notification转发
  8. 简单使用TFS管理源代码
  9. vijos 观光旅游 最小环fl 呆详看
  10. Mac 下安装mysqldb 问题:一条命令解决mysql_config not found