Linux磁盘管理知识点

Linux磁盘管理
1.1查看磁盘或者目录的容量
●df命令
作用:用于查看已挂载的磁盘总容量、使用量、剩余容量等,可以不加任何参数,默认以KB为单位显示。

上面的分别为:分区的名字、分区的总量、使用容量、剩余容量、使用容量的百分比(如果中国数值达到90%以上,那么就应该关注了。因为磁盘分区满了,会引起系统崩溃)、挂载点
上面例子中,/boot是我们在安装系统时划分出来的。/dev、/dev/shm为内存分区,默认大小为内存大小的1/2,如果把文件存在这个分区下,相当于存到了内存中,好处是读写快,坏处是系统重启时文件就丢失。后面/run、/sys/fs/cgroup等分区都是tmpfs,跟/dev/shm类似,为临时文件系统。
下面例子把tmpfs相关分区过滤掉:
◎-i:查看inodes的使用状况,如使已用100%,即使磁盘空间有富裕,也会提示磁盘空间已满

# `df -i |grep -v tmpfs` 

Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda3 16860160 74522 16785638 1% /
/dev/sda1 204800 330 204470 1% /boot
◎-h:表示使用合适的单位显示,例如GB

# `df -h |grep -v tmpfs`

Filesystem Size Used Avail Use% Mounted on
/dev/sda3 17G 4.7G 12G 30% /
/dev/sda1 197M 103M 94M 53% /boot
◎-k、-m:分别表示以KB和MB为单位显示

# `df -k |grep -v tmpfs`

Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda3 16849920 4914212 11935708 30% /
/dev/sda1 201388 105460 95928 53% /boot

# df -m |grep -v tmpfs

Filesystem 1M-blocks Used Available Use% Mounted on
/dev/sda3 16455 4799 11657 30% /
/dev/sda1 197 103 94 53% /boot
●du命令
用来查看某个目录或文件所占空间的大小
格式:du[-abckmsh] [文件或者目录名]
◎-a:表示全部文件和目录的大小都列出来。如果后面不加任何选项和参数,则只会列出目录(包含子目录)的大小。如果du目录不指定单位的话,默认显示单位为“KB”

# du /tmp

0 /tmp/.Test-unix
0 /tmp/.ICE-unix
0 /tmp/.X11-unix
0 /tmp/.font-unix
0 /tmp/.XIM-unix
0 /tmp/pear/temp
0 /tmp/pear
12 /tmp
◎-b:表示列出的值是以B为单位输出
◎-k:表示以KB为单位输出,这和默认不加任何选项的输出值是一样的
◎-m:表示以MB为单位输出
◎-h:表示系统自动调节单位。文件太小,以KB为单位;文件为千兆字节,以GB为单位;

```bash
[root@localhost ~]`# du -b /etc/passwd`
1085	/etc/passwd
[root@localhost ~]# du -k /etc/passwd
4	/etc/passwd
[root@localhost ~]# du -m /etc/passwd
1	/etc/passwd
[root@localhost ~]# du -h /etc/passwd
4.0K	/etc/passwd

◎-c:表示最后加总。

# du -c 
0	./.pki/nssdb
0	./.pki
1008700	.
1008700	total

◎-s:表示只列出总和

# du -s
1008700	.

1、2磁盘的分区和格式化

●增加虚拟硬盘
虚拟机——>设置——>磁盘——>添加——>下一步——>磁盘类型:SCSI(S)——>创建心虚拟磁盘——>下一步——>磁盘大小20GB——>将虚拟机磁盘存储为单个文件——>下一步——>选择要添加的路径,完成
●fdisk命令
fdisk磁盘分区工具。但fdisk找你划分小于2TB的分区
格式:fdisk [-l ] [设备名称] ,其选项只有-l;选项-l后面不加设备名称,会直接列出系统中使用的磁盘设备以及分区表;加上设备名称,则会列出该设备的分区表

# fdisk -l

