知识点 系统磁盘管理
命令:df,du,mke2fs,blkid,free<br> 配置文件:/etc/fstab ,/etc/filesystems
df命令
df - report file system disk space usage 查看磁盘使用情况
-
h (打印文件系统容量大小)print sizes in human readable format
-
H 相比与h他换算的大小不是1024 而是1000.(所以#df -H 显示出来的结果比h要大)
-
i 查看个分区inode使用情况 (有时候磁盘明明有剩余空间就是写不进去,可能就是inode已经用完了!)
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 12G 1002M 11G 9% /
devtmpfs 481M 0 481M 0% /dev
tmpfs 492M 0 492M 0% /dev/shm
tmpfs 492M 7.4M 485M 2% /run
tmpfs 492M 0 492M 0% /sys/fs/cgroup
/dev/sda1 197M 102M 96M 52% /boot
tmpfs 99M 0 99M 0% /run/user/0
由图可以看到各挂载点的文件系统,容量,使用%等信息,其中devtmpfs,tmpfs这些是临时文件(/dev/shm是内存),重启之后会没有了。剩下的就是我们在创建系统的时候划分的2个分区--/分区和/boot分区。那不是还有一个swap分区吗?没错使用命令free
[root@localhost test]# free
total used free shared buff/cache available
Mem: 1006924 130816 729892 7584 146216 712928
Swap: 8388604 0 8388604
du命令
du - estimate file space usage
显示文件大小,但是严谨的说应该是显示文件占用的block数!
[root@localhost test]# ls -l 111.txt
-rw-r--r--. 1 root root 534 Oct 26 09:40 111.txt
[root@localhost test]# du -sh 111.txt
4.0K 111.txt
==ls显示的是文件的实际大小,但是du显示的实际占用的block数。111.txt大小为534字节,但是由于最小的block是4K,所以就算空间明显大很多,还是占用了一个block!==
磁盘分区
电脑的存储有内部存储和外部存储。内存就是内部存储设备,这类存储的读写速度比外部存储快很多,但是问题是断电之后数据会丢失。磁盘作为一个外部存储设备相对与内存而言,读写速度是没内存快的,但是存在磁盘上的数据在断电之后还是可以保留的。
磁盘就好比一个仓库,如果你无规划的随便存储,到时候要找一件东西的时候总不肯能把整个仓库的东西都倒出来找吧! 所以这就是分区的意义。 把仓库分割成几个小房间,然后在房间里放小货柜,这些货柜就相当于我们说的block块。
通过vmware我们增加一块虚拟的硬盘
[root@localhost ~]# fdisk -l
磁盘 /dev/sda:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000b299e
设备 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 41943039 18668544 83 Linux
磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
本来只有一个磁盘 /dev/sda 通过vmware 我们新增了一个 /dev/sdb
拿到一块新的硬盘,我们开始分区
使用命令# fdisk /dev/sdb
[root@localhost ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0xae6855a6 创建新的 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:新建一个新分区 p:查看分区情况 w:保存退出 d:删除一个分区
一顿操作猛如虎之后分区完成
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xae6855a6
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 2050047 1024000 83 Linux
/dev/sdb2 2050048 4147199 1048576 83 Linux
/dev/sdb3 4147200 10438655 3145728 83 Linux
/dev/sdb4 10438656 20971519 5266432 5 Extended
/dev/sdb5 10440704 12488703 1024000 83 Linux
/dev/sdb6 12490752 20971519 4240384 83 Linux 逻辑分区,ID为5的为扩张分区 //ID为83的是主分区或lu
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
结果是3个主分区+1个扩展分区 其中扩展分区里又分出2个逻辑分区。
磁盘格式化
磁盘分区完成之后是不能直接使用的,需要将各分区格式化。查看centos支持的文件系统使用命令 #cat /etc/filesystem
[root@localhost ~]# cat /etc/filesystems
xfs
ext4
ext3
ext2
nodev proc
nodev devpts
iso9660
vfat
hfs
hfsplus
*
格式化命令#mke2fs命令可以对各个分区进行格式化。 因为文件系统就只有xfs,ext4,ext3....这些,而mke2fs后面经常要跟文件系统,所以我们会简写为#mkfs.xfs,#mkfs.ext4....
例:
[root@localhost ~]# mkfs.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
64000 inodes, 256000 blocks
12800 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=262144000
8 block groups
32768 blocks per group, 32768 fragments per group
8000 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376
Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (4096 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
如果没记错的,前面我们分区的时候划了3个主分区和1个扩展分区。那么扩展分区能不能格式化呢
[root@localhost ~]# mkfs.ext4 /dev/sdb4
mke2fs 1.42.9 (28-Dec-2013)
mkfs.ext4: inode_size (128) * inodes_count (0) too big for a
filesystem with 0 blocks, specify higher inode_ratio (-i)
or lower inode count (-N).
没有像/dev/sdb1一样显示各种‘完成’,根据规则扩展分区是不能被格式化的。
将所有分区格式化完成后,使用命令#blkid命令就可以查看各个分区的文件系统格式了。
[root@localhost ~]# blkid
/dev/sda1: UUID="d3fd6845-8847-4bb3-8a3c-411356d745b8" TYPE="xfs"
/dev/sda2: UUID="ca7f5e8a-be90-480b-ae81-9e759f7198d8" TYPE="swap"
/dev/sda3: UUID="58dd7619-2ce0-4125-9c74-b2e14c91852a" TYPE="xfs"
/dev/sdb1: UUID="a0b0336c-942b-40d1-988a-af7902ca7c3e" TYPE="ext4"
/dev/sdb2: UUID="18328409-a29a-40e2-a6ad-04914b4e5ffa" TYPE="ext4"
/dev/sdb3: UUID="b9dcc285-d533-41e0-889d-a3bc9b7e6724" TYPE="ext4"
/dev/sdb5: UUID="86f92871-b1f5-4fac-a4ac-ddedbb8f9736" TYPE="ext4"
/dev/sdb6: UUID="b4750f08-6881-4392-aa3f-d6ae1c37e378" TYPE="ext4"
/dev/sr0: UUID="2017-09-06-10-51-00-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos"
偷懒把所有个分区都格式化成了ext4....
挂载/卸载
磁盘经过分区 格式化之后终于可以使用了(you are too young to simple)。经过前面的铺垫,最后一步就是挂载了。挂载命令#mount,在将磁盘分区挂载之前我们需要创建一个挂载点,这个挂载点我们一般都采用目录的形式出现。
挂载步骤:
[root@localhost ~]# mkdir /mnt/PAPAPA
[root@localhost ~]# mount /dev/sdb1 /mnt/PAPAPA
[root@localhost ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 18G 970M 17G 6% /
devtmpfs 479M 0 479M 0% /dev
tmpfs 489M 0 489M 0% /dev/shm
tmpfs 489M 6.7M 482M 2% /run
tmpfs 489M 0 489M 0% /sys/fs/cgroup
/dev/sda1 197M 97M 100M 50% /boot
tmpfs 98M 0 98M 0% /run/user/0
/dev/sdb1 969M 2.5M 900M 1% /mnt/PAPAPA
通过#df -h我们可以看到/dev/sdb1已经成功挂载。
既然有挂载那必须要有卸载,卸载的命令很简单#umount
例:
[root@localhost ~]# umount /mnt/PAPAPA
[root@localhost ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 18G 970M 17G 6% /
devtmpfs 479M 0 479M 0% /dev
tmpfs 489M 0 489M 0% /dev/shm
tmpfs 489M 6.7M 482M 2% /run
tmpfs 489M 0 489M 0% /sys/fs/cgroup
/dev/sda1 197M 97M 100M 50% /boot
tmpfs 98M 0 98M 0% /run/user/0
至此,一个磁盘从分区,格式化在到挂载,卸载都已经完成。
/etc/fstab
/etc/fstab里面存放了系统启动时缺省要挂载的分区
[root@localhost ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Sat May 12 19:04:53 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=58dd7619-2ce0-4125-9c74-b2e14c91852a / xfs defaults 0 0
UUID=d3fd6845-8847-4bb3-8a3c-411356d745b8 /boot xfs defaults 0 0
UUID=ca7f5e8a-be90-480b-ae81-9e759f7198d8 swap swap defaults 0 0
如果系统开机磁盘出现问题的话,第一时间我们就要想到可能是我们的挂载配置文件出现了问题,可以将新挂载的条目删除重新挂载。
手动增加swap分区
swap分区相当于windosw里的虚拟内存,在安装linux的时候swap分区的大小已经设置好了。但是在使用的时候会出现swap不够用的情况。但是我们又不能重新分区。所以机制的大神就另辟蹊径。主要思路为:建立swapfile文件-->格式化为swap格式-->启用该虚拟磁盘
例:
[root@localhost ~]# dd if=/dev/zero of=/mnt/PAPAPA/pa.txt bs=1M count=1024
dd: 写入"/mnt/PAPAPA/pa.txt" 出错: 设备上没有空间
记录了950+0 的读入
记录了949+0 的写出
995962880字节(996 MB)已复制,3.36824 秒,296 MB/秒
[root@localhost ~]# mkswap -f /mnt/PAPAPA/pa.txt
正在设置交换空间版本 1,大小 = 972616 KiB
无标签,UUID=6ea1ac70-9956-4066-b466-6b267fefdcb2
[root@localhost ~]# swapon /mnt/PAPAPA/pa.txt
swapon: /mnt/PAPAPA/pa.txt:不安全的权限 0644,建议使用 0600。
[root@localhost ~]# chmod 0600 !$
chmod 0600 /mnt/PAPAPA/pa.txt
增加前swap分区的容量
[root@localhost ~]# free -m
total used free shared buff/cache available
Mem: 976 113 726 6 136 704
Swap: 2047 0 2047
增加后swap分区的容量
[root@localhost ~]# free -m
total used free shared buff/cache available
Mem: 976 113 64 6 797 679
Swap: 2997 0 2997
如果想要卸载的话使用命令#swapoff即可
笔记
- fdisk只能针对小于2T的磁盘进行分区,如果磁盘大鱼2T则只能使用parted来分区。
- raid是在bios的基础上做的。各个厂商都有操作说明。一般有raid 0、1、5、6、10等