1. 磁盘分区

硬盘逻辑上被划分成块、磁道、磁柱和分区

  • 块:是盘片上寻址(访问)的最小单位,一个块可以存储一定字节的数据
  • 磁道:是一系列头尾相连的块租场的圆圈
  • 磁柱:是由一叠磁道,由在相同半径上每个盘面的磁道所组成

虚拟机添加虚拟硬盘:

设置 —— 选择硬盘 —— 添加 —— 创建一个新的虚拟磁盘 —— 磁盘类型 SCSI —— 一直下一步即可

硬盘分区可分为主分区、拓展分区和逻辑分区,一个硬盘最多划分出 4 个主分区,一个 block 等于 8 * 512 b

每个硬盘上支持分区的数量有一点限制:

  • SCSI 硬盘:最多 15 个
  • IDE 硬盘:63 个

各种设备在 Linux 中的文件名:

设备 设备在Linux中的文件名
IDE 硬盘 /dev/hd[a-d]
SCSI 硬盘 /dev/sd[a-p]
U 盘 /dev/sd[a-p] 与 SCSI 硬盘一样
CDROM /dev/sr0
[root@hj ~]# ls /dev/sd         # tab 键
sda   sda1  sda2  sda3  sda4  sda5  sdb   [root@hj ~]# fdisk -l /dev/sdb           # 查看硬盘 sdbDisk /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   # 扇区大小(逻辑/物理都是 512 b)
I/O size (minimum/optimal): 512 bytes / 512 bytes   # 读/取(最小/优化)
Disk identifier: 0x00000000

1.1 fdisk 命令

管理磁盘分区

语法:

fdisk [磁盘名称]

fdisk 命令中参数的作用

参数 作用
m 查看全部可用的参数
n 添加新的分区
d 删除某个分区信息
l 列出所有可用的分区类型
t 改变某个分区的类型
p 查看分区信息
w 保存并退出
q 不保存直接退出

示例:

首先输入命令 fdisk /dev/sdb,尝试管理硬盘 sdb,看到提示信息,提示输入 m 获得帮助:

[root@hj ~]# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x2707982c.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won\'t be recoverable.Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)WARNING: DOS-compatible mode is deprecated. It\'s strongly recommended toswitch off the mode (command \'c\') and change display units tosectors (command \'u\').Command (m for help): m
Command actiona   toggle a bootable flagb   edit bsd disklabelc   toggle the dos compatibility flagd   delete a partitionl   list known partition typesm   print this menun   add a new partitiono   create a new empty DOS partition tablep   print the partition tableq   quit without saving changess   create a new empty Sun disklabelt   change a partition\'s system idu   change display/entry unitsv   verify the partition tablew   write table to disk and exitx   extra functionality (experts only)

输入 n 创建一个新的分区,系统会提示你是输入 p 创建主分区,还是 e 创建拓展分区,这里输入 p 来创建一个主分区:

Command (m for help): n
Command actione   extendedp   primary partition (1-4)

在输入 p 确定创建一个主分区后,系统要求确定分区编号(范围 1 ~ 4),以及扇区的大小,在这里直接输入大小即可(如 + 5G):

p
Partition number (1-4): 1
First cylinder (1-2610, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): +5G

创建分区成功后,输入 p 查看分区,输入 w 保存退出:

Command (m for help): pDisk /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: 0x98527a04Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         654     5253223+  83  Linux
Command (m for help): w
The partition table has been altered!Calling ioctl() to re-read partition table.
Syncing disks.

1.2 partprobe 命令

重新初始化内存中内核的分区表(手动将分区信息同步到内核,建议输入两次),最后输入 partprobe 更新分区列表:

[root@hj ~]# 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.
Warning: 无法以读写方式打开 /dev/sr0 (只读文件系统)。/dev/sr0 已按照只读方式打开。
Warning: 无法以读写方式打开 /dev/sr0 (只读文件系统)。/dev/sr0 已按照只读方式打开。
Error: 无效的分区表 - /dev/sr0 出现递归分区。
[root@hj ~]# 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.
Warning: 无法以读写方式打开 /dev/sr0 (只读文件系统)。/dev/sr0 已按照只读方式打开。
Warning: 无法以读写方式打开 /dev/sr0 (只读文件系统)。/dev/sr0 已按照只读方式打开。
Error: 无效的分区表 - /dev/sr0 出现递归分区。

