df命令

用于查看已挂载磁盘的总容量、使用容量、属于容量;不加参数以kb为单位显示;
实验1:

[root@jinkai01 ~]# df
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/mapper/centos-root 16558080 1337496 15220584 9% /
devtmpfs 485820 0 485820 0% /dev
tmpfs 497948 0 497948 0% /dev/shm
tmpfs 497948 7828 490120 2% /run
tmpfs 497948 0 497948 0% /sys/fs/cgroup
/dev/sda1 201380 112764 88616 56% /boot
tmpfs 99592 0 99592 0% /run/user/0

参数:
-i:表示查看inodes的使用情况,如果使用已用100%,即使磁盘空间富余,也会提示磁盘空间已满;
-h:表示使用合适的单位显示,例如GB/TB/MB;
-k、-m:分别表示已KB和MB为单位显示;

实验1:查看inodes使用情况,将tmpfs过滤掉
grep -v 的作用是过滤掉包含tmpfs字符串的一行

[root@jinkai01 ~]# df -i | grep -v tmpfs
文件系统 Inode 已用(I) 可用(I) 已用(I)% 挂载点
/dev/mapper/centos-root 8284160 31618 8252542 1% /
/dev/sda1 102400 326 102074 1% /boot

实验2:使用合适单位显示磁盘空间

[root@jinkai01 ~]# df -h | grep -v tmpfs
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 16G 1.3G 15G 9% /
/dev/sda1 197M 111M 87M 56% /boot

实验3:用MB和KB来显示磁盘空间;

[root@jinkai01 ~]# df -m | grep -v tmpfs
文件系统 1M-块 已用 可用 已用% 挂载点
/dev/mapper/centos-root 16170 1307 14864 9% /
/dev/sda1 197 111 87 56% /boot
[root@jinkai01 ~]# df -k | grep -v tmpfs
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/mapper/centos-root 16558080 1337452 15220628 9% /
/dev/sda1 201380 112764 88616 56% /boot

du命令

用来查看某个目录或文件所占空间的大小;
格式:
du [参数][文件或目录名]
-a:表示全部文件和目录的大小都列出来,默认单位为kb;
-b:表示列出值为B为单位输出;
-m:表示以M为单位输出;
-h:表示自动调节单位显示,在数值后面加上单位表示;(推荐使用)
-s:表示只列出总和;例如du -s /root/ 只会列出root目录的作用空间,不会显示目录下的子目录文件;(推荐与-h一起使用)

实验1:查看/root/目录占用空间大小,自动调节实用单位显示;

[root@jinkai01 ~]# du -sh /root/
72K /root/

磁盘分区

科普知识:主分区与扩展分区以及逻辑分区
假设Windows系统用一个硬盘划分CDEF四个区
首先:划分一个主分区C盘
C盘为系统盘,那么我们就把它设置为主分区开机引导系统启动;
剩下的划分为一个扩展分区或多个扩展分区;
然后将扩展分区转化为逻辑分区才是DEF盘;
DEF盘首先是逻辑分区才能使用,而逻辑分区是扩展分区转化来的;

首先我们先增加一块硬盘,20G左右;
虚拟机用户步骤如下:
1、右键当前虚拟机选项卡,选“设置”;
2、点击对话框中的“添加”按钮,在弹出来的框框中选择“硬盘”,下一步;
3、选择新磁盘的大小20G,点击下一步;
4、在后面的对话框中默认配置,直接下一步,直到完成为止**;

fdisk命令

这是一个磁盘分区工具,只能划分小于2TB的分区;
格式:
fdisk [参数][设备名称]
查看系统中磁盘设备以及分区情况
第一步:查看模式
使用fdisk -l我们会发现系统拥有两块硬盘,分别是21.5GB的sda与21.5GB的sdb;

[root@jinkai01 ~]# fdisk -l /dev/sd*

磁盘 /dev/sda:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000df39d

设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 411647 204800 83 Linux
/dev/sda2 411648 41943039 20765696 8e Linux LVM

磁盘 /dev/sda1:209 MB, 209715200 字节,409600 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节

磁盘 /dev/sda2:21.3 GB, 21264072704 字节,41531392 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节

磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节

第二步:分区模式
使用fdisk命令不带参数,进入分区模式;
fdisk /dev/sdb

