目录
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、hdbSATA、闪存
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:
Last mounted on:
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 ()
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
:指定文件系统类型 -
-b
:指定每个 block 的大小 -
-I
:指定 inode 的大小 -
-N
:指定 inode 的数量 -
-m
:指定保留给 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.
已格式化过的分区,需要加 -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
9. 延伸阅读
- 存储与服务器的连接方式对比(DAS,NAS,SAN)
- 使用dd命令测试磁盘读写性能
- Linux下使用dd命令备份硬盘