一、硬盘结构

1、硬盘的逻辑结构



硬盘的大小是使用“磁头数×柱面数×扇区数×每个扇区的大小”这样的公式来计算的。其中磁头数(Heads)表示硬盘总共有几个磁头,也可以理解成为硬盘有几个盘面,然后乘以二;柱面数 (Cylinders)表示硬盘每一面盘片有几条磁道;扇区数(Sectors)表示每条磁道上有几个扇区;每个扇区的大小一般为 512Byte。扇区也是磁盘的最小存贮单位。

2、硬盘接口
  • IDE 硬盘接口(Integrated Drive Electronics,并口,即电子集成驱动器)也称作“ATA 硬盘” 或“PATA 硬盘”,是早期机械硬盘的主要接口,ATA133 硬盘的理论速度可以达到 133MB/s (此速度为理论平均值)。
  • SATA 接口(Serial ATA,串口)是速度更高的硬盘标准,具备了更高的传输速度,并具备了更强的纠错能力。目前已经是 SATA 三代,理论传输速度达到 600MB/s(此速度为理论平均值)
  • SCSI 接口(Small Computer System Interface,小型计算机系统接口)广泛应用在服务器上, 具有应用范围广、多任务、带宽大、CPU 占用率低及支持热插拔等优点,理论传输速度达到 320MB/s

二、linux文件系统

1. Linux 文件系统的特性
  • super block(超级块):记录整个文件系统的信息,包括 block 与 inode 的总量,已经使用的 inode 和 block 的数量,未使用的 inode 和 block 的数量,block 与 inode 的大小,文件系统的挂载时间,最近一次的写入时间,最近一次的磁盘检验时间等。
  • date block(数据块,也称作 block):用来实际保存数据的,block 的大小(1KB、2KB 或 4KB)和数量在格式化后就已经决定,不能改变,除非重新格式化。每个 blcok 只能保存一个文件的数据,要是文件数据小于一个 block 块,那么这个 block 的剩余空间不能被其他文件使用,要是文件数据大于一个 block 块,则占用多个 block 块。Windows 中磁盘碎片整理 工具的原理就是把一个文件占用的多个 block 块尽量整理到一起,这样可以加快读写速度。
  • inode:用来记录文件的权限(r、w、x),文件的所有者和属 组,文件的大小,文件的状态改变时间(ctime),文件的最近一次读取时间(atime),文件的最近一次修改时间(mtime),文件的数据真正保存的 block 编号。每个文件需要占用一个 inode。
2、常见文件系统
文件系统 简介
ext Linux 中最早的文件系统,由于在性能和兼容性上具有很多缺陷,现在已经很少使用
ext2 是 ext 文件系统的升级版本,Red Hat Linux 7.2 版本以前的系统默认都是 ext2 文件 系统。于 1993 年发布,支持最大 16TB 的分区和最大 2TB 的文件 (1TB=1024GB=1024×1024KB)
ext3 是 ext2 文件系统的升级版本,最大的区别就是带日志功能,以便在系统突然停止时 提高文件系统的可靠性。支持最大 16TB 的分区和最大 2TB 的文件
ext4 是 ext3 文件系统的升级版。ext4 在性能、伸缩性和可靠性方面进行了大量改进。ext4 的变化可以说是翻天覆地的,比如向下兼容 ext3、最大 1EB 文件系统和 16TB 文件、无 限数量子目录、Extents 连续数据块概念、多块分配、延迟分配、持久预分配、快速 FSCK、 日志校验、无日志模式、在线碎片整理、inode 增强、默认启用 barrier 等。它是 CentOS 6.x 的默认文件系统
xfs XFS 最早针对 IRIX 操作系统开发,是一个高性能的日志型文件系统,能够在断电以及 操作系统崩溃的情况下保证文件系统数据的一致性。它是一个 64 位的文件系统,后来 进行开源并且移植到了 Linux 操作系统中,目前 CentOS 7.x 将 XFS+LVM 作为默认的文 件系统。据官方所称,XFS 对于大文件的读写性能较好。
swap swap 是 Linux 中用于交换分区的文件系统(类似于 Windows 中的虚拟内存),当内存 不够用时,使用交换分区暂时替代内存。一般大小为内存的 2 倍,但是不要超过 2GB。 它是 Linux 的必需分区
NFS NFS 是网络文件系统(Network File System)的缩写,是用来实现不同主机之间文件 共享的一种网络服务,本地主机可以通过挂载的方式使用远程共享的资源
iso9660 光盘的标准文件系统。Linux 要想使用光盘,必须支持 iso9660 文件系统
fat 就是 Windows 下的 fat16 文件系统,在 Linux 中识别为 fat
vfat 就是 Windows 下的 fat32 文件系统,在 Linux 中识别为 vfat。支持最大 32GB 的分区 和最大 4GB 的文件
NTFS 就是 Windows 下的 NTFS 文件系统,不过 Linux 默认是不能识别 NTFS 文件系统的,如 果需要识别,则需要重新编译内核才能支持。它比 fat32 文件系统更加安全,速度更快, 支持最大 2TB 的分区和最大 64GB 的文件
proc Linux 中基于内存的虚拟文件系统,用来管理内存存储目录/proc
sysfs 和 proc 一样,也是基于内存的虚拟文件系统,用来管理内存存储目录/sysfs
tmpfs 也是一种基于内存的虚拟文件系统,不过也可以使用 swap 交换分区