在这里插入图片描述
可以看到新添加的硬盘sdb
#fdisk /dev/sdb
-m:列出常用命令
-p:打印当前磁盘的分区情况
-n:表示建立一个新的分区
-w:表示保存
-q:表示退出
-d:表示删除一个分区
注意:-n之后会提示我们e(扩展分区)还是p(主分区)
选择完分区之后,会提示分区数,当然也可以直接回车默认。
接着是选择开始的扇区(我们一般是默认直接回车),之后是划分多大的空间,记住格式:+n单位
2.1格式化
2.1命令mke2fs、mkfs.ext2、mkfs’.ext3、mkfs’.ext4和mkfs.xfs
●-b:表示分区时设定每个数据区块占用的空间大小。
●-i:表示设定inode的大小
●-N:表示设定inode的数量。有时默认的inode数不够用,所以要自定义inode的数量。
●-c:表示在格式化前先检测预习磁盘是否有问题。加上这个选项后,运行速度会非常慢。
●-L:表示预设该分区的标签(label)
●-j:表示建立ext3格式的分区。如果使用mkfs.ext3格式,就不用加这个选项了
●-t:用来指定文件系统的类型,可以是ext2、ext3,也可以是ext4.

# mke2fs -t ext4 /dev/sdb5
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
64000 inodes, 256000 blocks
12800 blocks (5.00%) reserved for the super user
First data block=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: done                            
Writing inode tables: done                            
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

指定文件系统格式为ext4时,命令mke2fs -t ext4 /dev/sdb5 等同于mkfs.ext4 /dev/sdb5.
然而,mke2fs并不支持把分区格式化成XFS类型,而只能使用mkfs.xfs,示例命令如下:

# mke2fs -t xfs /dev/sdb6
mke2fs 1.42.9 (28-Dec-2013)

Your mke2fs.conf file does not define the xfs filesystem type.
Aborting...
# mkfs.xfs /dev/sdb6
meta-data=/dev/sdb6              isize=256    agcount=4, agsize=64000 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0        finobt=0
data     =                       bsize=4096   blocks=256000, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal log           bsize=4096   blocks=853, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

如果你磁盘里都是特别小的文件,比如说1KB或者2KB,在格式化磁盘时指定块数值小点。Ext4文件系统的默认块大小为4096B(即4KB)。格式化时指定块大小超过4096B,但一旦超过,就不能正常挂载。

# mke2fs -t ext4 -b 8192 /dev/sdb5
Warning: blocksize 8192 not usable on most systems.
mke2fs 1.42.9 (28-Dec-2013)
mke2fs: 8192-byte blocks too big for system (max 4096)
Proceed anyway? (y,n) y
Warning: 8192-byte blocks too big for system (max 4096), forced to continue
Filesystem label=
OS type: Linux
Block size=8192 (log=3)
Fragment size=8192 (log=3)
Stride=0 blocks, Stripe width=0 blocks
64000 inodes, 128000 blocks
6400 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=134201344
2 block groups
65528 blocks per group, 65528 fragments per group
32000 inodes per group
Superblock backups stored on blocks: 
	65528

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done
# mkfs.xfs -b size=8192 /dev/sdb6
```	//重新格式化会发现提示格式化过了
```bash
mkfs.xfs: /dev/sdb6 appears to contain an existing filesystem (xfs).
mkfs.xfs: Use the -f option to force overwrite.
# mkfs.xfs -f -b  size=8192 /dev/sdb6	//加-f选项就可以了
meta-data=/dev/sdb6              isize=256    agcount=4, agsize=32000 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0        finobt=0
data     =                       bsize=8192   blocks=128000, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=8192   ascii-ci=0 ftype=0
log      =internal log           bsize=8192   blocks=558, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=8192   blocks=0, rtextents=0

如果指定块大小为8192B,会提示块值设置得太大了,我们可以输入y强制格式化。
给分区指定标签:

# mke2fs -L TEST -t ext4 /dev/sdb5
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=TEST
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
64000 inodes, 256000 blocks
12800 blocks (5.00%) reserved for the super user
First data block=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: done                            
Writing inode tables: done                            
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done
●命令e2label
用于查看或修改分区的标签,它只支持ext格式的文件系统,而不支持XFS文件系统。
[root@localhost ~]# e2label /dev/sdb5
TEST
[root@localhost ~]# e2label /dev/sdb5 TEST123
[root@localhost ~]# e2label /dev/sdb5
TEST123

