2018-05-21 课堂笔记
目录
1. 认识磁盘
2. 认识文件系统(filesystem,fs)
3. 查看文件系统
4. 磁盘分区
5. 磁盘格式化
6. 挂载
7. 制作 swap
8. dd命令
9. 延伸阅读
1. 认识磁盘
1.1 磁盘的组成
-
扇区
最小的物理存储单位
每个扇区 512bytes -
柱面
磁盘分区的最小单位
将扇区围成一个圆,就是柱面 -
第一个扇区
磁盘中最重要的部分
包含主要开机区(Master Boot Record, MBR)及分区表,其中 MBR 占 446 bytes,分区表占 64 bytes
1.2 磁盘的种类
按照不同的接口,磁盘可分为:IDE 盘、SATA 盘、闪存盘等
不同种类的磁盘在 Linux 下的命名不同
-
IDE 盘
hda、hdb -
SATA、闪存
sda、sdb
1.3 分区的类型
由于分区表仅 64 bytes,导致最多仅能在分区表中存储4条记录,四条记录中包含主分区(Primary)和扩展分区(Extended),而扩展分区还可以再分出多个逻辑分区(Logical),这三种分区类型的特点如下:
- Primary + Extended <= 4
- Extended <= 1
- Logical 包含于 Extended
- 仅有 Primary 、Logical 能被格式化
2. 认识文件系统(filesystem, fs)
2.1 文件系统的组成
-
superblock
记录文件系统的整体信息
记录 inode/block 的总量、用量、余量
记录 inode/block 的大小(inode 为128 bytes;block 为1、2、4KB)
记录挂载情况及其他与文件系统相关的信息
-
inode
用于记录文件的属性,以及文件所占用的 block
一个文件占且仅占用 1 个 inode
每个 inode 大小均默认固定为 128 bytes
可以指定文件系统中 inode 的数量,同时,文件系统能存储文件的数量(不是大小)由 inode 决定
ps. 有时明明磁盘容量还未满,但已写不进文件,可使用df -i
查看 inode 的用量,可能已经用完 -
block
是文件的实际存储位置
1个文件占用1到多个 block,且每个 block 仅能属于一个文件
block 的大小可为 1K、2K、4K
若 block 太小,每个文件将占用更多的 block,从而读/写文件时增加磁头的移动次数,影响读写性能
若 block 太大,则部分小文件无法占满整个 block,从而导致空间浪费
-
碎片整理
如果 block 太过离散,导致读写性能下降,可将文件系统中的数据都拷出来,然后重新格式化文件系统,完成后再将数据拷回来,此时的 block 将相对连续,读写时减少磁头的来回移动,提升读写性能
2.2 文件系统的类型
-
传统文件系统
ext2、minix、MS-DOS、FAT、iso9660(光盘) -
日志式文件系统
ext3、NTFS、reiser、xfs -
网络文件系统
NFS、SMB -
查看系统所支持文件系统
ll /lib/modules/$(uname -r)/kernel/fs
cat /proc/filesystems
-
扩展
EXT 文件系统是在 inode 中记录了该文件所有的 block 号,所以读取时,可以立即获得该文件全部的 block 号
而 FAT 文件系统则是以链表的方式记录 block 号,即只有读到前一个 block 后,才能知道下一个 block 在哪
3. 查看文件系统
3.1 df
列出文件系统的整体使用量
3.1.1 选项
-
-h
:以人性化的单位显示(默认 KB) -
-T
:同时列出分区的文件系统类型 -
-i
:不列出硬盘的容量,而是列出 inode 数量
3.1.2 示例
- 显示整个计算机的文件系统信息
[root@localhost ~]# df
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/sda3 29140072 1010284 28129788 4% /
devtmpfs 496148 0 496148 0% /dev
tmpfs 501716 0 501716 0% /dev/shm
tmpfs 501716 6760 494956 2% /run
tmpfs 501716 0 501716 0% /sys/fs/cgroup
/dev/sda1 201388 75952 125436 38% /boot
- 人性化单位
[root@localhost ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 28G 987M 27G 4% /
devtmpfs 485M 0 485M 0% /dev
tmpfs 490M 0 490M 0% /dev/shm
tmpfs 490M 6.7M 484M 2% /run
tmpfs 490M 0 490M 0% /sys/fs/cgroup
/dev/sda1 197M 75M 123M 38% /boot
- 显示某个挂载点或分区的文件系统信息
[root@localhost ~]# df /dev/sda3
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/sda3 29140072 1010284 28129788 4% /
[root@localhost ~]# df /
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/sda3 29140072 1010284 28129788 4% /
- 显示文件系统类型
[root@localhost ~]# df -T
文件系统 类型 1K-块 已用 可用 已用% 挂载点
/dev/sda3 xfs 29140072 1010284 28129788 4% /
devtmpfs devtmpfs 496148 0 496148 0% /dev
tmpfs tmpfs 501716 0 501716 0% /dev/shm
tmpfs tmpfs 501716 6760 494956 2% /run
tmpfs tmpfs 501716 0 501716 0% /sys/fs/cgroup
/dev/sda1 xfs 201388 75952 125436 38% /boot
- 显示 inode 使用情况
[root@localhost ~]# df -i
文件系统 Inode 已用(I) 可用(I) 已用(I)% 挂载点
/dev/sda3 29154304 28211 29126093 1% /
devtmpfs 124037 364 123673 1% /dev
tmpfs 125429 1 125428 1% /dev/shm
tmpfs 125429 405 125024 1% /run
tmpfs 125429 13 125416 1% /sys/fs/cgroup
/dev/sda1 204800 330 204470 1% /boot
3.2 du
查看目录所占容量
3.2.1 选项
-
-h
:人性化单位 -
-s
:仅列出所查目录的总量(默认将所有子目录都列出)
3.2.2 示例
- 列出某个目录的用量
[root@localhost ~]# du /root/
4 /root/.ssh
0 /root/test/c
0 /root/test
52 /root/
- 仅列出该目录
[root@localhost ~]# du -s /root/
52 /root/
- 人性化单位
[root@localhost ~]# du -sh /root/
52K /root/
3.3 blkid
查看块设备的文件系统类型、Label、设备名等
[root@choco-01 ~]# blkid /dev/sda1
/dev/sda1: UUID="d92c17e0-8401-474e-a97a-44ca72ea7b53" TYPE="xfs"
3.4 dumpe2fs
查看supberblock信息
[root@choco-01 ~]# dumpe2fs /dev/sdb1
dumpe2fs 1.42.9 (28-Dec-2013)
Filesystem volume name: <none>
Last mounted on: <not available>
Filesystem UUID: a7758e6f-3a8d-415c-90c1-e2430a916783
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: ext_attr resize_inode dir_index filetype sparse_super large_file
Filesystem flags: signed_directory_hash
Default mount options: user_xattr acl
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 131072
Block count: 524288
Reserved block count: 26214
Free blocks: 519380
Free inodes: 131061
First block: 0
Block size: 4096
Fragment size: 4096
Reserved GDT blocks: 127
Blocks per group: 32768
Fragments per group: 32768
Inodes per group: 8192
Inode blocks per group: 256
Filesystem created: Wed May 23 09:03:53 2018
Last mount time: n/a
Last write time: Wed May 23 09:03:53 2018
Mount count: 0
Maximum mount count: -1
Last checked: Wed May 23 09:03:53 2018
Check interval: 0 (<none>)
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
First inode: 11
Inode size: 128
Default directory hash: half_md4
Directory Hash Seed: a2fc2482-1218-4ce0-99e0-f79344088dea
Group 0: (Blocks 0-32767)
主 superblock at 0, Group descriptors at 1-1
保留的GDT块位于 2-128
Block bitmap at 129 (+129), Inode bitmap at 130 (+130)
Inode表位于 131-386 (+131)
32375 free blocks, 8181 free inodes, 2 directories
可用块数: 393-32767
可用inode数: 12-8192
4. 磁盘分区
4.1 fdisk
以 MBR 的方式进行分区,最大支持硬盘容量为2T
4.1.1 查看磁盘分区情况
fdisk -l
或 fdisk -l /dev/sda
4.1.2 功能键
p
:print
n
:new
d
:delete
q
:quit
w
:write
m
:manual
4.1.3 示例
- 查看操作手册
[root@localhost ~]# fdisk /dev/sda
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):m
命令操作
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
g create a new empty GPT partition table
G create an IRIX (SGI) partition table
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 partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
- 查看分区情况
[root@localhost ~]# fdisk /dev/sda
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):p
磁盘 /dev/sda:32.2 GB, 32212254720 字节,62914560 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x00099783
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 411647 204800 83 Linux
/dev/sda2 411648 4605951 2097152 82 Linux swap / Solaris
/dev/sda3 4605952 62914559 29154304 83 Linux
- 删除分区
[root@localhost ~]# fdisk /dev/sda
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):p
磁盘 /dev/sda:32.2 GB, 32212254720 字节,62914560 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x00099783
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 411647 204800 83 Linux
/dev/sda2 411648 4605951 2097152 82 Linux swap / Solaris
/dev/sda3 4605952 62914559 29154304 83 Linux
命令(输入 m 获取帮助):q
[root@localhost ~]# fdisk /dev/sda
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):d
分区号 (1-3,默认 3):1
分区 1 已删除
命令(输入 m 获取帮助):d
分区号 (2,3,默认 3):2
分区 2 已删除
命令(输入 m 获取帮助):d
已选择分区 3
分区 3 已删除
- 新建分区
[root@localhost ~]# fdisk /dev/sda
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分区号 (1-4,默认 1):1
起始 扇区 (2048-62914559,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-62914559,默认为 62914559):+10G
分区 1 已设置为 Linux 类型,大小设为 10 GiB
命令(输入 m 获取帮助):n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): e
分区号 (2-4,默认 2):4
起始 扇区 (20973568-62914559,默认为 20973568):
将使用默认值 20973568
Last 扇区, +扇区 or +size{K,M,G} (20973568-62914559,默认为 62914559):+2G
分区 4 已设置为 Extended 类型,大小设为 2 GiB
4.2 parted
支持 GTP 方式分区,可以支持高于2T 的硬盘,用法与 fdisk 大同小异
**4.2.1 查看磁盘分区情况
parted /dev/sdb print
4.2.1 功能键
help
rm
mkpart
q
4.2.3 示例
- 查看帮助
[root@localhost ~]# parted /dev/sdb
GNU Parted 3.1
使用 /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) help
align-check TYPE N check partition N for TYPE(min|opt) alignment
help [COMMAND] print general help, or help on COMMAND
mklabel,mktable LABEL-TYPE create a new disklabel (partition table)
mkpart PART-TYPE [FS-TYPE] START END make a partition
name NUMBER NAME name partition NUMBER as NAME
print [devices|free|list,all|NUMBER] display the partition table, available devices, free
space, all found partitions, or a particular partition
quit exit program
rescue START END rescue a lost partition near START and END
rm NUMBER delete partition NUMBER
select DEVICE choose the device to edit
disk_set FLAG STATE change the FLAG on selected device
disk_toggle [FLAG] toggle the state of FLAG on selected device
set NUMBER FLAG STATE change the FLAG on partition NUMBER
toggle [NUMBER [FLAG]] toggle the state of FLAG on partition NUMBER
unit UNIT set the default unit to UNIT
version display the version number and copyright information
of GNU Parted
- 查看分区情况
[root@localhost ~]# parted /dev/sdb
GNU Parted 3.1
使用 /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 10.7GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system 标志
1 1049kB 1075MB 1074MB primary linux-swap(v1)
- 删除分区
[root@localhost ~]# parted /dev/sdb
GNU Parted 3.1
使用 /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands
(parted) rm
分区编号? 1
- 新建 gpt 分区
[root@localhost ~]# parted /dev/sdb
GNU Parted 3.1
使用 /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel
新的磁盘标签类型? gpt
警告: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost.
Do you want to continue?
是/Yes/否/No? yes
(parted) mkpart
分区名称? []? chocolee-1
文件系统类型? [ext2]?
起始点? 0
结束点? 2G
警告: The resulting partition is not properly aligned for best performance.
忽略/Ignore/放弃/Cancel? ignore
(parted) print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 10.7GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name 标志
1 17.4kB 2000MB 2000MB chocolee-1
5. 磁盘格式化
5.1 mke2fs(不支持xfs)
5.1.1 选项
-
-t <fs>
:指定文件系统类型 -
-b <block_size>
:指定每个 block 的大小 -
-I <inode_size>
:指定 inode 的大小 -
-N <amount of inode>
:指定 inode 的数量 -
-m <percent>
:指定保留给 root 的容量百分比
5.1.2 示例
- 指定文件系统类型
[root@choco-01 ~]# mke2fs -t ext4 /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
131072 inodes, 524288 blocks
26214 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=536870912
16 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912
Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (16384 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
[root@choco-01 ~]# blkid !$
blkid /dev/sdb1
/dev/sdb1: UUID="fbc8e490-b568-4e0d-be39-6d1530e6c41b" TYPE="ext4"
- 指定 block 的大小(只能为1/2/4K中的一个)
[root@choco-01 ~]# mke2fs -b 2k /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=2048 (log=1) #看这里!看这里!看这里!
分块大小=2048 (log=1)
Stride=0 blocks, Stripe width=0 blocks
131072 inodes, 1048576 blocks
52428 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=537919488
64 block groups
16384 blocks per group, 16384 fragments per group
2048 inodes per group
Superblock backups stored on blocks:
16384, 49152, 81920, 114688, 147456, 409600, 442368, 802816
Allocating group tables: 完成
正在写入inode表: 完成
Writing superblocks and filesystem accounting information: 完成
- 指定 inode 的数量
[root@choco-01 ~]# mke2fs -N 1024 /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
1024 inodes, 524288 blocks #看这里!看这里!看这里!
26214 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=536870912
16 block groups
32768 blocks per group, 32768 fragments per group
64 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912
Allocating group tables: 完成
正在写入inode表: 完成
Writing superblocks and filesystem accounting information: 完成
- 指定 inode 的大小
[root@choco-01 ~]# mke2fs -I 1234 /dev/sdb1 # 随便指定个 inode-size 报错!
mke2fs 1.42.9 (28-Dec-2013)
mke2fs: invalid inode size 1234 (min 128/max 4096) # 提示 128~4096 ,估计还得是2的整数次幂
[root@choco-01 ~]# mke2fs -I 4096 !$ # 那就试试 4096
mke2fs -I 4096 /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
131072 inodes, 524288 blocks
26214 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=536870912
16 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912
Allocating group tables: 完成
正在写入inode表: 完成
Writing superblocks and filesystem accounting information: 完成
[root@choco-01 ~]# dumpe2fs /dev/sdb1 # 用 dumpe2fs 查看
Inode size: 4096
- 指定留给 root 的容量
[root@choco-01 ~]# mke2fs -m 0.5 /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
131072 inodes, 524288 blocks
2621 blocks (0.50%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=536870912
16 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912
Allocating group tables: 完成
正在写入inode表: 完成
Writing superblocks and filesystem accounting information: 完成
5.2 mkfs.<fs>
已格式化过的分区,需要加 -f 选项强制进行格式化
该方式支持的 fs 类型比mke2fs
多
但除了mkfs.xfs
其实仍然调用的是mke2fs
- 看看
mkfs
支持哪些 fs
[root@choco-01 ~]# mkfs.
mkfs.btrfs mkfs.cramfs mkfs.ext2 mkfs.ext3 mkfs.ext4 mkfs.minix mkfs.xfs
- 格式化成 ext2 文件系统类型
[root@choco-01 ~]# mkfs.ext2 /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013) # 咦?命名我输的是 mkfs.ext2 啊
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
131072 inodes, 524288 blocks
26214 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=536870912
16 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912
Allocating group tables: 完成
正在写入inode表: 完成
Writing superblocks and filesystem accounting information: 完成
6. 挂载
把挂载理解为嫁接的概念:目录结构是一棵树,文件系统是枝丫,只有将不同的枝丫嫁接到目录结构这棵树上,才能正常生长
——挂载点一定是目录,该目录为进入该文件系统的入口。
6.1 注意事项
- 单一文件系统不应被挂载到不同的目录上
- 单一目录不应重复挂载多个文件系统
- 要作为挂载点的目录,理论上应该使用空目录
ps.若不采用空目录,则在挂载后,目录中原有的子目录及子文件将暂时隐藏,目录中将仅显示所挂载文件系统中的内容,待卸载后才会恢复
6.2 /etc/fstab
文件
[root@choco-01 ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Thu May 10 00:16:05 2018
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=fefbd965-eb8c-4d30-bec5-aeba84c0843c / xfs defaults 0 0
UUID=d92c17e0-8401-474e-a97a-44ca72ea7b53 /boot xfs defaults 0 0
UUID=6d03af8a-d90c-459e-9fab-7dbf093078d1 swap swap defaults 0 0
- 第1列:设备名
- 第2列:挂载点
- 第3列:文件系统类型
- 第4列:挂载选项
- 第5列:dump选项,设置是否让备份程序dump备份文件系统,0为忽略,1为备份
- 第6列:fsck选项,告诉fsck程序以什么顺序检查文件系统,0为忽略
6.3 mount 命令
6.2.1 选项
-
-a
:根据 /etc/fstab 进行自动挂载 -
-t
:指定挂载分区的文件系统类型,一般情况不需要指定,哪些不需要指定见/etc/filesystems
-
-o
:特殊选项-
ro
、rw
:挂载为只读或可读写 -
exec
、noexec
:是否允许分区上存在可执行二进制文件 -
auto
、noauto
:是否允许使用mount -a
自动挂载 -
user
、nouser
:是否允许普通用户挂载该分区 -
remount
:重新挂在,出错时常用 -
defaults
:rw,suid,dev,exec,auto,nouser,async
-
6.2.2 示例
- 简单挂载
[root@choco-01 ~]# mount /!$ /mnt
mount //dev/sdb1 /mnt
- 挂载光盘
mount -t iso9660 /dev/cdrom /mnt # 其实也可以不指定类型的
- 重新挂载
进入单用户模式时,根目录常被挂为ro
,此时就可以用如下命令重新挂载为rw
mount -o remount,rw,auto /
6.3 umount(卸载)
后面可以接挂载点、分区设备,Label
[root@choco-01 ~]# df
文件系统 1K-块 已用 可用 已用% 挂载点
tmpfs 99972 0 99972 0% /run/user/0
/dev/sdb1 2064208 3072 1956280 1% /mnt
[root@choco-01 ~]# umount /dev/sdb1 && df
文件系统 1K-块 已用 可用 已用% 挂载点
[root@choco-01 ~]# mount /dev/sdb1 /mnt
[root@choco-01 ~]# df
文件系统 1K-块 已用 可用 已用% 挂载点
tmpfs 99972 0 99972 0% /run/user/0
/dev/sdb1 2064208 3072 1956280 1% /mnt
[root@choco-01 ~]# umount /mnt && df
文件系统 1K-块 已用 可用 已用% 挂载点
7. 制作 swap
7.1 用分区制作 swap
- 查看 swap 使用情况:
free
[root@localhost ~]# free -h
total used free shared buffers cached
Mem: 979M 235M 744M 6.6M 692K 76M
-/+ buffers/cache: 158M 821M
Swap: 2.0G 0B 2.0G
- 查看硬盘使用情况:
fdisk -l
[root@localhost ~]# fdisk -l
磁盘 /dev/sda:32.2 GB, 32212254720 字节,62914560 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x00099783
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 411647 204800 83 Linux
/dev/sda2 411648 4605951 2097152 82 Linux swap / Solaris
/dev/sda3 4605952 62914559 29154304 83 Linux
磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 byte
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
- 建立大小合适的分区:
fdisk /dev/sdb
,使用t
修改文区类型为82
[root@localhost ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0x3e7b9048 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分区号 (1-4,默认 1):1
起始 扇区 (2048-20971519,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-20971519,默认为 20971519):+1024M
分区 1 已设置为 Linux 类型,大小设为 1 GiB
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@localhost ~]# fdisk -l
磁盘 /dev/sda:32.2 GB, 32212254720 字节,62914560 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x00099783
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 411647 204800 83 Linux
/dev/sda2 411648 4605951 2097152 82 Linux swap / Solaris
/dev/sda3 4605952 62914559 29154304 83 Linux
磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x3e7b9048
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 2099199 1048576 83 Linux
- 格式化:
mkswap /dev/sdb1
[root@localhost ~]# mkswap /dev/sdb1
正在设置交换空间版本 1,大小 = 1048572 KiB
无标签,UUID=80ae28f5-2b29-4188-bc94-15890ebd7228
- 加载 swap,并查看变化:
swapon /dev/sdb1
,free
[root@localhost ~]# swapon /dev/sdb1 && free -h
total used free shared buffers cached
Mem: 979M 236M 743M 6.6M 696K 76M
-/+ buffers/cache: 159M 820M
Swap: 3.0G 0B 3.0G
7.2 用文件制作 swap
- 查看 swap 使用情况:
free
[root@localhost ~]# free -h
total used free shared buffers cached
Mem: 979M 235M 744M 6.6M 692K 76M
-/+ buffers/cache: 158M 821M
Swap: 2.0G 0B 2.0G
- 制作大文件
[root@localhost ~]# dd if=/dev/zero of=/tmp/aaa bs=1M count=1024
记录了1024+0 的读入
记录了1024+0 的写出
1073741824字节(1.1 GB)已复制,5.69709 秒,188 MB/秒
- 格式化
[root@localhost ~]# mkswap /tmp/aaa
正在设置交换空间版本 1,大小 = 1048572 KiB
无标签,UUID=b7d41bf7-123d-4554-a739-4b223bb8f27c
- 加载 swap,并查看变化
[root@localhost ~]# swapon /tmp/aaa && free -h
swapon: /tmp/aaa:不安全的权限 0644,建议使用 0600。
total used free shared buffers cached
Mem: 979M 904M 75M 6.6M 352K 724M
-/+ buffers/cache: 179M 800M
Swap: 3.0G 0B 3.0G
8. dd 命令
8.1 磁盘测速
- 测 write 速度
[root@choco-01 ~]# dd if=/dev/zero of=/disk-test/test1.dbf bs=8k count=400000
记录了400000+0 的读入
记录了400000+0 的写出
3276800000字节(3.3 GB)已复制,33.9907 秒,96.4 MB/秒
[root@choco-01 ~]# dd if=/dev/zero of=/disk-test/test2.dbf bs=8k count=400000 conv=fsync
记录了400000+0 的读入
记录了400000+0 的写出
3276800000字节(3.3 GB)已复制,26.8789 秒,122 MB/秒
[root@choco-01 ~]# dd if=/dev/zero of=/disk-test/test3.dbf bs=8k count=400000 conv=fdatasync
记录了400000+0 的读入
记录了400000+0 的写出
3276800000字节(3.3 GB)已复制,29.6497 秒,111 MB/秒
- 测 read 速度
[root@choco-01 ~]# dd if=/disk-test/test1.dbf of=/dev/null
记录了4358096+0 的读入
记录了4358096+0 的写出
2231345152字节(2.2 GB)已复制,14.0271 秒,159 MB/秒
8.2 备份与还原
-
备份
dd if=/dev/sda of=/dev/sdb
dd if=/dev/sda of=~/disk1.img
dd if=/dev/sda | gzip > disk.img.gz
-
还原
dd if=/dev/sdb of=/dev/sda
dd if=~/disk1.img of=/dev/sda
gzip -dc /disk1.img.gz | dd of=/dev/sda