Linux系统管理12:配置与磁盘管理

一、常见的硬盘管理命令

1.df命令:统计分区大小,占用率

df命令的英文全称即“Disk Free”,顾名思义功能就是用于显示系统上可使用的磁盘空间。默认显示单位为KB。建议使用df -h

df [选项]

选项

  • -a:显示所有文件系统的磁盘使用情况,包括0块(block)的文件系统,如/proc文件系统。
  • -h:单位不再是kb,而是以容易阅读的方式显示
  • -T:显示文件系统类型
  • -t:显示各指定类型的文件系统的磁盘使用情况。

2.du命令:统计文件大小,占用率

du命令查看磁盘或某个目录占用的磁盘空间,常见的应用场景如硬盘满时需要找到占用空间最多的目录或文件。

du [选项] [目录或文件夹]

选项

  • -a:显示全部目录和其子目录下的每个文件所占的磁盘空间
  • -h:使用习惯单位显示磁盘占用量,如KB,MB或GB等
  • -s:只显示各文件大小的综合

相似命令:ll或ls -l有什么区别呢?

ll统计的文件大小是一个不准确的值(准确说ll统计的是子文件名所占的空间),一般都是4KB或他的倍数。因为ll查看文件只会查看当前文件夹下的文件名占用的空间,而不是整个文件的大小。

du与df的区别:du是用于统计文件大小的,统计的文件大小是准确的;df是用于统计空间大小的,统计的剩余空空间是准确的。

lsof | grep deleted查看被删除的文件,然后一个进程一个进程的手工kill也可以

3.fask命令文件系统修复命令

开机自动修复

fask -y /dev/sdb1

4.dumpe2fs显示磁盘状态

>>>dumpe2fs /dev/sda1
dumpe2fs 1.41.12 (17-May-2010)
Filesystem volume name:   <none>
Last mounted on:          /boot
Filesystem UUID:          7aad70e9-de62-4e4d-84f9-b3e3fd7240e1
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super huge_file uninit_bg dir_nlink extra_isize
Filesystem flags:         signed_directory_hash 
Default mount options:    user_xattr acl
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              51200
Block count:              204800
Reserved block count:     10240
Free blocks:              165730
Free inodes:              51161
First block:              1
Block size:               1024
Fragment size:            1024
Reserved GDT blocks:      256
Blocks per group:         8192
Fragments per group:      8192
Inodes per group:         2048
Inode blocks per group:   256
Flex block group size:    16
Filesystem created:       Sat Mar  7 03:47:29 2020
Last mount time:          Sun Apr 26 21:30:21 2020
Last write time:          Sun Apr 26 21:30:21 2020
Mount count:              20
Maximum mount count:      -1
Last checked:             Sat Mar  7 03:47:29 2020
Check interval:           0 (<none>)
Lifetime writes:          72 MB
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:	          128
Journal inode:            8
Default directory hash:   half_md4
Directory Hash Seed:      de030a43-785d-418c-bafe-9f4ab92a3f0f
Journal backup:           inode blocks
Journal features:         (none)
日志大小:             4096k
Journal length:           4096
Journal sequence:         0x0000006e
Journal start:            0
....省略大部分文件.....

如果觉得文件太多,只想看超级快文件可以加个-h
>>>dempe2fs -h /dev/sda1
...省略...

5.stat显示文件的详细时间

命令:stat 文件名

>>>stat summer
  File: "summer"
  Size: 4096      	Blocks: 8          IO Block: 4096   目录
Device: 803h/2051d	Inode: 661836      Links: 2
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2020-04-26 21:35:22.838999871 +0800
Modify: 2020-04-26 21:35:22.838999871 +0800
Change: 2020-04-26 21:35:22.838999871 +0800

6.判断文件类型

file 文件名 判断文件类型

type 命令名 判断命令类型

二、fdisk命令手工分区

1.查看所有硬盘及分区

命令:fdisk -l

2.进行磁盘分区

注:要进行磁盘分区首先得添加一个新的硬盘,不然无法创建

命令:fdisk /dev/sdb

进入后按m会出现下列东西:

a:设置活动分区(启动过分区)
b:编辑一个分区为bsd分区
c:设置为DOS兼容过分区
d:删除一个硬盘分区
l:列出linux支持的分区类型
m:显示所有命令列表(即帮助信息)
n:增加一个新的分区
o:创建一个空的DOS分区
p:显示硬盘分区情况
q:退出程序,且不保存分区的修改
s:创建一个空的sun分区
t:修改分区的类型代码
u:改变分区大小的显示方式
v:检验磁盘分区表
w:退出程序,且保存分区的修改
x:进入专家模式

常见的为p n w d l t

2.1创建主分区:

1).输入n来增加一个新的分区
2).显示提示:创建一个扩展分区还是主分区,先创建主分区,输入p
3).输入分区编号,创建第1个主分区,输入1
4).提示输入新建分区的起始柱面,默认值为1,直接按enter
5).提示新建分区的结束柱面,默认值为最大柱面,即将整个硬盘划分为一个分区。此处输入+2000M,表示新建分区大小2000MB.

