Linux基础_磁盘分区

Posted 一头牛这么多人放

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux基础_磁盘分区相关的知识,希望对你有一定的参考价值。

 如果在系统中新增一块硬盘时,我们得完成下方的工作

1:对磁盘进行分区

2:对该分区进行格式化

3:对新建好的文件系统进行检验

4:创建挂载点

 

一,磁盘分区

 # 为什么要进行磁盘分区

1:更容易进行管理和控制系统(相关的文件和目录都在同一个分区中)

2:系统的效率更高

3:可以限制用户使用磁盘的大小

4:更容易进行备份和恢复

# 硬盘的逻辑结构

一个硬盘在逻辑上可以分为块,磁道,磁柱,分区

块:盘片上最小的寻址单位,一个块可存储一定字节的数据

磁道:由一系列头尾相连的块组成的圆圈

磁柱:由多个磁道重叠在一起,由具有相同半径的盘面上的磁道组成

分区:分区由一组相邻的磁柱组成

# Linux系统中硬盘的分区

硬盘分区的分类:主分区,扩展分区,逻辑分区

主分区:一个硬盘最多只能有4个主分区

## 利用 fdisk和partprobe命令来进行硬盘分区管理

# fidsk

# fdisk -l 设备名称(如/dev/sdb)
[[email protected] 桌面]# fdisk -l /dev/sdb

Disk /dev/sdb: 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: 0x00000000

-l    # 输出后面接的设备所有分区内容,当只输入fdisk -l时,输出系统中所有设备的分区


# fdisk中的参数
d    # 删除一个已经存在的分区 d=>delete
l    # 列出已知分区类型 l=>list
m    # 列出fdisk中所有的命令
n    # 添加新分区
p    # 打印分区表
q    # 不保存更改就退出
t    # 更改分区的系统ID
w    # 将表写入磁盘并退出
b    # 编辑BSD磁盘标签
c    # 切换DOS兼容性标志
o    # 创建新的空DOS分区表
s    # 创建新的空Sun磁盘标签
u    # 更改显示/输入单位
v    # 验证分区表
x    # 额外功能(仅限专家)

 # 找出可用磁盘文件名称 df

[[email protected] 桌面]# df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda2       14987656 7256016   6963640  52% /
tmpfs             502068      76    501992   1% /dev/shm
/dev/sda1         487652   34962    427090   8% /boot
/dev/sr0         3824484 3824484         0 100% /media/CentOS_6.8_Final

 # 新建磁盘分区

 # 1 进入fdisk界面中

[[email protected] 桌面]# fdisk /dev/sdb

# 2 查看帮助(输入m)

Command (m for help): 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
   m   print this menu
   n   add a new partition
   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 partitions system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)

 # 3 输入n新建一个分区

Command (m for help): n
Command action
   e   extended                    # 副分区(扩展分区,逻辑上的,只能一个)
   p   primary partition (1-4)     # 主分区(最多能创建4个)
p                                  # 输入p来新建一个主分区
Partition number (1-4): 1          # 输入1表示新建第一个主分区
First cylinder (1-2610, default 1):     # 第一个不必输入分区编号,直接按下回车键(如若只创建一个分区,那么该分区从1-2610)
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): +5G    ## 第一个分区为一开始的大小到5G

 # 4 查看当前分区信息

Command (m for help): p            # 查看当前的分区信息

Disk /dev/sdb: 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: 0x3329997a

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         654     5253223+  83  Linux        # 此处为第一个分区
Device      # 设备文件名称,
Boot        # 表示是否为开机引导模块
Start End      # 表示这个分区在哪个柱面号码之间,可以决定次分区的大小
Blocks       # 以1K为单位的容量
ID          # 
System        # 所属系统

 # 5 创建第二个分区,并查看分区信息

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (655-2610, default 655): 
Using default value 655
Last cylinder, +cylinders or +size{K,M,G} (655-2610, default 2610): +5G

Command (m for help): p

Disk /dev/sdb: 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: 0x3329997a

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         654     5253223+  83  Linux
/dev/sdb2             655        1308     5253255   83  Linux

 # 6 当根据上方操作新建了4个主分区后,打印当前分区情况(不能再新建主分区,只能创建4个主分区)

Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         654     5253223+  83  Linux
/dev/sdb2             655        1308     5253255   83  Linux
/dev/sdb3            1309        1962     5253255   83  Linux
/dev/sdb4            1963        2610     5205060   83  Linux

 # 7 删除一个分区

