df命令
1、df命令简介
功 能:显示文件系统磁盘空间使用情况
语 法:df [选项]
补 充: 默认显示单位KB。
选项:
-h:human readalbe,显示内容变为人类可读,优化显示内内容的可读性。
-k:以KB为单位显示;
-m:以M为单位显示;
-i:查看inode的使用情况。
2、df命令使用
2.1、#df
[root@colinlinux ~]# df
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/sda2 16843776 1181668 15662108 8% /
devtmpfs 923836 0 923836 0% /dev
tmpfs 933648 0 933648 0% /dev/shm
tmpfs 933648 8796 924852 1% /run
tmpfs 933648 0 933648 0% /sys/fs/cgroup
/dev/sda1 201380 111444 89936 56% /boot
tmpfs 186732 0 186732 0% /run/user/0
[root@colinlinux ~]#
第一列:磁盘分区名称,或文件系统名称;
第二列:磁盘总大小,默认单位KB,标题行的1k-块,对应单位,KB;
第三列:已使用空间,默认单位KB;
第四列:剩余可用空间,默认单位KB;
第五列:已使用空间百分比。如果已使用百分比达到90%以上,那么就应该关注了。磁盘分区太满会造成系统崩溃重启,甚至因为磁盘太满无法远程连接。
第六列:挂载点。挂载点实际就是系统中的一个目录,Linux的磁盘是不能直接访问的,需要有一个挂载点才能访问。系统通过挂载点,才能找到这个磁盘,进入磁盘读写数据。
磁盘知识补充:
计算机中存放信息的主要的存储设备就是硬盘,但是硬盘不能直接使用,必须对硬盘进行分割,分割成的一块一块的硬盘区域就是磁盘分区。在传统的磁盘管理中,将一个硬盘分为两大类分区:主分区和扩展分区。主分区是能够安装操作系统,能够进行计算机启动的分区,这样的分区可以直接格式化,然后安装系统,直接存放文件。
linux、unix这类操作系统将系统中的一切都作为文件来管理。在windows中我们常见的硬件设备、磁盘分区等,在linux、unix中都被视作文件,对设备、分区的访问就是读写对应的文件。
挂载点实际上就是linux中的磁盘文件系统的入口目录,类似于windows中的用来访问不同分区的C:、D:、E:等盘符。其实winxp也支持将一个磁盘分区挂在一个文件夹下面,只是我们C:、D:这样的盘符操作用惯了,一般没有将分区挂到文件夹。
重启会被清空的文件系统
图中红色框内的文件系统或者叫磁盘分区,只要是名称中带有tmpfs的都是临时的磁盘分区,在这个磁盘分区的挂载点中即使写入了东西,重启或者退出后都会被清除。
/dev/shm是内存的挂载点,如果想要在内存里写东西,就可以放倒/dev/shm目录下。
2.2、#df -h
#df -h ,-h(human)选项会以人为可读的形式显示磁盘使用情况;
[root@colinlinux ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda2 17G 1.2G 15G 8% /
devtmpfs 903M 0 903M 0% /dev
tmpfs 912M 0 912M 0% /dev/shm
tmpfs 912M 8.6M 904M 1% /run
tmpfs 912M 0 912M 0% /sys/fs/cgroup
/dev/sda1 197M 109M 88M 56% /boot
tmpfs 183M 0 183M 0% /run/user/0
2.2、#df -k
#df -k ,-k选项会以KBytes为单位显示磁盘使用情况;
[root@colinlinux ~]# df -k
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/sda2 16843776 1181596 15662180 8% /
devtmpfs 923836 0 923836 0% /dev
tmpfs 933648 0 933648 0% /dev/shm
tmpfs 933648 8796 924852 1% /run
tmpfs 933648 0 933648 0% /sys/fs/cgroup
/dev/sda1 201380 111444 89936 56% /boot
tmpfs 186732 0 186732 0% /run/user/0
2.3、#df -m
#df -m ,-m选项会以MBytes为单位显示磁盘使用情况;
[root@colinlinux ~]# df -m
文件系统 1M-块 已用 可用 已用% 挂载点
/dev/sda2 16449 1154 15296 8% /
devtmpfs 903 0 903 0% /dev
tmpfs 912 0 912 0% /dev/shm
tmpfs 912 9 904 1% /run
tmpfs 912 0 912 0% /sys/fs/cgroup
/dev/sda1 197 109 88 56% /boot
tmpfs 183 0 183 0% /run/user/0
2.4、#df -i
创建好分区后,一旦格式化就创建好了inode。inode多少和磁盘分区大小有关。如果inode使用量满了的话,即使df查看到已用空间百分比还有剩余,也无法写入了。
[root@colinlinux ~]# df -i
文件系统 Inode 已用(I) 可用(I) 已用(I)% 挂载点
/dev/sda2 8427008 32463 8394545 1% /
devtmpfs 230959 384 230575 1% /dev
tmpfs 233412 1 233411 1% /dev/shm
tmpfs 233412 455 232957 1% /run
tmpfs 233412 16 233396 1% /sys/fs/cgroup
/dev/sda1 102400 330 102070 1% /boot
tmpfs 233412 1 233411 1% /run/user/0
2.5、#df -a
查看全部的文件系统情况;
[root@colinlinux ~]# df -a
文件系统 1K-块 已用 可用 已用% 挂载点
rootfs - - - - /
sysfs 0 0 0 - /sys
proc 0 0 0 - /proc
devtmpfs 923836 0 923836 0% /dev
securityfs 0 0 0 - /sys/kernel/security
tmpfs 933648 0 933648 0% /dev/shm
devpts 0 0 0 - /dev/pts
tmpfs 933648 8768 924880 1% /run
tmpfs 933648 0 933648 0% /sys/fs/cgroup
cgroup 0 0 0 - /sys/fs/cgroup/systemd
pstore 0 0 0 - /sys/fs/pstore
cgroup 0 0 0 - /sys/fs/cgroup/blkio
cgroup 0 0 0 - /sys/fs/cgroup/cpu,cpuacct
cgroup 0 0 0 - /sys/fs/cgroup/freezer
cgroup 0 0 0 - /sys/fs/cgroup/cpuset
cgroup 0 0 0 - /sys/fs/cgroup/memory
cgroup 0 0 0 - /sys/fs/cgroup/net_cls,net_prio
cgroup 0 0 0 - /sys/fs/cgroup/devices
cgroup 0 0 0 - /sys/fs/cgroup/hugetlb
cgroup 0 0 0 - /sys/fs/cgroup/perf_event
cgroup 0 0 0 - /sys/fs/cgroup/pids
configfs 0 0 0 - /sys/kernel/config
/dev/sda2 16843776 1181592 15662184 8% /
selinuxfs 0 0 0 - /sys/fs/selinux
systemd-1 - - - - /proc/sys/fs/binfmt_misc
mqueue 0 0 0 - /dev/mqueue
debugfs 0 0 0 - /sys/kernel/debug
hugetlbfs 0 0 0 - /dev/hugepages
/dev/sda1 201380 111444 89936 56% /boot
binfmt_misc 0 0 0 - /proc/sys/fs/binfmt_misc
tmpfs 186732 0 186732 0% /run/user/0
[root@colinlinux ~]#
2.6、#df 文件或目录
直接#df 文件或目录,会显示文件或目录所在挂载点的相关情况,也可以用与查看文件挂载点。
[root@colinlinux ~]# df /tmp/colin.txt
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/sda2 16843776 1181596 15662180 8% /
[root@colinlinux ~]# df /root/
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/sda2 16843776 1181596 15662180 8% /
[root@colinlinux ~]#
du命令
1、du命令简介
功 能:可以查看某个目录或文件的占用磁盘空间的大小,这里是指的文件占用磁盘的块的大小,单位默认KB,
语 法:df [选项] [参数]
补 充: 默认显示单位KB。
选项:
-h:human readalbe,显示内容变为人类可读,优化显示内内容的可读性。
-s或--summarize 仅显示总计,只列出最后加总的值。默认单位KB;
-b:以Byte为单位显示;
-k:以KB为单位显示;
-m:以M为单位显示;
-a:显示目录所有文件;
2、du命令用法
2.1、du
直接使用#du命令,会列出当前路径下的文件占用磁盘块情况;第一列的数字是占用磁盘块的大小,单位KB;
[root@colinlinux test1]# cd
[root@colinlinux ~]# cd /tmp/test1/
[root@colinlinux test1]# ls
a.txt b.txt dir_t
[root@colinlinux test1]# du
4 ./dir_t
12 .
[root@colinlinux test1]#
2.2、#du 文件/目录
#du 目录
和直接在目录下使用du一样,会显示当前目录和目录下的目录占用磁盘的情况;
[root@colinlinux ~]# cd /tmp/test1/
[root@colinlinux test1]# ls
a.txt b.txt dir_t
[root@colinlinux test1]# du
4 ./dir_t
12 .
[root@colinlinux test1]# du /tmp/test1/
4 /tmp/test1/dir_t
12 /tmp/test1/
[root@colinlinux test1]#
#du 文件
可以查看这个文件占用磁盘块大小;
[root@colinlinux ~]# cd /tmp/test1/
[root@colinlinux test1]# ls
a.txt b.txt dir_t
[root@colinlinux test1]# du a.txt
4 a.txt
[root@colinlinux test1]#
2.3、#du -s 文件/目录
#du -s 文件/目录,显示的是总计的磁盘占用情况,不加-s显示的是分开的磁盘使用情况;
[root@colinlinux /]# du /root/
4 /root/.ssh
44 /root/
[root@colinlinux /]# du -s /root/
44 /root/
[root@colinlinux /]#
2.4、#du -a 目录
#du -a 目录,-a选项后面一般跟一个目录,这样可以查看所有的目录所有文件或目录的磁盘占用情况;
[root@colinlinux /]# du -a /root/
4 /root/.bash_logout
4 /root/.bash_profile
4 /root/.bashrc
4 /root/.cshrc
4 /root/.tcshrc
4 /root/anaconda-ks.cfg
8 /root/.bash_history
4 /root/.ssh/authorized_keys
4 /root/.ssh
4 /root/.viminfo
4 /root/.lesshst
44 /root/
[root@colinlinux /]#
2.5、du -sh和ls不同
du查看文件大小,是统计的文件占用块的大小,这里磁盘的块大小是4KB,即使文件没写满显示也是大小4KB,一个块里只能是一个文件;
ls -l查看文件大小,是统计的文件本身的大小;
[root@colinlinux /]# du -sh /etc/passwd
4.0K /etc/passwd
[root@colinlinux /]# ls -lh /etc/passwd
-rw-r--r--. 1 root root 1.2K 11月 2 06:56 /etc/passwd
[root@colinlinux /]#
2.6、#du -sb和#ls -l
du -sb查看到的和ls -l 查看到的大小一致,因为du -sb是以字节为单位显示大小,ls -l 也是按照字节大小统计的,所以才会一样;
[root@colinlinux /]# du -sb /etc/passwd
1172 /etc/passwd
[root@colinlinux /]# ls -l /etc/passwd
-rw-r--r--. 1 root root 1172 11月 2 06:56 /etc/passwd
[root@colinlinux /]#
磁盘分区
1、服务器添加硬盘;
服务器添加硬盘,实际上服务器是支持热拔插硬盘的,开机状态下直接插上硬盘就可以识别出来。
2、给虚拟机添加磁盘;
选择虚拟机设置,选择添加
选择添加硬件类型为硬盘
选择创建何种硬盘(选择默认的SCSI即可)
选择磁盘(选择创建新虚拟磁盘)
指定磁盘容量(设置大小)
指定磁盘文件,这里默认选择完成,退出。
选择确定,退出。
3、fdisk命令,给磁盘分区
功 能:fdisk命令用于观察硬盘实体使用情况,也可对硬盘分区。采用问答式界面。
语 法:df [选项] [参数]
选 项: -l:列出指定的外围设备的分区表状况;
参 数:
补 充:
[root@colinlinux /]# fdisk
用法:
fdisk [选项] <磁盘> 更改分区表
fdisk [选项] -l <磁盘> 列出分区表
fdisk -s <分区> 给出分区大小(块数)
选项:
-b <大小> 扇区大小(512、1024、2048或4096)
-c[=<模式>] 兼容模式:“dos”或“nondos”(默认)
-h 打印此帮助文本
-u[=<单位>] 显示单位:“cylinders”(柱面)或“sectors”(扇区,默认)
-v 打印程序版本
-C <数字> 指定柱面数
-H <数字> 指定磁头数
-S <数字> 指定每个磁道的扇区数
[root@colinlinux /]#
3.1、#fdisk -l
列出目前系统的磁盘情况;
[root@colinlinux /]# fdisk -l
磁盘 /dev/sda:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000ab814
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 411647 204800 83 Linux
/dev/sda2 411648 34119679 16854016 83 Linux
/dev/sda3 34119680 41930751 3905536 82 Linux swap / Solaris
[root@colinlinux /]#
上图中明显只有一块磁盘,刚刚添加的磁盘没有列出来,系统没有识别出来。因为是虚拟机,不像真实服务器支持热拔插,需要重新启动才能识别。
#reboot重启
从虚拟机的右下角也可以看到,有两块磁盘了。
重新登录进系统,再次#fdisk -l,查看系统磁盘情况,可以看到有两块磁盘了。
3.2、#fdisk 磁盘路径 给磁盘分区
常用选项:
m,显示帮助列表;
n,增加一个新分区;
p,打印出分区列表;blocks单位是KB;
w,写入列表到分区中并退出,其实就是保存退出;
q,直接退出;
d,删除分区;
#fdisk /dev/sdb
输入m可以获取帮助信息
常用选项:
n,增加一个新分区;
p,打印出分区列表;
w,写入列表到分区中并退出,其实就是保存退出;
d,删除分区;
输入p,打印一下分区列表,显示还没有任何分区;
输入n,增加分区。
显示结果:选择p,表示主分区;选择e,表示扩展分区;
fdisk划分分区有个格式叫做MBR分区,MBR分区最高支持2T,超过2T就不能使用fdisk划分分区了,另外划分分区最多只能有4个主分区primary,如果想要划分多个分区,需要设置一个扩展分区,然后在扩展分区中再划分逻辑分区。扩展分区可以没有。
主分区primary + 扩展分区extended 小于等去4;
输入p选择设置主分区;
设置主分区号,这里自己设置,我们设置成1;(注:主分区号,只能设置成1到4)
设置扇区起始值,这里选择默认即可;
设置分区大小,这里自己设置,我们设置为+2G,分配2G给主分区1;
输入p,打印分区列表就发现这里多了一块分区了。
当我们划分到3个主分区的时,再划分分区就发现提示有3个主分区,0个扩展分区,1个空闲可用,这表示还有一个主名额可以用,如果划分为了主分区,再划分就没有了。
当划分到4个主分区的时候,如果再输入n,添加新分区就会提示:如果想要创建比4个更多的分区,必须把一个主分区替换成扩展分区;
输入d选择删除分区号,默认从后往前删除,默认删除4,这里选择删除3,删除后查看一下,发现分区3已经被删除了。这里说明主分区的分区号是1到4,可以不连续,但是不能大于4;
输入n,继续添加分区,输入e,添加扩展分区,给扩展分区划分4G;(因为添加磁盘是天机的10G,所以主分区和逻辑分区之和不能大于10G)
输入p,查看分区列表。
Blocks中4194304单位KB,就是刚刚添加的扩展分区,
ID号,是主分区或者是逻辑分区都是83,5是扩展分区;
System,Extended就是扩展分区;
当添加了逻辑分区后,因为4个主分区名额已满,就只会提示添加逻辑分区了。
这里添加1G的逻辑分区;
查看分区列表可以看到,扩展分区下面多出了一个ID号83的分区,类型是linux;
查看当前分区情况,然后删除主分区2,和逻辑分区5;
删除分区2,发现没问题;
删除分区5,发现sdb5还在,但是对比分区的start和end,可以发现现在的sdb5其实是刚刚的sdb6。
逻辑分区的分区号必须连续,而主分区则不是;
输入q,直接退出不保存;
再次进入分区模式,目前还没有任何分区,现在直接添加一个扩展分区,
添加完扩展分区后就会发现再添加分区的时候提示内容变成了
Partition type:
p primary (0 primary, 1 extended, 3 free)
l logical (numbered from 5)
0个主分区,一个扩展分区,三个可用;
逻辑分区号从5开始;
说明:主分区和扩展分区的分区号,必须在0-4,不必连续;
但是逻辑分区的分区号,则必须从5开始,而且必须连续;
这里我们添加逻辑分区的时候,只要选择l,就会默认自动从当前逻辑分区号增加1,不用人为输入分区号,以保证逻辑分区号连续;
小结:扩展分区和逻辑分区
扩展分区虽然有起始值终止值,有大小,但是真正占有空间的是扩展分区内部的逻辑分区,扩展分区本身不支持格式化,不能直接在扩展分区里写入数据,扩展分区只是逻辑分区的限定外壳,真正起作用的是逻辑分区。
parted分区GPT格式
fdisk分区工具,它的分区格式为MBR,特点是,最多分4个主分区,磁盘大小不能超过2T。而GPT分区格式,突破了这些限制,它没有主分区、扩展分区、逻辑分区之分,在一块磁盘上最多可以分128个分区出来,支持大于2T的分区,最大卷可达18EB。
parted 工具常用功能:
当在命令行输入parted后,进入parted命令的交互模式。输入help会显示帮助信息。下面就简单介绍一下常用的功能
1、check 简单检查文件系统。建议用其他命令检查文件系统,比如fsck
2、help 显示帮助信息
3、mklabel 创建分区表, 即是使用msdos(MBR)还是使用gpt,或者是其他方式分区表
4、 mkfs 创建文件系统。该命令不支持ext3 格式,因此建议不使用,最好是用parted分好区,然后退出parted交互模式,用其他命令进行分区,比如:mkfs.ext3
5、mkpart 创建新分区。
格式:mkpart PART-TYPE [FS-TYPE] START END
PART-TYPE 类型主要有primary(主分区), extended(扩展分区), logical(逻辑区). 扩展分区和逻辑分区只对msdos。
fs-type 文件系统类型,主要有fs32,NTFS,ext2,ext3等
start end 分区的起始和结束位置。
6、mkpartfs 建立分区及其文件系统。目前还不支持ext3文件系统,因此不建议使用该功能。最后是分好区后,退出parted,然后用其他命令建立文件系统。
7、print 输出分区信息。该功能有3个选项,
free 显示该盘的所有信息,并显示磁盘剩余空间
number 显示指定的分区的信息
all 显示所有磁盘信息
8、resize 调整指定的分区的大小。目前对ext3格式支持不是很好,所以不建议使用该功能。
9、rescue 恢复不小心删除的分区。如果不小心用parted的rm命令删除了一个分区,那么可以通过rescue功能进行恢复。恢复时需要给出分区的起始和结束的位置。然后parted就会在给定的范围内去寻找,并提示恢复分区。
10、rm 删除分区。命令格式 rm number 。如:rm 3 就是将编号为3的分区删除
11、select 选择设备。当输入parted命令后直接回车进入交互模式是,如果有多块硬盘,需要用select 选择要操作的硬盘。如:select /dev/sdb
12、set 设置标记。更改指定分区编号的标志。标志通常有如下几种:boot hidden raid lvm 等。
boot 为引导分区,hidden 为隐藏分区,raid 软raid,lvm 为逻辑分区。
如:set 3 boot on 设置分区号3 为启动分区
注:以上内容为parted常用的功能,由于该工具目前对ext3支持得不是很好,因此有些功能无法应用,比如move(移动分区)和resize等。
parted分区功能事例。
1、用命令模式 为/dev/sdb创建gpt类型文件分区表,并分500G分区。然后为该分区创建ext3文件系统。并将该分区挂载在/test文件夹下。
# parted /dev/sdb mklabel —创建分区表
# parted /dev/sdb mkpart ext3 0 500000 —创建500G分区/dev/sdb1
# mkfs.ext3 /dev/sdb1 —-将分区/dev/sdb1格式化成ext3格式文件系统
# mount /dev/sdb1 /test —将/dev/sdb1 挂载在/test下
如果让系统自动挂载/dev/sdb1 需手工编辑/etc/fstab文件。并在文件末尾添加如下内容:
/dev/sdb1 /test ext3 defaults 0 0
2、创建大小为4G的交互分区。由于已经创建了500G的/dev/sdb1 ,因此再创建的分区为/dev/sdb2
# parted /dev/sdb mkpart swap 500000 504000 —创建4G分区/dev/sdb2
# mkswap /dev/sdb2 —-将/dev/sdb2创建为交换分区
# swapon /dev/sdb2 —-激活/dev/sdb2
如果让系统自动挂载/dev/sdb2这个交换分区,需手工编辑/etc/fstab文件。并在文件末尾添加如下内容:
/dev/sdb2 swap swap defaults 0 0
3、恢复被误删除的分区(也可以参考testdisk命令)。由于parted直接写磁盘,因此一旦不小心删除了某一分区,建议立即用rescue恢复。下面通过事例来理解恢复过程。
# parted /dev/sdb mkpart ext3 504000 514000 —-创建10G分区/dev/sdb3
# mkfs.ext3 /dev/sdb3 —将/dev/sdb3格式化成ext3文件系统。
# parted /dev/sdb rm 3 —-删除/dev/sdb3
# parted /dev/sdb rescue 504000 514000 —依照屏幕提示,输入yes即可恢复被误删除分区