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

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

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

    


环境:

    创建的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)
上一篇 2016-06-26 22:43
下一篇 2016-06-26 22:44

相关推荐

  • Linux-Basic—shell如何解释命令的运行

    附件下载: Linux Basics-shell.pdf

    Linux干货 2016-11-21
  • zabbix+grafana ——小于初始,大于勤拙@时雨扰扰,几多怅惘,几多忧思

    前边一点小总结,纯属回顾启动大脑所用,毕竟we are no computer! 一个监控系统必须包括4个功能 1)采集数据 2)存储数据 3)故障报警 4)数据可视化显示 zabbix作为一个监控系统,当让也就包含了以上四种zabbix-server-mysql,zabbix-agent,zabbix-get,zabbix-sender,zabbix-we…

    2017-10-09
  • 正则表达式简述

    正则表达式简述 什么是正则表达式: 正则表达式,又称正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。 正则表达式分类: 标准正…

    Linux干货 2016-04-05
  • 脚本编程部分_第十周练习

    Q1:写一个脚本: (1) 能接受四个参数:start, stop, restart, status;start: 输出“starting 脚本名 finished.”其余参数类似; (2) 其它任意参数,均报错退出; #!/bin/bash # read -p "The following choices&…

    Linux干货 2017-01-01
  • Linux Shell(脚本)编程入门

    为什么要进行shell编程 在Linux系统中,虽然有各种各样的图形化接口工具,但是sell仍然是一个非常灵活的工具。Shell不仅仅是命令的收集,而且是一门非常棒的编程语言。您可以通过使用shell使大量的任务自动化,shell特别擅长系统管理任务,尤其适合那些易用性、可维护性和便携性比效率更重要的任务。 下面,让我们一起来看看shell是如何工作的: 建…

    Linux干货 2017-08-05
  • 第三周小练习

    1. 列出当前系统上所有已经登陆的用户的用户名,注意,同一个用户登陆多次,则显示一次即可 who -u|grep -o "^[[:alnum:]]*\>"|uniq 2. 取出最后登陆到当前系统的用户信息 who|tail -n1 3. 取出当前系统上被用户当作其默认shell的最多的那个sh…

    Linux干货 2016-11-21