# 删除一个分区
Command (m for help): d
Partition number (1-4): 4    # 输入要删除的分区的编号


# 再次查看有没有删除分区
Command (m for help): p
(前面省略)
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         654     5253223+  83  Linux
/dev/sdb2             655        1308     5253255   83  Linux
/dev/sdb3            1309        1962     5253255   83  Linux

 # 8 创建扩展分区(在扩展分区中再新建分区)

扩展分区:扩展分区只是逻辑上的概念,表示扩展分区将剩下的空间打包好了,可以再在扩展分区的基础上新建分区(扩展分区本身不用来存储文件,就是一个逻辑上的概念)

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
e        # 选择创建扩展分区
Selected partition 4
First cylinder (1963-2610, default 1963): 
Using default value 1963
Last cylinder, +cylinders or +size{K,M,G} (1963-2610, default 2610): 
Using default value 2610


# 再次查看当前新建的扩展分区
Command (m for help): p
(前面省略)
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         654     5253223+  83  Linux
/dev/sdb2             655        1308     5253255   83  Linux
/dev/sdb3            1309        1962     5253255   83  Linux
/dev/sdb4            1963        2610     5205060    5  Extended

# 9 再扩展分区的基础上新建分区

Command (m for help): p
(前面省略)
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         654     5253223+  83  Linux
/dev/sdb2             655        1308     5253255   83  Linux
/dev/sdb3            1309        1962     5253255   83  Linux
/dev/sdb4            1963        2610     5205060    5  Extended
/dev/sdb5            1963        2094     1060258+  83  Linux        # 扩展分区上新建的分区(称为逻辑分区)

# 10 保存分区

Command (m for help): w                        # 保存分区
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
[[email protected] 桌面]# partprobe             # 更新当前分区
Warning: WARNING: the kernel failed to re-read the partition table on /dev/sda (设备或资源忙).  As a result, it may not reflect all of your changes until after reboot.
[[email protected] 桌面]# ls /dev/sdb            # 查看分区情况
/dev/sdb    

 

二,格式化

 # mkfs

# 2 多种格式化方法
[email protected] 桌面]# mkfs
mkfs          mkfs.ext2     mkfs.ext4     mkfs.msdos    
mkfs.cramfs   mkfs.ext3     mkfs.ext4dev  mkfs.vfat
# 3 格式化分区例子 格式化sdb3
[[email protected] 桌面]# mkfs.ext4 /dev/sdb2
mke2fs 1.41.12 (17-May-2010)
文件系统标签=            # 指的是分区的名称
操作系统:Linux
块大小=4096 (log=2)        # block的大小设置为4K
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
328656 inodes, 1313313 blocks        # 该行决定inode/block数量
65665 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=1346371584
41 block groups
32768 blocks per group, 32768 fragments per group
8016 inodes per group
Superblock backups stored on blocks: 
    32768, 98304, 163840, 229376, 294912, 819200, 884736

正在写入inode表: 完成                            
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成

This filesystem will be automatically checked every 24 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

# -t:可以接文件系统进行格式,如ext2

# mke2fs 可以用来指定格式化时的的各项参数

[[email protected] 桌面]# mke2fs -j -L "doaoao1" -b 2048 -i 8192 /dev/sdb3 
mke2fs 1.41.12 (17-May-2010)
文件系统标签=doaoao1
操作系统:Linux
块大小=2048 (log=1)
分块大小=2048 (log=1)
Stride=0 blocks, Stripe width=0 blocks
656880 inodes, 2626626 blocks
131331 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=540016640
161 block groups
16384 blocks per group, 16384 fragments per group
4080 inodes per group

# 卷标设置为doaoao1
# block大小指定为2048
# 每8192bytes分配一个node
# 构建journal为EXT3文件系统
# 格式化分区 /dev/sdb3 
三,磁盘检验

 # fsck

-t    # 
-A    # 依据/etc/fstab的内容,将需要的设备扫描一遍
-a    # 自动修复检查到的有问题的扇区
-y    # 与a类似
-C    # 可以再检验过程中使用一个直方图来显示目前进度

EXT2/EXT3的额外功能
-f    # 强制检查
-D    # 针对文件系统下的目录进行优化配置


# 检验 /dev/sdb2
[[email protected] 桌面]# fsck -Cf /dev/sdb2 fsck from util-linux-ng 2.17.2 e2fsck 1.41.12 (17-May-2010) 第一步: 检查inode,块,和大小 第二步: 检查目录结构 第3步: 检查目录连接性 /lost+found未找到.创建<y>? (下面省略)

 # badblocks