分区类型

   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
/dev/sdb6            2095        2356     2104483+  83  Linux

主分区加拓展分区最多四个分区,拓展分区不能写入数据,只能包含逻辑分区,后面的逻辑分区是在拓展分区上拓展的。

  • 主分区:最多只能有 4 个分区
  • 拓展分区:
    • 最多只能有1个
    • 主分区加拓展分区最多有4个
    • 不能写入数据,只能包含逻辑分区
  • 逻辑分区

总结:创建分区流程:fdisk /dev/sdx —— 创建分区(n)—— 分区类型(p/n) —— 分区编号(1 ~ 4)—— 分区大小(+xG)—— 保存退出(w)—— 更新分区列表(partprobe)

2. 格式化与挂载分区

上述创建硬盘分区后,还不能立即使用,还需要创建文件系统,即格式化

格式化就是将分区中的硬盘空间划分成大小相等的一些数据块(Block),以及设定这个分区中多少个 i 节点可以使用等。

文件系统是操作系统用于明确磁盘或分区上的文件的方法和数据结构,即在磁盘上组织文件的方法,常见的文件系统类型:

文件系统类型 说明 系统
ext2 Linux 系统中标准的文件系统 Linux
ext3 一种日志式文件系统 Linux
ext4 一种针对 ext3 系统的扩展日志式文件系统 Linux
lvm 逻辑盘卷管理 Linux
iso9660 目前唯一的通用的光盘文件系统 Linux/Winows
NTFS Windows 上的一种文件系统 Windows

2.1 mkfs 命令

mkfs(make filesystem)格式化磁盘,拓展分区不能格式化

语法:

mkfs.文件系统 分区
mkfs.ext4 /dev/sdb1

2.2 mount 命令

mount 命令将存储设备与挂载点进行关联(即将磁盘上的分区与挂载点直接的映射)

挂载是分配盘符的过程,挂载点相当于盘符,具体步骤如下:

首先创建一个挂载设备的挂载点目录,然后使用 mount 命令将存储设备与挂载点进行关联

mount 磁盘分区 挂载点目录
mount /dev/sdb1 /sdb1       # 把磁盘 sdb 的第一个分区挂载到 /sdb1 目录下

示例:

[root@hj ~]# mkdir /sdb/sdb1    # 创建一个挂载目录
[root@hj ~]# mount /dev/sdb1 /sdb/sdb1     # 将 sdb1 挂载到 /sdb/sdb1

2.3 df 命令

查看挂载状态和硬盘使用量信息

语法:

df
-a      # 显示所有磁盘
-h      # 单位转换,也可用于查看硬盘/分区使用情况
-T      # 查看已挂载的的分区和文件系统类型
-i      # 查看 i 结点
mount   # 也可以使用 mount 命令查看具体的挂载参数
[root@hj ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda5        24G  3.8G   19G  17% /
tmpfs          1002M   80K 1002M   1% /dev/shm
/dev/sda1       477M   39M  413M   9% /boot
/dev/sda3       1.9G  3.1M  1.8G   1% /home
/dev/sr0        3.7G  3.7G     0 100% /media/CentOS_6.8_Final
/dev/sdb1       4.9G   11M  4.6G   1% /sdb/sdb1
/dev/sdb2       4.9G   11M  4.6G   1% /sdb/sdb2
/dev/sdb3       4.9G   11M  4.6G   1% /sdb/sdb3
/dev/sdb5       988M  1.3M  935M   1% /sdb/sdb5
/dev/sdb6       2.0G  3.1M  1.9G   1% /sdb/sdb6

2.4 du 命令

du 命令用于查看文件数据占用量

语法:

du [选项] [文件]
du -sh /newFS/  # 查看 newFS目录下所有文件的大小
du -sh /*   # 查看根目录下所有一级目录分别占用空间大小

2.5 总结

磁盘从分区,到最后能使用总共分为四步,其步骤如下:

  • 创建分区:fdisk /dev/sdb
  • 更新分区表:partprobe
  • 格式化制作文件系统:mkfs.ext4 /dev/sdb{1..3}
  • 挂载:mount /dev/sdb1 /sdb/sdb1

3. 文件系统的挂载与卸载

ext2/3/4 是日志文件系统,其过程是在写入文件内容时,首先写入到日志中,再由日志存储到硬盘中,这样有利于后期的查看设备运行情况。

ext 文件系统的缺点是仅适用于存储量比较小的情况,对现在的大量数据情况并不适用,目前比较流行且适用海量数据的文件系统是 xfs

3.1 挂载

挂载是指讲一个设备(通常指存储设备)挂接到一个已存在的目录上,挂载命令 mount

同一个分区可以挂载到几个目录下,即可以有几个挂载点,原分区下的文件删除新建修改,挂载目录下的文件也将被修改

# 几个挂载点
mount /dev/sdb1 /test1
mount /dev/sdb1 /test2
mount /dev/sdb1 /test3

3.2 卸载

umount 命令实现文件系统的卸载

语法:

umount 挂载点(目录)
-l      # 强制卸载
umount /test1

首先将 sdb1 挂载到 /spt,然后新建一个文件 ddd,再卸载 /spt/,再查看 /spt 目录会发现目录下的文件 ddd 消失了,造成这种情况的原因是:

目录只是相当于一个水管,是连接挂载设备与挂载目录的 水管,如上面的例子,当卸载掉 /spt/ 目录后,再新建文件到其目录下,因为已经卸载掉 /spt 目录与挂载设备 sdb1 的映射,所有文件被存储到 /spt 目录的上一级目录根目录的挂载设备上,即 sda5。

再将 /spt 与 sdb1 挂载,查看 /spt ,发现 ddd 又出现了。

这也叫造成了 ddd 被存储到 sdb1中,a.txt 被存储到 sda5 中(关于根目录的挂载设备是哪个,可以使用 df -T查看)

[root@hj ~]# mkdir /spt
[root@hj ~]# mount /dev/sdb1 /spt/
[root@hj ~]# mkdir /spt/ddd
[root@hj ~]# ls /spt/
ddd lost+found
[root@hj ~]# umount /spt/
[root@hj ~]# touch /spt/a.txt
[root@hj ~]# ls /spt/
a.txt
[root@hj ~]# mount /dev/sdb1 /spt/
[root@hj ~]# ls /spt/
ddd lost+found

3.3 挂载后重启失效问题

使用 mount 命令挂载分区后重启就会失效,因为这个挂载是临时的,需要修改配置文件 /etc/fstab,在最下方添加挂载分区信息:

vim /etc/fstab
/dev/sdb1 /sdb/sdb1 ext4 defaults 0 0   # 分别为挂载设备 挂载点 文件系统类型 等

4. 磁盘用满的两种情况

4.1i 节点

每个文件在创建的时候,都会有一个 i 节点,里面存储了文件的一些基本信息(如权限信息、创建日期、大小等),这些信息被称为 —— 元数据。

inode ,i 节点是一个数据结构,存储普通文件、目录或其他文件的基本信息(如权限信息、创建日期、大小等)即元数据。

查看一个文件的 i 节点号:

[root@hj tmp]# ls -i test/1.txt
403954 test/1.txt           # i 节点号

查看目录 i 结点号:

ls -di test/         # 查看目录的 i 的号

查看分区的 i 节点使用情况:

[root@hj tmp]# df -i
Filesystem      Inodes  IUsed   IFree IUse% Mounted on
/dev/sda5      1550400 103540 1446860    7% /
tmpfs           256285      5  256280    1% /dev/shm
/dev/sda1       128016     39  127977    1% /boot
/dev/sda3       128000     30  127970    1% /home
/dev/sr0             0      0       0     - /media/CentOS_6.8_Final
/dev/sdb1       328656     12  328644    1% /sdb/sdb1
/dev/sdb2       328656     11  328645    1% /sdb/sdb2
/dev/sdb3       328656     11  328645    1% /sdb/sdb3
/dev/sdb5        66384     11   66373    1% /sdb/sdb5
/dev/sdb6       131648     11  131637    1% /sdb/sdb6   # 总共可以存储131648 个 i 节点,也就是 131648 个文件

4.2 磁盘存满的两种情况

磁盘用满有两种情况:

  • 磁盘空间未满,但是文件数目超出了限制,即 i 节点不够用
  • 磁盘空间满

个人电脑很少出现 i 节点满情况,服务器上比较多,主要是日志文件(access.log);当日志很大时就需要日志切割:

mv access.log access.log1    # 日志切割

长此以往,本地硬盘空间逐渐增大,就需要备份原来的日志文件,备份日志文件需要注意的是,首先要打包日志文件,再进行备份,以免出现 i 结点不够的情况。

5. 文件系统

[root@hj tmp]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda5        24G  3.8G   19G  17% /
tmpfs          1002M   80K 1002M   1% /dev/shm
/dev/sda1       477M   39M  413M   9% /boot
/dev/sda3       1.9G  3.1M  1.8G   1% /home
/dev/sr0        3.7G  3.7G     0 100% /media/CentOS_6.8_Final
/dev/sdb1       4.9G   11M  4.6G   1% /sdb/sdb1
/dev/sdb2       4.9G   11M  4.6G   1% /sdb/sdb2
/dev/sdb3       4.9G   11M  4.6G   1% /sdb/sdb3
/dev/sdb5       988M  1.3M  935M   1% /sdb/sdb5
/dev/sdb6       2.0G  3.1M  1.9G   1% /sdb/sdb6

查看上面的分区容量使用情况发现,分区还未使用便已经有一定空间被使用(如/dev/sdb6 被使用 3.1M),这些被使用的空间存储的是 文件系统信息

对每个分区来说,最小的存储单位 block,一个 block = 8 * 512 b = 4 K

文件系统信息

文件创建过程:

  • super block:监控 i 节点状态(活跃、忙碌),同时也要分配 i 节点
  • inode block:inode 号,元数据
  • directory block:目录块,存储文件名和对应的 i 节点

当文件被创建时,首先找到的是其根目录的 i 结点,再通过指针找到 directory block 中的文件 i 节点,如果没有则新建,新建好之后再把数据存储到相应位置。

删除文件操作:

将文件的 i 节点通过 super block 标记为 free(活跃状态)

5.1 ln 命令

ln 命令用于创建链接文件,其语法如下:

ln [选项] 源文件 链接文件

选项:

  • -s:创建软链接(不带 s 则默认创建硬链接)
  • -f:强制创建文件或目录的链接
  • -i:覆盖前先询问
  • -v:显示创建链接的过程

5.1 软链接(symbolic link)

ln -s 源文件 链接文件   # 软链接

示例:

[root@hj ~]# ln -s /a/source.txt /b/des.txt
[root@hj ~]# ll /b/des.txt
lrwxrwxrwx. 1 root root 13 10月 20 22:11 /b/des.txt -> /a/source.txt      # l 表示为软链接[root@hj ~]# ls -i /a/source.txt # i 节点不同
1308106 /a/source.txt[root@hj ~]# ls -i /b/des.txt
1308107 /b/des.txt

特点:

  • 相当于 Windows 上的快捷方式
  • 删除链接文件,源文件无影响
  • 删除源文件,链接文件失效
  • 修改源文件\链接文件,内容都将会改变
  • i 节点不同
  • 软链接可以跨分区(因为它指向的是文件而非 inode,每个分区相同文件名是可以存在的

5.2 硬链接(hard link)

  • i 节点相同
  • ln 源路径 目标路径
  • 删除链接文件,源文件无影响
  • 删除源文件,链接文件无影响
  • 修改源文件\链接文件,内容都将改变
  • 硬链接不a可以跨分区,因为它指向的 inode 号,而不是 文件本身
  • 【.】是当前目录的硬链接,【..】是上一级目录的硬链接
ln 源文件 链接文件

硬盘分区、格式化及文件系统管理相关推荐

  1. 电脑硬盘分区格式化后文件怎么恢复

    电脑硬盘分区格式化后文件怎么恢复 硬盘格式化可以大概说是很少盘算机用户会运用到的服从.通常来说,除非是准备对硬盘上的数据举行完全的清空,否则都不会要运用到硬盘格式化如许的操纵.大概另有的人会问,清空数 ...

  2. Centos parted分区超过2TB硬盘-分区格式化

    Centos怎么用parted分区超过2TB硬盘-分区格式化 安装好parted命令之后,通过fdisk -l查看硬盘所在分区名称 关于lvm分区教程可以参考: 图形界面:jingyan.baidu. ...

  3. Linux磁盘分区逻辑卷文件系统管理

    文章目录 两种分区工具 一.fdisk 分区工具 二.格式化 三.挂载使用分区 四.parted 分区工具 五.交换空间 5.1.使用分区做交换空间 5.2.使用文件所占用的硬盘空间,充当交换空间 逻 ...

  4. linux添加硬盘分区设置柱面,linux 下添加新硬盘设备和硬盘分区格式化挂载使用磁盘配额限制...

    磁盘管理 1.查看硬盘设备信息 fdisk -l 2.磁盘分区.格式化.挂载使用 1).查看硬盘信息:fdisk -l [root@localhost ~]# fdisk -l Disk /dev/s ...

  5. Ubuntu硬盘分区/格式化/挂载文件系统各种应用(转载)

    摘要:硬盘上有些什么.文件们都有多大,在有些时候我们是需要关心的,所以这里简单介绍两个命令:df.du.一个Ubuntu硬盘可以划分4个区,3个主要分区,一个扩展分区,而扩展分区里可以划分n个逻辑分区 ...

  6. 硬盘分区丢失的文件数据怎么恢复?

    硬盘分区这个操作相信好多人都不陌生,在电脑系统出现崩溃时会需要重新做系统,那么就需要给硬盘分区,那么万一在分区的过程中不小心将文件丢失了,还有什么办法可以恢复呢? 要对分区数据进行恢复,我们首先要保持 ...

  7. 【win10小技巧之硬盘恢复】硬盘分区里面的文件都变成了乱码

    如何恢复硬盘名和里面的数据都变成乱码的硬盘分区? 硬盘分区表坏掉了.首先必须注意一定不要再往硬盘写入任何数据: 已经不能启动进系统的话,就设置开机光盘或U盘引导电脑进WinPE(需要你有带WinPE的 ...

  8. linux+系统的硬盘分区格式化,linux系统将硬盘分区格式化成ext4分区挂载

    1.将硬盘分区(这里就分一个区) fdisk /dev/cciss/c0d1 交互信息: Command (m for help): n Command action e extended p pri ...

  9. linux+系统的硬盘分区格式化,linux硬盘分区、格式化、挂载超详细步骤

    在linux中增加一块或者多块硬盘来实现扩容或者备份数据,分区.格式化.挂载是不可避免的三个步骤.下面用超详细的步骤介绍如何对一块新的硬盘进行分区.格式化.挂载的操作. 分区→格式化→挂载→使用 [分 ...

最新文章

  1. 求二叉树上结点的路径_剑指offer 二叉树
  2. Windows Phone 7 网络编程之留言板应用
  3. RK 3299 Ubuntu 配置密钥
  4. UA OPTI570 量子力学3 单个自由粒子的薛定谔方程
  5. php 批量压缩png,利用Python批量压缩png方法实例(支持过滤个别文件与文件夹)...
  6. FZU - 2042 The Mad Mathematician(数位dp)
  7. 通过SD卡来安装Linux系统
  8. 数据库笔记13:创建与使用游标
  9. 数据结构排序系列详解之一 插入排序
  10. .Net 程序员应该知道的工具和网站
  11. Axure RP 9 for Mac(原型设计软件)
  12. JavaScript 浏览器端 this的指向性问题
  13. 液晶坏点如何鉴别 LCD显示器选购之道
  14. 你真的知道面向过程和面向对象的区别吗?
  15. 压力测试软件怎么用,鲁大师温度压力测试如何使用
  16. 为什么“高大上”的算法工程师变成了数据民工?
  17. wireshark手机抓包分析(一)
  18. 前端团队代码规范最佳实践,个人成长必备!
  19. 【Python项目】Python基于tkinter实现笔趣阁小说下载器(附源码)
  20. 开学季·东莞理工学院

热门文章

  1. music Elton John - Home Again
  2. pytorch dense to coo, edge_index to coo
  3. 英国语文美国语文对比_在英国或美国托管您的网站更好吗?
  4. jQuery 多个class选择器
  5. 在自己的项目中使用阿里云字体图标
  6. 网页设计期末作业-网上咖啡店(仿星巴克)
  7. python布尔型数组_《Python数据分析》一2.10 用布尔型变量索引NumPy数组
  8. 计算机能力用英语介绍自己的家庭,我的家庭英文作文(精选10篇)
  9. 一道求微信共同好友数的SQL题
  10. IDEA找不到配置文件