磁盘分区,文件系统的创建、修改和检测

    写博客,对我来说不仅是学习的过程,也是一个心理历练的过程,多说无益,开始吧!!!

    博客是马哥视频里的博客作业:文件系统的创建、修改和检测。我就从磁盘管理开始把

    


环境:

    创建的centos6.5虚拟机

    磁盘空间大小20G

    装机过程中手动分区,预留了10G左右的空间用来练习

[root@scm-dzm ~]# uname -a
Linux scm-dzm 2.6.32-504.el6.i686 #1 SMP Wed Oct 15 03:02:07 UTC 2014 i686 i686 i386 GNU/Linux


一、一些概念,虽然一知半解,但也有助于对整体知识的理解和把握

固态硬盘现在越来越便宜也越来越常见了,但是现在还没有普遍使用,仅用于企业I/O压力过大时用于救命的。

这里要说的还是关于机械式硬盘,硬盘是主机的I/O设备,它是通过主板与主机的其他组件连接起来并协调工作的

a.计算机的组成部分

1,最底层是硬件设备,主要包括三个组件:CPU,内存,I/O设备
CPU:cpu由控制器和运算器组成
内存:当下要被cpu处理的数据和要使用的程序,cpu不能从内存以外的任何位置取数据
I/O设备:常见的有硬盘和网卡,网卡是通过网络交换数据,硬盘给本地提供设备的持久存贮功能,还有键盘鼠标等设备

2,内核:
管理组件能够协调工作
将硬件规格接口抽象给程序员
硬件驱动由硬件厂商提供,由内核管理

b.I/O端口

每个硬件设备都需要在cpu上注册一个不同的终端信号
I/Oports:I/O设备地址,在硬件层次的地址标志

c.linux上硬件设备被识别为文件

设备文件类型:块设备clock(例如磁盘),字符设备char(例如键盘)
设备文件的作用:关联至一个设备驱动程序,进而能够与之对应的硬件设备进行通信。硬盘的设备文件也是如此
每个硬件设备在内核都是靠一个设备号来识别的,不同类别的设备号码是不同的,其中主设备号(major number)标识设备类型,次设备号(minor number)标识同一设备类型的不同设备,同时设备只有元数据没有数据
设备文件存储位置:/dev/DEV_FILE

d.磁盘

设备的接口类型

并行:交换速率慢,为了避免干扰
IDE     133MB/s
SCSI3.0640MB/s
串口:
SATA6Gbps
SAS6Gbps
USB3.0480MB/s
rpm:转速,7200 10000 15000

磁盘设备的设备文件命名

IDE:/dev/hd
SCST SATA SAS USB:/dev/sd
不同设备:a~z
例如:/dev/sda /dev/sdb等等
同一设备不同的分区:
例如:/dev/sda1 /dev/sda2...

机械式硬盘:双面可读写的

磁道:track

柱面:cylinder,号码形同的多个磁道组成的柱体

扇区:sector

分区方式:

按柱面分区

0柱面0扇区:512bytes

MBR:master boot record主引导记录
 446bytes:boot load 引导加载器
 64bytes:分区表,16bytes标识1个分区,总共标识4个分区
 所以如果对1个磁盘想4个以上的分区,就必须有1个扩展分区,一般都是3个主分区,1个扩展分区,1个扩展分区又可以划分多个逻辑分区
 2bytes:MBR的有效性标识55AA

二、磁盘分区

1. 工具:fdisk parted sfdisk

fdisk:对于一个硬盘来讲,最多只能管理15个分区

fdisk -L [DEVICE] <-查看分区

fdisk DEVICE <-分区

例子:

[root@scm-dzm ~]# fdisk -l
Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000428cc
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1        1275    10240000   83  Linux
/dev/sda2            1275        1406     1048576   82  Linux swap / Solaris
详解:整个磁盘空间21.5GB,21474836480 bytes
  255个磁头,每个磁道63个扇区,2610个柱面
  512×63×255表示一个柱面大小,512×63×255×2610就是磁盘的大小,共63×255×2610扇区
  I/O size (minimum/optimal)
  磁盘标识符
  磁盘分区
  设备名称引导 开始柱面结束柱面块数量 分区ID号 系统类型