三、常用的硬盘管理命令

df 查看分区的使用情况
[root@centos ~]# df  -h
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/vg_centos-lv_root ext4 18G 1.9G 15G 12% /
tmpfs tmpfs 491M 0 491M 0% /dev/shm
/dev/sda1 ext4 477M 34M 418M 8% /boot
2、du 统计文件大小
[root@centos ~]# du -h #统计当前文件大小
76K .
3、fsck 文件系统修复命令
[root@centos ~]# fsck -y /dev/sda1     #自动修复/dev/sda1
fsck from util-linux-ng 2.17.2
e2fsck 1.41.12 (17-May-2010)
/dev/sda1 is mounted.
e2fsck: Cannot continue, aborting.
4、dumpe2fs 显示磁盘状态
[root@centos ~]# dumpe2fs /dev/mapper/vg_centos-lv_root -h
dumpe2fs 1.41.12 (17-May-2010)
Filesystem volume name: <none> # 卷标名
Last mounted on: / # 挂载目录
Filesystem UUID: 92e4492e-b1a7-4e8b-a82f-09ba6afedc08
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery extent 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: 1152816 # inode数量
Block count: 4605952 # block 数量
Reserved block count: 230297
Free blocks: 4027007 # 可使用的block块
Free inodes: 1096540 # 可使用de inode
First block: 0
Block size: 4096 # 一个block数量4096bytes
Fragment size: 4096
......
5、查看文件的详细信息
[root@centos ~]# stat 123.txt
File: `123.txt'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
#文件大小 占用块 系统分区块大小
Device: fd00h/64768d Inode: 924444 Links: 1
#存放文件的设备 inode 号 硬链接数
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
权限 属主 属组
Access: 2019-12-03 10:34:25.644828377 +0800 #访问时间
Modify: 2019-12-03 10:34:25.644828377 +0800 #文件数据修改时间
Change: 2019-12-03 10:34:25.644828377 +0800 #文件状态修改时间
6、判断文件类型
file  文件名   判断文件类型
type 命令名 判断命令类型

四、fdisk 命令手工分区

1 fdisk -l 查看系统所有硬盘及分区
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
.....
2、使用fdisk手工分区,首先需要准备一块新硬盘,虚拟机直接添加即可。

1)进入分区界面

fdisk /dev/sdb
输入 m 获取帮助
a toggle a bootable flag 设置可引导标记
b edit bsd disklabel 编辑 bsd 磁盘标签
c toggle the dos compatibility flag 设置 DOS 操作系统兼容标记
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 创建dos分区表
p print the partition table 打印分区列表
q quit without saving changes 离开不保存修改
s create a new empty Sun disklabel 新建空白 SUN 磁盘标签
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) 附加功能

2)简单分区

# 建立一个主分区
Command (m for help): n #创建新分区
Command action
e extended
p primary partition (1-4)
p #创建分区类型 主分区,或者扩展分区。主分区+扩展分区一共只能有4个。
Partition number (1-4): 1 #选择分区号,这里选择了1,所以该分区名为:sdb1
First cylinder (1-2610, default 1): #起始柱面,默认就行
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): +2G #指定分区大小,这里为2G,不带单位为柱面数。 Command (m for help): p #此时在打印分区信息,就可以看到已经分好了的sdb1 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: 0x65072461 Device Boot Start End Blocks Id System
/dev/sdb1 1 262 2104483+ 83 Linux 建立扩展分区
Command (m for help): n
Command action
e extended
p primary partition (1-4)
e
Partition number (1-4): 2
First cylinder (263-2610, default 263):
Using default value 263
Last cylinder, +cylinders or +size{K,M,G} (263-2610, default 2610): #不输入,默认到最后一个柱面,也就是使用全部剩余空间。
Using default value 2610 扩展分区建立完成后不能使用,还需要在扩展分区内建立逻辑分区。
我们来建立逻辑分区,逻辑分区会自动分配id,无需手动输入
Command (m for help): n
Command action
l logical (5 or over)
p primary partition (1-4)
l
First cylinder (263-2610, default 263):
Using default value 263
Last cylinder, +cylinders or +size{K,M,G} (263-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: 0xa080c4f9 Device Boot Start End Blocks Id System
/dev/sdb1 1 262 2104483+ 83 Linux
/dev/sdb2 263 2610 18860310 5 Extended
/dev/sdb5 263 916 5253223+ 83 Linux 按 w 保存退出
Command (m for help): w
The partition table has been altered! Calling ioctl() to re-read partition table.
Syncing disks.
3 partprobe 强制重读所有分区文件,重新挂载分区文件内所有分区。

这不是分区必须命令,如果没有提示重启,可以不执行,也可以重启系统。

4 格式化

建立文件系统 ext3 是 linux 默认文件系统

mkfs  -t  ext4  /dev/sdb1
mkfs -t ext4 /dev/sdb5 mkfs 命令非常简单易用,不过是不能调整分区的默认参数的(比如块大小是 4096),这些默认 参数除非特殊情况,否则不需要调整,如果想要调整就需要使用 mke2fs 命令进行重新格式化,
命令 格式如下: [root@localhost ~]# mke2fs [选项] 分区设备文件名
选项:
-t 文件系统: 指定格式化成哪个文件系统,如 ext2,ext3,ext4
-b 字节: 指定 block 块的大小
-i 字节: 指定“字节/inode”的比例,也就是多少个字节分配一个 inode
-j: 建立带有 ext3 日志功能的文件系统
-L 卷标名: 给文件系统设置卷标名,就不使用 e2label 命令设定了
举个例子:
[root@centos ~]# mke2fs -t ext4 -b 4096 /dev/sdb5 # 格式化分区,并指定 block 的大小为 4096字节
5 建立挂载点
linux,只有当分区被挂载才能被使用
[root@centos ~]# mkdir /mnt/sdb1
[root@centos ~]# mkdir /mnt/sdb5
6 挂载
mount  /dev/sdb1  /mnt/sdb1
mount /dev/sdb5 /mnt/sdb5
7 查看
[root@centos ~]# cd /mnt/sdb1
[root@centos sdb1]# df . -h
Filesystem Size Used Avail Use% Mounted on
/dev/sdb1 2.0G 3.1M 1.9G 1% /mnt/sdb1
8 自动挂载

修改分区自动挂载文件 vim /etc/fstab

 /dev/sdb1               /mnt/sdb1          ext4         defaults        1 2
第一列: 设备文件名
第二列 挂载点
第三列 文件系统
第四列 挂载选项
第五列 是否可以被备份 0 不备份 1 每天备份 2 不定期备份
第六列 是否检测磁盘 fsck 0 不检测 1 启动时检测 2 启动后检测
9 测试
重启测试
或者使用 mount -a 重新自动挂载fstab内未挂在设备。

五、手动swap分区

1、并修改为 swap 分区 ID
# 新建一个主分区。
Command (m for help): n
Command action
e extended
p primary partition (1-4)
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): +1G Command (m for help): t #更改分区类型
Selected partition 1 #选择分区
Hex code (type L to list codes): 82 # 类型id,这里82对应swap类型分区
Changed system type of partition 1 to 82 (Linux swap / Solaris) Command (m for help): p
Device Boot Start End Blocks Id System
/dev/sdb1 1 132 1060258+ 82 Linux swap / Solaris
2、格式化
[root@centos ~]# mkswap /dev/sdb1
Setting up swapspace version 1, size = 1060252 KiB
no label, UUID=e210e3c6-9ad7-4b33-88b3-74234159c794
3、使用 swap 分区
#先查看系统swap分区大小
[root@centos ~]# free -h
total used free shared buffers cached
Mem: 474M 140M 333M 236K 11M 46M
-/+ buffers/cache: 83M 391M
Swap: 1.9G 0B 1.9G #启动我们刚才添加的分区
[root@centos ~]# swapon /dev/sdb1 #再次查看
[root@centos ~]# free -h
total used free shared buffers cached
Mem: 474M 141M 333M 236K 11M 46M
-/+ buffers/cache: 83M 390M
Swap: 2.9G 0B 2.9G
4、取消使用
[root@centos ~]# swapoff /dev/sdb1
5、自动挂载
[root@centos ~]# vim /etc/fstab

/dev/sdb1         swap                    swap    defaults        0 0

文件系统常用命令与fdisk分区的更多相关文章

  1. Linux学习之文件系统常用命令(七)

    Linux文件系统常用命令 目录 df命令 du命令 fsck命令 dump2fs命令 df命令 df命令 统计文件系统的占有情况,分区用了多少空间,还剩多少空间 df [选项] [挂载点] 选项: ...

  2. Linux常用命令:fdisk mkfs mount umount fstab实现自动挂载

    写在前 记录点常用命令,fdisk mkfs mount和umount,以及fstab实现自动挂载 fdisk fdisk主要用于操作硬盘的分区表.分区,下面简单记一点最常用的部分 查看当前系统识别到 ...

  3. Linux系列教程(十八)——Linux文件系统管理之文件系统常用命令

    通过前面两篇博客,我们介绍了Linux系统的权限管理.Linux权限管理之ACL权限 介绍了通过设定 ACL 权限,我们为某个用户指定某个文件的特定权限,这在Linux只能对于一个文件只能有所有者权限 ...

  4. Linux学习 - 文件系统常用命令

    一.文件系统查看命令df df [选项] [挂载点] -a 查看所有文件系统信息,包括特殊文件系统 -h 使用习惯单位显示容量 -T 显示文件系统类型 -m 以MB为单位显示容量 -k 以KB为单位显 ...

  5. Linux 文件系统常用命令

    文件系统查看命令df df:查看分区,单位默认是KB df -h 统计目录或文件大小du du /etc/:会列出/etc/目录下的所有子目录所占的空间,最后给出/etc/目录的大小,属于高负载命令, ...

  6. Shell命令_文件系统常用命令df、du

    一.df(文件系统查看命令) [root@localhost ~]# df [选项] [挂载点] 选项: -a 显示所有的文件系统信息,包括特殊文件系统,如 /proc. /sysfs -h 使用习惯 ...

  7. linux笔记:文件系统管理-分区、文件系统以及文件系统常用命令

    linux分区类型: linux文件系统: df(查看文件系统容量和占用): du(统计文件或目录大小): 查询和自动挂载: 挂载命令格式: 挂载光盘: 卸载光盘: 挂载U盘:

  8. 文件系统常用命令df、du、fsck、dumpe2fs

    df 查看文件系统 [root@localhost ~]# df 文件系统 1K-块 已用 可用 已用% 挂载点 /dev/sda5 16558080 1337676 15220404 9% / de ...

  9. Linux命令-文件系统常用命令:df,du,fsck,dumpe2fs

    df -h 人性化显示文件系统的分区信息 注意:在linux中目录也是文件,不要混淆下面的目录文件说法. 传统方式查看文件大小可以使用:ll -h /目录/文件名,就可以看到文件的大小,但是如果你想看 ...

随机推荐

  1. .NET进阶篇06-async异步、thread多线程4

    知识需要不断积累.总结和沉淀,思考和写作是成长的催化剂 梯子 一.锁1.lock2.Interlocked3.Monitor4.SpinLock5.Mutex6.Semaphore7.Events1. ...

  2. python中68个内置函数的总结

    内置函数 内置函数就是python给你提供的, 拿来直接用的函数, 比如print., input等. 截止到python版本3.6.2 python一共提供了68个内置函数. #68个内置函数 # ...

  3. SwiftyUserDefaults-封装系统本地化的框架推荐

    // // ViewController.swift // Test4SwiftyUserDefaults // Copyright © 2017年. All rights reserved. // ...

  4. zz:NETCONF协议详解

    随着SDN的大热,一个诞生了十年之久的协议焕发了第二春,它就是NETCONF协议.如果你在两年前去搜索NETCONF协议,基本得到的信息都是"这个协议是一个网管协议,主要目的是弥补SNMP协 ...

  5. 转:Eclipse中创建Maven版的Web工程(详解)

    一.搭建步骤 ♦首先创建一个Maven的Project,如下图: ♦点击Next,勾选 Create a simple project ♦点击Next,注意Packing要选择war,因为我们创建的是 ...

  6. MySQL必知必会(数据分组,Group by和Having子句, Select子句的顺序)

    SELECT vend_id, COUNT(*) AS num_prods FROM products #GROUP BY子句可以包含任意数目的列,多行NULL值将分为一组 GROUP BY vend ...

  7. 登录oracle数据库

    1.windows (cmd)命令行登录: 下载命令行工具 点击这里进入官网下载,下载其中三个文件 instantclient-basic-windows.x64-19.3.0.0.0dbru.zip ...

  8. iOS全局处理键盘事件

    转自:http://www.cnblogs.com/xinus/archive/2013/01/22/ios-keybord-notification.html 注册监听键盘事件的通知 [[NSNot ...

  9. 牛客剑指offer(持续更新~)

    第一题:二维数组的查找 题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数, ...

  10. B. Magic Stick

    题目:魔法棒 题意:可以对一个正数进行变换,如果数字是偶数,那么它可以变成3 * a / 2 如果这个数大于1,那么它可以变成a - 1 有两个数x和y,询问是否可以通过这些操作从x变成y,输出YES ...