挂载/卸载磁盘
●挂载点,以目录的形式出现的。一旦把某个分区挂载到这个目录下,要再往这个目录写数据时,就会写到该分区中。所以在挂载此分区前,挂载点(目录)下必须为一个空目录。一旦挂载,此目录下之前的东西就看不到了(并没有删除),把分区卸载了就可以看到了
●命令mount

# mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime,seclabel)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
devtmpfs on /dev type devtmpfs (rw,nosuid,seclabel,size=924724k,nr_inodes=231181,mode=755)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,seclabel)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,seclabel,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,seclabel,mode=755)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,seclabel,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd)
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
。。。。。。。。。。

直接使用mount可以看到当前系统已经挂载的声音分区。分区文件系统类型、挂载点以及一些选项等信息。未挂载的分区使用blkid命令查看。
●建一个空目录,在目录中建一个新文档

[root@localhost ~]# mkdir /newdir
[root@localhost ~]# touch /newdir/newfile.txt
[root@localhost ~]# ls /newdir/
newfile.txt
[root@localhost ~]# mount /dev/sdb5 /newdir/	//挂载
[root@localhost ~]# ls /newdir/		//挂载的目录中原文件没有了
lost+found
[root@localhost ~]# df -h |grep -v tmpfs		//查看挂载信息
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        17G  4.7G   12G  30% /
/dev/sda1       197M  103M   94M  53% /boot
/dev/sdb5       969M  2.5M  900M   1% /newdir

●用LABEL方式挂载分区

# umount /newdir	//解挂
# df -h | grep tmpfs
# ls /newdir/
newfile.txt
# df -h |grep -v tmpfs
# mount LABEL=TEST123 /newdir
# df -h |grep -v tmpfs
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        17G  4.7G   12G  30% /
/dev/sda1       197M  103M   94M  53% /boot
/dev/sdb5       969M  2.5M  900M   1% /newdir

/etc/fstab配置文件
●查看/etc/fstab文件

# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Thu Jun 25 13:39:11 2020
#
# 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=0fc14d20-6b0c-4d00-b856-977efffe102a /                       xfs     defaults        0 0
UUID=ab4167cf-29ab-473f-b972-18c382014faf /boot                   xfs     defaults        0 0
UUID=1af41d6b-61e7-40f7-a173-d3a4d69153fe swap                    swap    defaults        0 0

此文件中显示了系统启动时需要挂载的各个分区。
第一列分区的表示,可以写当前的LABEL、分区的UUID,也可以写分区名(/dev/sda1)
第二列是挂载点
第三列是分区的格式
第四列是mount的一些挂载参数。一般情况下,直接写defaults即可。
第五列的数字表示是否被dump备份。1表示备份,0表示不备份
第六列的数字表示开机时是否自检磁盘。1和2都表示检查,0表示不检查。自建时,1比2优先级高,使用先检测1再检测2.俄国多个分区需要开机检查,就都设置成2,1检测完后会同时检测2.再centos7系统中,所有分区中该列值都为0.
●修该文件,添加上:
LABEL=TEST123 /newdir ext4 defaults 0 0
解挂sdb5

# umount /dev/sdb5
]# df -h |grep -v tmpfs			//检查sdb5已经解挂
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        17G  4.7G   12G  30% /
/dev/sda1       197M  103M   94M  53% /boot
# mount -a		//执行完此条就挂载上sdb5了
# df -h |grep -v tmpfs
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        17G  4.7G   12G  30% /
/dev/sda1       197M  103M   94M  53% /boot
/dev/sdb5       969M  2.5M  900M   1% /newdir

●-a 把/ect/fstab中的所有磁盘分区挂载上
●-t:用来指定挂载的分区类型,默认不指定,会自动识别
●-o:用来指定挂载的分区有哪些特性。

# mkdir /newdir/dir1
# mount -o remount,ro,sync /dev/sdb5 /newdir
# mkdir /newdir/dir2		//无法创建,-o选项指定了ro参数,所有该放弃只读。
mkdir: cannot create directory ‘/newdir/dir2’: Read-only file system
[root@localhost ~]# mount |grep sdb5	//可以看到sdb5也有ro参数
/dev/sdb5 on /newdir type ext4 (ro,relatime,sync,seclabel,data=ordered)
[root@localhost ~]# mount -o remount /newdir/		//重新挂载,让它恢复读写
[root@localhost ~]# mkdir /newdir/dir2
[root@localhost ~]# ls /newdir/
dir1  dir2  lost+found