[root@scm-dzm ~]# fdisk /dev/sda
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').
Command (m for help):  m <- 输入m查看子命令
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition# 删除分区
   l   list known partition types# 查看所支持的分区类型以及编号ID
   m   print this menu# 查看帮助
   n   add a new partition# new,新建分区
   o   create a new empty DOS partition table
   p   print the partition table# 查看已有分区
   q   quit without saving changes# 退出不保存此次操纵做
   s   create a new empty Sun disklabel
   t   change a partition's system id # 调整分区ID
   u   change display/entry units #
   v   verify the partition table
   w   write table to disk and exit # 保存此次操作
   x   extra functionality (experts only)
Command (m for help): n <- 输入子命令n,新建分区
Command action
   e   extended
   p   primary partition (1-4)
e <- 输入分区类型为扩展分区
Partition number (1-4): 4 <- 输入分区编号为4,以下均默认,将剩余空间全部分给扩展分区
First cylinder (1406-2610, default 1406): 
Using default value 1406
Last cylinder, +cylinders or +size{K,M,G} (1406-2610, default 2610): 
Using default value 2610
Command (m for help): n
Command action
   l   logical (5 or over)
   p   primary partition (1-4)
l <- 输入l选择创建逻辑分区
First cylinder (1406-2610, default 1406): <- 直接回车,默认从1406柱面开始
Using default value 1406
Value out of range.
Last cylinder, +cylinders or +size{K,M,G} (1406-2610, default 2610): +2G <- 创建2G大小的分区
Command (m for help): w <- 输入子命令w保存分区并退出
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.

2.通知系统分区变化

命令partx,kpartx,和centos5使用的partprobe

查看已被内核识别的分区( cat /proc/partitions),刚才创建的分区并未识别:

[root@scm-dzm ~]# cat /proc/partitions 
major minor  #blocks  name
   8        0   20971520 sda
   8        1   10240000 sda1
   8        2    1048576 sda2

    partx命令说明

    -a DEVICE扫描整个磁盘

    –nr M-N 

      M:  

       : 

    kpartx命令说明

    -a DEVICE

    -f DEVICE

[root@scm-dzm ~]# partx -a /dev/sda
BLKPG: Device or resource busy<- 据说由于虚拟机的原因才有这个报错
error adding partition 1
BLKPG: Device or resource busy
error adding partition 2
[root@scm-dzm ~]# cat /proc/partitions 
major minor  #blocks  name
   8        0   20971520 sda
   8        1   10240000 sda1
   8        2    1048576 sda2
   8        4         31 sda4
   8        5    2100546 sda5
   8        6     530113 sda6

    kpartx这个命令载入新分区失败

三、创建文件系统

1. 常见的文件系统

linux文件系统

      ext2

      ext3

      ext4

      xfs

      btrfs

      reiserfs

      swap

      光盘系统:ISO9660

 交换分区对于不同的应用要求不同
  ① oracle,mysql数据库系统,如果一旦把内存数据放回硬盘上,性能会急剧下降,对于这种设备,交换分区一般512-1G就够了,但物理内存一般需达到64G-512G
  ② 对于批处理系统,内存使用率不高,对于机器运行的性能要求也不是很高,swap可以设置的比较大,一般等于物理内存,不过8G已经非常大了

     windows:fat32,ntfs

     unix:FFS UFS JFS2

     网络文件系统:NFS cifs

     集群文件系统:GFS2 OCF2

     分布式文件系统:ceph moosefs mogileft lustre

2. 创建文件系统

支持的文件系统:cat /proc/filesystems 可查看,lsmod可查看内核加载的模块

创建文件系统的命令mkfs,mke2fs,mkfs.FS_TYPE:

mkfs.cramfs   mkfs.ext2     mkfs.ext3     mkfs.ext4     mkfs.ext4dev  mkfs.msdos    mkfs.vfat

mkfs.ext4 mkfs.ext2 mkfs.ext3 & mke2fs等如下选项意义一样,可man查看

     -t fs-type {ext2|ext3|ext4}

     -b block-size {1024|2048|4096}  # 设置块大小,创建好的文件系统不能在修改此值

     -L new-volume-label # 设置卷标

     -i bytes-per-inode # 多少字节创建一个inode

     -N number-of-inodes # 设置创建inode的数量

     -m reserved-blocks-percentage # 为管理员预留空间的百分比,默认5%

     -O feature[,…] # 启用指定特性,-O ^feature关闭指定特性

命令的使用:

[root@scm-dzm ~]# mkfs.ext4 -L MySystem -b 4096 -m 3 /dev/sda5
mke2fs 1.41.12 (17-May-2010)
Filesystem label=MySystem
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
131376 inodes, 525136 blocks
15754 blocks (3.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=541065216
17 block groups
32768 blocks per group, 32768 fragments per group
7728 inodes per group
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912
Writing inode tables: done                            
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 29 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

3. 查看块设备属性

命令blkid,e2label,tune2fs

blkid:

     -U UUID # 根据指定的UUID查找指定设备

     -L LABEL # 根据指定的LABEL查找指定设备

[root@scm-dzm ~]# blkid /dev/sda5
/dev/sda5: LABEL="MySystem" UUID="8e383118-3e91-4393-b602-f24cb3d0256f" TYPE="ext4" 
[root@scm-dzm ~]# blkid -U 8e383118-3e91-4393-b602-f24cb3d0256f
/dev/sda5
[root@scm-dzm ~]# blkid -L MySystem
/dev/sda5
[root@scm-dzm ~]# blkid -O full   
/dev/sda1: UUID="7336f3a1-61ce-4ff5-9aba-e71a26748f74" TYPE="ext4" 
/dev/sda2: UUID="db406704-df06-46a2-a44f-94bb91c7daf4" TYPE="swap" 
/dev/sda5: LABEL="MySystem" UUID="8e383118-3e91-4393-b602-f24cb3d0256f" TYPE="ext4"

e2label:

e2label /dev/sda5 # 查看LABEL

e2label /dev/sda5 "NewLable" # 设置LABEL

[root@scm-dzm ~]# e2label /dev/sda5 "NewLable"
[root@scm-dzm ~]# blkid -L NewLable
/dev/sda5

tune2fs

     -l device # 查看指定分区的超级快信息

     -L "NewLabel" # 修改卷标

     -m # # 修改预留给管理员的空间的百分比

     -j # 升级fs

     -O feature # 启用指定特性,-O ^feature关闭指定特性

     -o   # 调整文件系统的默认挂载选项,加^表示取消

     -u UUID # 修改UUID

[root@scm-dzm ~]# tune2fs -l /dev/sda5
tune2fs 1.41.12 (17-May-2010)
Filesystem volume name:   NewLable
Last mounted on:          <not available>
Filesystem UUID:          8e383118-3e91-4393-b602-f24cb3d0256f
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags:         signed_directory_hash 
Default mount options:    (none)
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              131376
Block count:              525136
Reserved block count:     15754
Free blocks:              499721
Free inodes:              131365
First block:              0
Block size:               4096
Fragment size:            4096
Reserved GDT blocks:      128
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         7728
Inode blocks per group:   483
Flex block group size:    16
Filesystem created:       Thu Jun 23 17:02:23 2016
Last mount time:          n/a
Last write time:          Thu Jun 23 17:28:50 2016
Mount count:              0
Maximum mount count:      29
Last checked:             Thu Jun 23 17:02:23 2016
Check interval:           15552000 (6 months)
Next check after:         Tue Dec 20 17:02:23 2016
Lifetime writes:          97 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:      419725ca-0c22-4146-885a-0044b03a19ee
Journal backup:           inode blocks
[root@scm-dzm ~]# tune2fs -L "NNewLabel" /dev/sda5 
tune2fs 1.41.12 (17-May-2010)

[root@scm-dzm ~]# blkid -L NNewLabel
/dev/sda5

[root@scm-dzm ~]# tune2fs -o user_xattr /dev/sda5 
tune2fs 1.41.12 (17-May-2010)
[root@scm-dzm ~]# tune2fs -o acl /dev/sda5           
tune2fs 1.41.12 (17-May-2010)

关于超级块保存了很多信息:整个分区中的整个结构划分保存在超级块中,有多少块组,每组拥有多少块,每个组分别从第几块开始从第几块结束,每个块多大,而且每个组中有多少块占用,有多少块free

如果超级块丢失,整个分区将无法使用,所以超级块在分区中有很多个备份,再出现意外时用来恢复分区的

4. 创建交换分区

首先需要使用工具fdisk调整分区的ID为82,然后做如下操作

[root@scm-dzm ~]# mkswap -L MySwap /dev/sda6
Setting up swapspace version 1, size = 530108 KiB
LABEL=MySwap, UUID=3b99e1ac-60f8-4ae1-9453-5c9cdee86266

四、 文件系统检测

工具:fsck.FS_TYPE 或者fsck -t FS_TYPE 

     -a # 自动修复

     -r # 交互式修复

[root@scm-dzm ~]# fsck.ext4 -a /dev/sda5
NNewLabel: clean, 11/131376 files, 25415/525136 blocks

工具:e2fsck:ext系列文件系统专用检测修复工具

     -y # 自动修复

     -f # 强制修复

[root@scm-dzm ~]# e2fsck -y /dev/sda5

e2fsck 1.41.12 (17-May-2010)
NNewLabel: clean, 11/131376 files, 25415/525136 blocks

五、最后总结:

    1. 首先分区fdisk parted sfdisk

    2. 通知内核载入分区partx,kpartx,和centos5使用的partprobe

    3. 创建文件系统:

        mkfs.cramfs mkfs.ext2 mkfs.ext3 mkfs.ext4 mkfs.ext4dev mkfs.msdos mkfs.vfat mkfs,mke2fs

       创建swap分区

        mkswap

        查看创建的文件系统:命令blkid,e2label,tune2fs

    4. 真正想要使用分区还需要挂在:mount

原创文章,作者:Net20_天意,如若转载,请注明出处:http://www.178linux.com/19815

(0)
Net20_天意Net20_天意
上一篇 2016-06-26 22:43
下一篇 2016-06-26 22:44

相关推荐

  • 推荐-​以各种方式实现yum源,简单暴力,绝对实操干货!

    以各种方式实现yum源,简单暴力,绝对实操干货! 科普:yum不是程序包安装工具,而是rpm包前端管理工具,通过yum可以更好的管理rpm的安装卸载 以各种方式实现yum源,简单暴力,绝对实操干货! 一、本地yum源之“挂载光盘镜像实现”! 二、本地yum源之“挂载本地磁盘上的镜像文件”! 三、如能上网,实现自定义指定镜像网站yum源 四、炸天重磅来袭!!!…

    Linux干货 2016-04-11
  • 自动化系统安装之DHCP服务实现

    DHCP服务实现 dhcp的工作过程是基于UDP协议的,其中用到了UDP的67(服务器),68(客户端)端口 使用场景 自动化安装系统 解决IPV4资源不足的问题 同网段多dhcp服务 dhcp服务必须基于本地 先到先得 跨网段 RFC 1542 dhcpclient客户端向dhcpsercer服务器请求续约时,中间相隔多网段时,如果路由器是 RFC1542…

    2018-01-29
  • awk学习笔记

    一、linux的文本处理器三剑客   文本过滤器:grep、egrep、fgrep   行编辑器:sed(模式空间;保持空间)   报表生成器:awk(格式化文本输出)gawk awk的工作流程: 从文本中读取一行内容,根据指定的分隔符;将读入的一行内容分隔成字段,然后格式化输出指定的字段 二、awk的命令相关的参数及用法 &n…

    Linux干货 2015-06-23
  • 文件压缩,解压缩及归档

        在Linux的环境中,压缩文件的扩展名大多是:“*.tar, *.tar.gz, *.gz, *.Z, *.bz2, *.xz”,因为 Linux 支持的压缩指令非常多,且不同的指令所用的压缩技术并不相同,当然彼此之间可能就无法互通压缩/解压缩文件,当你下载到某个压缩文件时,自然就需要知道该文件是由哪种压缩指令…

    Linux干货 2016-08-18
  • LAMP编译安装

    所谓的LAMP是指构建在Linux之上经典的一种web架构方式,其中L指的是Linux,A指的是Apache的httpd,M指的是Mysql或MariaDB,P指的是PHP,这种组合方式的基本工作模式是有httpd负责接收和相应用户的请求,然后将需要处理的php页面交由后端的php应用程序处理,而php应用程序处理php页面时的数据存储在Mysql数据库中,…

    Linux干货 2016-12-19
  • linux的终端类型

    1、什么是终端 终端(Terminal)也称终端设备,是计算机网络中处于网络最外围的设备,主要用于用户信息的输入以及处理结果的输出等。 在早期计算机系统中,由于计算机主机昂贵,因此一个主机(IBM大型计算机)一般会配置多个终端,这些终端本身不具备计算能力,仅仅承担信息输入输出的工作,运算和处理均由主机来完成。 在个人计算机时代,个人计算机可以运行称为终端仿真…

    Linux干货 2016-10-19