一、硬盘结构

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. MySQL+Keepalived高可用配置

    注意:首先关闭两台机器的防火墙 setenforce 0 Environment: 2台CentOS测试机器  安装好MySQL 1.两台机器安装keepalived yum -y install k ...

  2. Python协程与Go协程的区别二

    写在前面 世界是复杂的,每一种思想都是为了解决某些现实问题而简化成的模型,想解决就得先面对,面对就需要选择角度,角度决定了模型的质量, 喜欢此UP主汤质看本质的哲学科普,其中简洁又不失细节的介绍了人类 ...

  3. mac mysql start ERROR! The server quit without updating PID file

    在mac下安装完mysql,启动时出现error: ERROR! The server quit without updating PID file (/usr/local/var/mysql/nal ...

  4. CF832D Misha, Grisha and Underground

    有一棵n个节点的树,一共q 次询问 每次询问给定3个点,求两条起点终点在这三个点上且不完全重合的路径的最多公共节点数 简单LCA求距离,令a为汇合点,那么答案就是(dis(a,b) + dis(a,c ...

  5. NSUserdefaults清除存储内容

    有两种方式 方式一:找到所有的key,然后删除对象 /** *  清除所有的存储本地的数据 */ - (void)clearAllUserDefaultsData { NSUserDefaults * ...

  6. CoderForces 163E e-Government(AC自动机+树状数组维护fail树的dfs序)

    E. e-Government time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...

  7. 赌十包辣条,你一定没见过这么通透的ThreadLocal讲解

    1.看个热闹 鉴于普罗大众都喜欢看热闹,咱们先来看个热闹再开工吧! 场景一: 中午了, 张三.李四和王五一起去食堂大菜吃饭.食堂刚经营不久,还很简陋,负责打菜的只有一位老阿姨. 张三:我要一份鸡腿. ...

  8. Keras开发一个神经网络

    关于Keras:Keras是一个高级神经网络API,用Python编写,能够在TensorFlow,CNTK或Theano之上运行. 使用一下命令安装: pip install keras 在Kera ...

  9. C和C++从零开始系列(一)

    今天开始写下一系列C和C++从入门开始的文章. 简单说几句C和C++的关系.C语言早于C++. C语言 贝尔实验室的Ken Thompson发明了 UNIX,当时有个B语言的.后来D.M.Ritchi ...

  10. 如何成为一名成功的iOS程序员,挑战年薪50万?

    编程是一个仅靠兴趣仍不足以抵达成功彼岸的领域.你必须充满激情,并且持之以恒地不断汲取更多有关编程的知识.只是对编程感兴趣还不足以功成名就——众所周知,我们工作起来像疯子. 编程是一个没有极限的职业,所 ...