用来检擦硬盘或者软盘扇区有没有环轨的命令 

[[email protected] 桌面]# badblocks -xxx [设备名称]
-s    # 在屏幕上列出进度
-v    # 可以在屏幕上看到进度
-w    # 使用写入的方式来测试

# 例子

[[email protected] 桌面]# badblocks -sv /dev/sdb2
 四,挂载/卸载

 # 挂载

[[email protected] 桌面]# mount /dev/sdb2 /test_sdb1/
[[email protected] ~]# mkdir /test1                // 创建用来挂载的文件夹
[[email protected] ~]# mkdir /test2                // 创建用来挂载的文件夹
[[email protected] ~]# mkdir /test3                // 创建用来挂载的文件夹
[[email protected] ~]# mount /dev/sdb3 /test1/        // 挂载
[[email protected] ~]# mount /dev/sdb3 /test2/
[[email protected] ~]# mount /dev/sdb3 /test3/
[[email protected] ~]# mount /dev/sdb3 /opt/
[[email protected] ~]# df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda2       14987656 4414456   9805200  32% /
tmpfs             502068     224    501844   1% /dev/shm
/dev/sda1         487652   34962    427090   8% /boot
/dev/sdb2        5039624   10248   4766716   1% /test_sdb1
/dev/sdb3        5039624   10264   4766700   1% /test1
/dev/sdb3        5039624   10264   4766700   1% /test2
/dev/sdb3        5039624   10264   4766700   1% /test3
/dev/sdb3        5039624   10264   4766700   1% /opt

 

# 当在挂载目录/opt下创建一个文件时,其它挂载目录下也会跟着创建

# 进入目录/opt/
[[email protected] ~]# cd /opt/

# 在/opt/下创建一个文件a.txt
[[email protected] opt]# touch a.txt
[[email protected] opt]# cd
[[email protected] ~]# ls /opt/
a.txt  lost+found
[[email protected] ~]# ls /test1/
a.txt  lost+found
[[email protected] ~]# ls /test2/
a.txt  lost+found

# 将文件a.txt删除
[[email protected] ~]# rm -rf /test1/a.txt
[[email protected] ~]# ls /opt
lost+found
[[email protected] ~]# ls /test3
lost+found

# 在/opt/下创建一个文件abc.txt
[[email protected] ~]# touch /test3/abc.txt
[[email protected] ~]# ls /opt/
abc.txt  lost+found
[[email protected] ~]# ls /test2/
abc.txt  lost+found

 

# 卸载

[[email protected] ~]# umount /test3
[[email protected] ~]# df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda2       14987656 4414480   9805176  32% /
tmpfs             502068     224    501844   1% /dev/shm
/dev/sda1         487652   34962    427090   8% /boot
/dev/sdb2        5039624   10248   4766716   1% /test_sdb1
/dev/sdb3        5039624   10264   4766700   1% /test1
/dev/sdb3        5039624   10264   4766700   1% /test2
/dev/sdb3        5039624   10264   4766700   1% /opt

## 当opt的源设备被卸载时,再在opt中新建文件时,系统就会去找opt的上一层目录(根目录),看根目录挂载在哪个分区中,将新建的文件放在该分区中

[[email protected] ~]# umount /opt
[[email protected] ~]# ls /opt
rh
[[email protected] ~]# touch /opt/abc.txt
[[email protected] ~]# ls /opt
abc.txt  rh
[[email protected] ~]# 
[[email protected] ~]# df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda2       14987656 4414480   9805176  32% /            # 根目录在sda2上
tmpfs             502068     224    501844   1% /dev/shm
/dev/sda1         487652   34962    427090   8% /boot
/dev/sdb2        5039624   10248   4766716   1% /test_sdb1
/dev/sdb3        5039624   10264   4766700   1% /test1
/dev/sdb3        5039624   10264   4766700   1% /test2

 

待补充...




以上是关于Linux基础_磁盘分区的主要内容,如果未能解决你的问题,请参考以下文章

Linux基础--03--磁盘分区挂载

linux笔记_磁盘分区

linux基础夯实之磁盘分区原理知识

Linux基础-Linux中的磁盘

Linux 基础 - 磁盘管理 -04

linux[基础]-22-[磁盘分区管理]-[交换分区]-[02]