2.2创建扩展分区:

1).输入命令进入分区操作 #fdisk /dev/sdb
2).增加分区命令输入n
3).提示创建分区类型,输入字符e,创建一个扩展分区
4).输入分区号2(实验1中已有一个主分区)
5).分区的起始柱面,按enter键默认
6).输入结束柱面处按enter键默认。扩展分区使用了硬盘未分区的所有空间。

2.3创建逻辑分区:

1).输入命令进入分区操作 #fdisk /dev/sdb
2).输入增加分区的命令字符n
3).程序提示创建分区类型,显示一个字符l,表示创建逻辑分区,输入l
4).输入分区起始柱面,按enter键默认
5).结束柱面处输入逻辑分区大小+1000M。
6).用类似方法创建其余2个逻辑分区,最后输入p查看分区情况

简述

n–p主–1分区号–1起始柱面–分区大小+100M—w

n–e扩展–2分区号–124起始柱面–1024柱面(所有剩余空间都分配给扩展分区)—w

n–l逻辑–不用指定分区号–124起始柱面—+100M(指定大小)—w

有时候因为系统的分区表示正忙,则需要重启之后系统才能使新的分区表生效

2.4修改分区类型

新创建的分区默认类型是linux,如果有其他需要,用fdisk命令的t选项修改分区类型
1).输入命令进入分区操作 #fdisk /dev/sdb
2).输入字符p查看分区情况,发现所有类型都为linux类型
3).输入修分区类型的命令字符t
4).输入需要修改的分区序号,例如输入7
5).输入分区类型的代码。用大写L查看不同分区类型对应的编码
6).下方输入代码82,代表linux swap分区类型的编码
7).输入p查看分区情况
8).输入w保存退出

3.mkfs格式化分区

命令mkfs [选项] [-f <文件系统类型>] [设备名称] [区快数]

mkfs -t ext4 /dev/sdb1

选项

  • fs:指定建立文件系统时的参数
  • -t<文件系统类型>:指定要建立何种文件系统,默认为ext2
  • -c:在创建文件系统前检查设备坏块
  • -l:将有坏轨的block资料加到bad_blocks_file里面
  • -v:显示版本信息与详细的使用方法
  • -V:显示简要的的使用方法

提示mkfs本身并不执行建立文件系统的工作,而是去调用相关的程序来执行。

4.建立挂载点与挂载

​ 将磁盘分区的文件系统创建好之后,还需要将其挂载到系统中才能使用。Linux的文件系统只有一个根目录,其他文件系统都挂载在根目录下的某一个子目录中。
​ 通常情况下,可将硬盘分区、光盘或U盘挂接到Linux文件系统中。例如,通常将光盘挂载在/mnt/cdrom/目录中。

​ mount命令可将设备中指定的文件系统加载到linux目录下(也就是装载点)。

命令mount [选项][-L<标签>][-o<选项>][-t< 文件系统类型>][设备名][加载点]

# 建立挂载点
mkdir /disk1----------/dev/sdb1
mkdir /disk5----------/dev/sdb5
# 挂载
mount /dev/sdb1 /disk1
mount /dev/sdb5 /disk5

提示:使用mount指令挂载文件系统时,挂载点必须为目录。设备挂载后,就可以进行访问了。

:要将硬盘分区挂载到文件系统中,首先应该在文件系统中创建一个空的目录作为挂载点。若挂载点目录内有文件,将分区挂载到该目录后,目录中原有的文件将不能使用。

5.查看

mount 查看所有一级挂载的分区和光盘

fdisk -l 查看系统分区

df 查看分区占用百分比

三、自动挂载

​ 对于硬盘分区之类的设备,有是一直安装在计算机中的,并且硬盘分区中的文件需要经常访问,若每次都手工输入命令进行挂载,系统的使用将很繁琐。因此设置自动挂载文件系统将方便系统的使用。
​ 所谓自动挂载文件系统,即表示系统启动后自动将硬盘各分区挂载到文件系统中,用户可以使用这些分区中的内容。
​ Linux中的/etc/fstab文件保存了自动挂载文件系统的参数,通过该文件中的设置的参数,可使系统在每次启动时候自动挂载指定的文件系统。

3.1 修改自动挂载文件

>>>vim /etc/fstab
proc           /proc             proc    defaults        0 0
  • 第1个字段:设备名,也可以使用标签名。对磁盘分区进行格式化时,
    可设置其标签。
  • 第2个字段:设置挂载点
  • 第3个字段:设置文件系统的类型
  • 第4个字段:设置挂载选项。使用default表示rw、suid、dev、exec、
    auto、nouser和async选项的组合。
  • 第5个字段:设置是否需要备份。0表示不备份,1表示备份,一般
    根分区需要备份
  • 第6个字段:设置自检顺序。该字段被fsck命令用来决定在启动时
    需要被扫描的文件的顺序,根文件系统“/”对应该字段的值为1,
    其他文件系统应该为2.若无需启动时扫描,设置该字段为0.