●命令blkid
目的:避免出现系统重启后挂载错分区
方法:通过blkid命令获取各分区的UUID

# blkid
/dev/sdb5: LABEL="TEST123" UUID="7d2f28a9-82a3-4cf9-bbb3-fa42031b9776" TYPE="ext4" 
/dev/sdb6: UUID="7cc79123-892d-4d73-a8d6-0f0ec4e5890c" TYPE="xfs" 
/dev/sda1: UUID="ab4167cf-29ab-473f-b972-18c382014faf" TYPE="xfs" 
/dev/sda2: UUID="1af41d6b-61e7-40f7-a173-d3a4d69153fe" TYPE="swap" 
/dev/sda3: UUID="0fc14d20-6b0c-4d00-b856-977efffe102a" TYPE="xfs" 
/dev/sr0: UUID="2015-12-09-23-14-10-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos"

这样获得全部磁盘分区的UUID。如果格式化时指定了LABEL,则该命令也会显示LABEL值,文件系统的类型也会显示。
指定分区:

# blkid /dev/sdb5
/dev/sdb5: LABEL="TEST123" UUID="7d2f28a9-82a3-4cf9-bbb3-fa42031b9776" TYPE="ext4"

获取UUID之后,使用:

# umount /newdir 
# mount UUID="7d2f28a9-82a3-4cf9-bbb3-fa42031b9776" /newdir

UUID支持写入/etc/fstab中:

●设置开机自动挂载
一、在/etc/fstab中添加一行,如上列那行。
二、把挂载命令写到/etc/rc.d/rc.local文件中去。

# cat /etc/rc.d/rc.local 
#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.

touch /var/lock/subsys/local
[root@localhost ~]# cat /etc/rc.d/rc.local 
#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.

touch /var/lock/subsys/local
注意:写入该文件的命令要使用绝对路径
更改完文件需要执行

# chmod a+x /etc/rc.d/rc.local

注意:挂载磁盘分区时,尽量使用 UUID或者LABEL两种方法
●命令umount(后面可以跟挂载点,也可以跟分区名,如:/dev/sdb1,但是不可以跟LABEL和UUID)

[root@localhost ~]# umount /dev/sdb5
[root@localhost ~]# blkid /dev/sdb5
/dev/sdb5: LABEL="TEST123" UUID="7d2f28a9-82a3-4cf9-bbb3-fa42031b9776" TYPE="ext4" 
[root@localhost ~]# mount  UUID="7d2f28a9-82a3-4cf9-bbb3-fa42031b9776" /newdir
[root@localhost ~]# umount /newdir
[root@localhost ~]# mount  UUID="7d2f28a9-82a3-4cf9-bbb3-fa42031b9776" /newdir

●umount -l 遇到不能卸载的情况时非常有用


建立一个swap文件增加虚拟内存
增加虚拟磁盘的基本思路:建立swapfile——>格式化为swap格式——>启用该虚拟磁盘

# dd if=/dev/zero of=/tmp/newdisk bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 6.81039 s, 158 MB/s

dd命令
用if指定源(一般写/dev/zero,它是UNIX系统特有的一个文件,它可以源源不断地提供“0”),of指定目标文件,bs定义块的大小,count定义块的数量。bs和count这两个参数绝定了目标文件的大小,即目标文件大小=bs*count。
上面建立了一个大小为1.1GB的文件,下面将它格式化为swap格式。

# mkswap -f /tmp/newdisk 

Setting up swapspace version 1, size = 1048572 KiB
no label, UUID=5919ee04-5d18-43ab-91e2-1a08c27b2fdb
文件格式化后,就可以挂载使用了

# free -m
              total        used        free      shared  buff/cache   available
Mem:           1824         558          70           8        1195        1087
Swap:          3813           0        3813命令free

查看内存的使用情况,-m选项表示以MB为单位显示

# swapon /tmp/newdisk
swapon: /tmp/newdisk: insecure permissions 0644, 0600 suggested  	//虽然提示不安全,但是已经挂载上了
# free -m
              total        used        free      shared  buff/cache   available
Mem:           1824         559          69           8        1196        1086
Swap:          4837           0        4837

前后对比一下swap分区,发现多了1024MB空间

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值