[root@jinkai01 ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0x6eda423e 创建新的 DOS 磁盘标签。

命令(输入 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)

**其中命令参意思为:
n:建立一个新的分区;
w:保存;
q:退出;
d:删除一个分区;
p:表示打印当前磁盘的分区情况

我们先选择n建立一个新分区**

命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended

此时提示我们两个选项
p:主分区(最多4个,主分区+扩展分区=4)
e:扩展分区
根据提示我们对新分区定义容量以及分区号

Select (default p): p
分区号 (1-4,默认 1):1
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+2G
分区 1 已设置为 Linux 类型,大小设为 2 GiB

分区好后,我们使用p来查看分区情况;
我们已经分好了4个区,3个主分区、一个扩展分区;
命令(输入 m 获取帮助):p

磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x6eda423e

设备 Boot Start End Blocks Id System
/dev/sdb1 2048 4196351 2097152 83 Linux
/dev/sdb2 4196352 6244351 1024000 83 Linux
/dev/sdb3 6244352 8292351 1024000 83 Linux
/dev/sdb4 8292352 16680959 4194304 5 Extended

命令(输入 m 获取帮助):

注意:扩展分区要设置成逻辑分区才能正常使用,也就是说划分扩展分区后,还要将扩展分区划分成逻辑分区;
扩展分区划分逻辑分区:
4为扩展分区,123为主分区;逻辑分区将4号扩展分区划分为5和6;划分完1234后,再使用n新建会将4扩展分区转化为逻辑分区5和6(以及78910等)

命令(输入 m 获取帮助):n
All primary partitions are in use
添加逻辑分区 5
起始 扇区 (8294400-16680959,默认为 8294400):
将使用默认值 8294400
Last 扇区, +扇区 or +size{K,M,G} (8294400-16680959,默认为 16680959):+1000M
分区 5 已设置为 Linux 类型,大小设为 1000 MiB

命令(输入 m 获取帮助):n
All primary partitions are in use
添加逻辑分区 6
起始 扇区 (10344448-16680959,默认为 10344448):
将使用默认值 10344448
Last 扇区, +扇区 or +size{K,M,G} (10344448-16680959,默认为 16680959):+1000M
分区 6 已设置为 Linux 类型,大小设为 1000 MiB

命令(输入 m 获取帮助):p

磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x6eda423e

设备 Boot Start End Blocks Id System
/dev/sdb1 2048 4196351 2097152 83 Linux
/dev/sdb2 4196352 6244351 1024000 83 Linux
/dev/sdb3 6244352 8292351 1024000 83 Linux
/dev/sdb4 8292352 16680959 4194304 5 Extended
/dev/sdb5 8294400 10342399 1024000 83 Linux
/dev/sdb6 10344448 12392447 1024000 83 Linux

命令(输入 m 获取帮助):
记得要用w保存好刚刚的分区;
命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘

删除分区:

使用d选项来删除分区;
首先必须加入分区界面,也就是fdisk /dev/sdb
在界面按d删除,然后选中分区号,就可以删除分区了;

[root@jinkai01 ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

命令(输入 m 获取帮助):d
分区号 (1-6,默认 6):6
分区 6 已删除

命令(输入 m 获取帮助):p

磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x6eda423e

设备 Boot Start End Blocks Id System
/dev/sdb1 2048 4196351 2097152 83 Linux
/dev/sdb2 4196352 6244351 1024000 83 Linux
/dev/sdb3 6244352 8292351 1024000 83 Linux
/dev/sdb4 8292352 16680959 4194304 5 Extended
/dev/sdb5 8294400 10342399 1024000 83 Linux
命令(输入 m 获取帮助):

磁盘格式化

常用的磁盘格式
xfs:常用于centos7系统
ext4:常用与centos6系统
ext3:用于centos5系统
虚拟机添加新磁盘如果fdisk 无法识别到,可以重启系统,或者echo "- - -" > /sys/class/scsi_host/host0/scan
mount
查看当前磁盘使用格式

[root@jinkai01 tmp]# mount | grep "/dev/sd"
/dev/sda1 on /boot type xfs (rw,relatime,attr2,inode64,noquota)

mke2fs命令

不支持xfs格式化
mke2fs [参数][设备]

参数:
-b:表示分区时设定每个数据区块占用的空间大小。目前,每个数据块支持1024B、2048B以 及4096B。
-i:表示设定inode的大小。
-N:表示设定inode的数量。有时默认的inode数不够用,所以要自定义inode的数量。
-c:表示在格式化前先检测一下磁盘是否有问题。加上这个选项后,运行速度会非常慢。
-L:表示预设该分区的标签(label)。
-j:表示建立ext3格式的分区。如果使用mkfs.ext3格式,就不用加这个选项了。
-t:用来指定文件系统的类型,可以是ext2、ext3 ,也可以是 ext4。
-m:指定预留空间大小

实验1:指定/dev/sdb2的文件类型为ext4

[root@jinkai01 tmp]# mke2fs -t ext4 /dev/sdb2
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
65536 inodes, 262144 blocks
13107 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=268435456
8 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376

Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (8192 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
[root@jinkai01 tmp]# blkid /dev/sdb2
/dev/sdb2 UUID="2d5c5887-f777-46b9-b559-660b145e7365" TYPE="ext4"

实验2:指定/dev/sdb2的名称或标签为test02

[root@jinkai01 tmp]# mke2fs -L test02 /dev/sdb2
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=test02
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
65536 inodes, 262144 blocks
13107 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=268435456
8 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376

Allocating group tables: 完成
正在写入inode表: 完成
Writing superblocks and filesystem accounting information: 完成

[root@jinkai01 tmp]# blkid /dev/sdb2
/dev/sdb2: LABEL="test02" UUID="deff6aba-d524-49e0-b99e-6e54fbcd298c" TYPE="ext2"

实验3:调整块和inode的比例以及预留空间的百分比

[root@jinkai01 /]# mke2fs -i 8192 -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
262144 inodes, 524288 blocks 默认比例是1:4 一个inod 对应四个块,一个块是4KB,四个块就是16KB
26214 blocks (5.00%) reserved for the super user[root@jinkai01 /]# mke2fs -m 1 -t ext4 /dev/sdb1
5242 blocks (1.00%) reserved for the super user

mkfs命令

格式:
mkfs.[文件格式][参数][设备]
mkfs.xfs -f /dev/sdb3
参数:
-f:强制执行
-b:指定块文件的大小,比如-b 2048 代表指定块大小为2048B也就是2KB

[root@jinkai01 tmp]# mkfs.xfs -f /dev/sdb3
meta-data=/dev/sdb3 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0

blkid命令

查看硬盘分区的格式与UUID
格式:
blkid [设备]
blkid /dev/sdb3

[root@jinkai01 tmp]# blkid /dev/sdb3
/dev/sdb3: UUID="64abf4be-acc2-4582-90db-6e6ea02f6ca7" TYPE="xfs"

磁盘挂载

挂载磁盘:建议你在挂载磁盘分区时,尽量使用UUID或者LABEL这两种方法
mount命令
-a 选项:重新挂载
-t选项:用来指定挂载的分区类型,默认不指定,会自动识别。
-o选项:用来指定挂载的分区有哪些特性,即/etc/fstab配置文件中第4列的那些
格式:
mount [设备][挂载点]
mount /dev/sdb2 

实验1:将sdb2挂载到/mnt/目录下

[root@jinkai01 tmp]# mount /dev/sdb2 /mnt/
[root@jinkai01 tmp]# df -h | grep -v tmpfs
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 16G 1.3G 15G 9% /
/dev/sda1 197M 111M 87M 56% /boot
/dev/sdb2 1008M 1.3M 956M 1% /mnt/etc/fstab

配置文件 /etc/fstab
开机自动挂载设备文件
先查看/etc/fstab文件

[root@jinkai01 tmp]# cat /etc/fstab
/dev/mapper/centos-root / xfs defaults 0 0
UUID=8d93bf04-faef-465d-9e2e-a2398218c404 /boot xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0

第1列就是分区的标识,可以写分区的LABEL、分区的UUID,也可以写分区名(/dev/sda1)。
第2列是挂载点。
第3列是分区的格式。
第4列是mount的一些挂载参数。一般情况下,直接写defaults即可。
第5列的数字表示是否被dump备份。1表示备份,0表示不备份。
第6列的数字表示开机时是否自检磁盘。1和2都表示检测,0表示不检测。自检时,1比2优先级高,所以先检测1,再检测2。如果有多个分区需要开机检测,就都设置成2,1检测完后会同时检测2。在CentOS 7系统里,所有分区中该列的值都是0。
着重介绍第4列的常用选项。
async/sync:async表示与磁盘和内存不同步。系统每隔一段时间就会把内存数据写入磁盘中,而sync则会时时同步内存和磁盘中的数据。
auto/noauto:表示开机自动挂载/不自动挂载。
default:表示按照大多数永久文件系统的默认值设置挂载定义,它包含了rw、suid、dev、exec、auto、nouser和async。
ro:表示按只读权限挂载。
rw:表示按可读可写权限挂载。
exec/noexec:表示允许/不允许可执行文件执行,但千万不要把根分区挂载为noexec,否则将无法使用系统,甚至连mount命令都无法使用。
user/nouser:表示允许/不允许root外的其他用户挂载分区。为了安全,请用nouser。
suid/nosuid:表示允许/不允许分区有suid属性,一般设置nosuid。
usrquota:表示启动用户的磁盘配额模式。磁盘配额会针对用户限定他们使用的磁盘额度。
grquota 表示启动群组的磁盘配额模式

从中我们发现可以在此文件中修改添加可以添加自动挂载按格式在
文档中添加

/dev/sdb2 /mnt xfs defaults 0 0

使用mount -a自动挂载

[root@jinkai01 ~]# mount -a (前提是先把需要挂载的磁盘写到配置文件里面才行,不然输入命令也无法完成自动挂载)

开机自动挂载的另外一种方法,把挂载命令写入到/etc/rc.d/rc.local 里面,然后给予文件执行权限,chmod a+x /etc/rc.d/rc.local mount 命令最好使用绝对路径 /usr/bin/mount

vim /etc/rc.d/rc.local
/usr/bin/mount UUID="92f01dbf-72b1-49e4-aac6-1485e7124dce" /mnt
[root@jinkai01 ~]# chmod a+x /etc/rc.d/rc.local

卸载磁盘:

umount [设备]

实验:将sdb2卸载

[root@jinkai01 tmp]# df -h | grep -v tmpfs
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 16G 1.3G 15G 9% /
/dev/sda1 197M 111M 87M 56% /boot
/dev/sdb2 1008M 1.3M 956M 1% /mnt
[root@jinkai01 tmp]# umount /dev/sdb2
[root@jinkai01 tmp]# df -h | grep -v tmpfs
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 16G 1.3G 15G 9% /
/dev/sda1 197M 111M 87M 56% /boot

手动增加swap空间

swap类似于Windows的虚拟内存,分区时一般指定虚拟内存的大小是实际内存的2倍;
增加虚拟磁盘的思路为:建立swapfile——>格式化为swap格式——>启用虚拟磁盘
建立swapfile
建立虚拟磁盘/tmp/newdisk,块文件为100M每个,共1个,也就是100M;

[root@jinkai01 /]# dd if=/dev/zero of=/tmp/newdisk bs=100M count=1
记录了1+0 的读入
记录了1+0 的写出
104857600字节(105 MB)已复制,2.89392 秒,36.2 MB/秒
[root@jinkai01 /]# du -sh /tmp/newdisk
100M /tmp/newdisk

格式化新磁盘

mkswap -f [虚拟磁盘路径]

[root@jinkai01 /]# mkswap -f /tmp/newdisk
正在设置交换空间版本 1,大小 = 102396 KiB
无标签,UUID=6e731cb1-8879-4847-902d-a8a85c02d1c1

加载启用虚拟磁盘

swapon [虚拟磁盘路径]

[root@jinkai01 /]# free -m
total used free shared buff/cache available
Mem: 972 124 608 7 239 679
Swap: 4095 0 4095
[root@jinkai01 /]# swapon /tmp/newdisk
swapon: /tmp/newdisk:不安全的权限 0644,建议使用 0600。
[root@jinkai01 /]# free -m
total used free shared buff/cache available
Mem: 972 124 608 7 239 679
Swap: 4195 0 4195

卸载虚拟磁盘

swapoff [虚拟磁盘路径]
swapoff /tmp/newdisk

[root@jinkai01 /]# swapoff /tmp/newdisk
[root@jinkai01 /]# free -m
total used free shared buff/cache available
Mem: 972 124 608 7 239 679
Swap: 4095 0 4095