四、/etc/fstab文件修复

文件能修复的前提是拿到服务器的本机。

需要给root一个读写的命令:mount -o remount,rw /再修改即可

五、挂载命令

1.mount命令基本格式

Linux所有存储设备都必须挂在使用,包括硬盘。

命令名称:mount

命令所在路径:/bin/mount

执行权限:所有用户

命令具体格式如下:

>>>mount [-l]
# 查询系统中已经挂在的设备,-l会显示卷标名称
>>>mount -a
依据配置文件/etc/fstab内容,自动挂载
>>>mount [-t 文件系统] [-L 卷标名] [-o 特殊选项]  \
设备文件名 挂载点
#\代表这一行没有写完,换行
选项:
-t 文件系统:加入文件系统类型来指定挂载的类型,可以ext3、ext4、iso9660等文件系统。具体可以参考表9-1      -L 卷标名:挂载指定卷标的分区,而不是安装设备文件名挂载    -o 特殊选项:可以指定挂载的额外选项,比如读写权限、同步异步等,如果不指定则默认值生效。

特殊选项表(简版):PDF-37

参数 说明
atime/noatime 更新访问时间/不更新访问时间。访问分区文件时,是否更新文件的访问时间,默认为更新
async/sync 异步/同步,默认异步
auto/noauto 自动/手动,mount -a命令执行时,是否会自动安装/etc/fstab文件内容挂在,默认为自动

举例

例1:
[root@localhost ~]# mount 
#查看系统中已经挂载的文件系统,注意有虚拟文件系统
/dev/sda3 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
#命令结果是代表:/dev/sda3分区挂载到/目录,文件系统是ext4,权限是读写

例2:修改特殊权限
[root@localhost ~]# mount 
#我们查看到/boot分区已经被挂载,而且采用的defaults选项,那么我们重新挂载分区,并采用noexec
#权限禁止执行文件执行,看看会出现什么情况(注意不要用/分区做试验,
#不然系统命令也不能执行了)。
...省略部分输出... 
/dev/sda1 on /boot type ext4 (rw)
...省略部分输出... 
[root@localhost ~]# mount -o remount,noexec /boot
#重新挂载/boot分区,并使用noexec权限
[root@localhost sh]# cd /boot/
[root@localhost boot]# vi hello.sh
#写个shell吧#
!/bin/bash
echo "hello!!"
[root@localhost boot]# chmod 755 hello.sh  
[root@localhost boot]# ./hello.sh
-bash: ./hello.sh: 权限不够
#虽然赋予了hello.sh执行权限,但是任然无法执行
[root@localhost boot]# mount -o remount,exec /boot
#记得改回来啊,要不会影响系统启动

如果我们做试验修改了特殊选项,一定要记得住,而且确定需要修改,否则非常容易出现系统问题,而且还找不到哪里出现了问题。

例3:挂载分区
[root@localhost ~]# mkdir /mnt/disk1
#建立挂载点目录
[root@localhost ~]# mount /dev/sdb1 /mnt/disk1
#挂载分区

2.光盘挂载

光盘挂载的前提依然是指定光盘的设备文件名,不同版本的Linux,设备文件名并不相同:

  • CentOS 5.x 以前的系统,光盘设备文件名是/dev/hdc
  • CentOS 6.x 以后的系统,光盘设备文件名是/dev/sr0

不论哪个系统都有软连接/dev/cdrom,与可以作为光盘的设备文件名

>>>mount -t iso9660 /dev/cdrom /mnt/cdrom/
#挂载光盘

用完之后切记卸载:

umount /dev/sr0
umount /mnt/cdrom
#因为设备文件名和挂载点已经连接到一起,卸载哪一个都

注意:卸载的时候需要退出光盘目录,才能正常卸载

3.挂载u盘

U盘会和硬盘共用设备文件名,所以U盘的设备文件名不是固定的,需要手工查询,查询命令:fdisk -l

然后就是挂载命令如下:

mount -t vfat /dev/sdb1 /mnt/usb/

如果U盘中有中文,会发现中文是乱码。Linux要想正常显示中文,需要两个条件:

  • 安装了中文编码和中文字体
  • 操作终端需要支持中文显示(纯字符终端,是不支持中文编码的)

而我们当前系统是安装了中文编码和字体,而xshell远程终端是Windows下的程序,当然是支持中文显示的。那之所以挂载U盘还出现乱码,是需要在挂载的时候,手工指定中文编码,例如:

mount -t vfat -o iocharset=utf8 /dev/sdb1 /mnt/usb/

挂载u盘,指定中文编码格式为UTF-8

如果卸载则是以下命令:

umount /mnt/usb/

猜你喜欢

转载自blog.csdn.net/jiangSummer/article/details/105792509