兄弟连Linux教程(李明,沈超) 第9章 文件系统管理


兄弟连Linux教程(李明,沈超) 第9章 文件系统管理


正文

9.1 回顾分区和文件系统

1、分区类型

主分区:总共最多只能分四个

扩展分区:只能有一个,也算作主分区的一种,也就是说主分区加扩展分区最多有四个。但是扩展分区不能存储数据和格式化,必须再划分成逻辑分区才能使用。

逻辑分区:逻辑分区是在扩展分区中划分的,如果是IDE硬盘,Linux最多支持59个逻辑分区,如果是SCSI硬盘Linux最多支持11个逻辑分区

2、分区表示方法

3、文件系统

ext2:是ext文件系统的升级版本,Red Hat Linux7.2版本以前的系统默认都是ext2文件系统。 1993年发布,最大支持16TB的分区和最大2TB的文件(1TB=1024GB=1024*1024M)

ext3: ext3文件系统是ext2文件系统的升级版本,最大的区别就是带日志功能,以在系统突然停止时提高文件系统的可靠性。 支持最大16TB的分区和最大2TB的文件

ext4:它是ext3文件系统的升级版。ext4 在性能、伸缩性和可靠性方面进行了大量改进。EXT4的变化可以说是翻天覆地的, 比如向下兼容EXT3、最大1EB文件系统和16TB文件、无限数量子目录、Extents连续数据块概念、多块分配、延迟分配、持久预分配、快速FSCK、日志校验、 无日志模式、在线碎片整理、inode增强、默认启用barrier等。 是CentOS 6.3的默认文件系统 (1EB=1024PB=1024*1024TB)

9.2 文件系统常用命令

9.2.1 df命令、du命令、fsck命令和dumpe2fs命令

1、文件系统查看命令df

[root@localhost ~]# df  [选项] [挂载点]
选项:
    -a    显示所有的文件系统信息,包括特殊文件系统,如 /proc、/sysfs
    -h    使用习惯单位显示容量,如KB,MB或GB等
    -T    显示文件系统类型
    -m    以MB为单位显示容量
    -k    以KB为单位显示容量。默认就是以KB为单位
root@baiyang-PC:/# df -h
文件系统        容量  已用  可用 已用% 挂载点
udev            3.9G     0  3.9G    0% /dev
tmpfs           787M  1.8M  785M    1% /run
/dev/sda3        42G  9.8G   30G   25% /
tmpfs           3.9G  239M  3.7G    7% /dev/shm
tmpfs           5.0M  4.0K  5.0M    1% /run/lock
tmpfs           3.9G     0  3.9G    0% /sys/fs/cgroup
/dev/sda1       300M  6.6M  293M    3% /boot/efi
/dev/sda4        84G   19G   61G   24% /home
tmpfs           787M   36K  787M    1% /run/user/1000
/dev/sda5        84G   57M   79G    1% /media/baiyang/_dde_data
[root@localhost ~]# df -ahT
文件系统       类型             容量  已用  可用 已用% 挂载点
sysfs          sysfs               0     0     0     - /sys
proc           proc                0     0     0     - /proc
udev           devtmpfs         3.9G     0  3.9G    0% /dev
devpts         devpts              0     0     0     - /dev/pts
tmpfs          tmpfs            787M  1.8M  785M    1% /run
/dev/sda3      ext4              42G  9.8G   30G   25% /
securityfs     securityfs          0     0     0     - /sys/kernel/security
tmpfs          tmpfs            3.9G  228M  3.7G    6% /dev/shm
tmpfs          tmpfs            5.0M  4.0K  5.0M    1% /run/lock
tmpfs          tmpfs            3.9G     0  3.9G    0% /sys/fs/cgroup
cgroup         cgroup              0     0     0     - /sys/fs/cgroup/systemd
pstore         pstore              0     0     0     - /sys/fs/pstore
efivarfs       efivarfs            0     0     0     - /sys/firmware/efi/efivars
cgroup         cgroup              0     0     0     - /sys/fs/cgroup/freezer
cgroup         cgroup              0     0     0     - /sys/fs/cgroup/cpuset
cgroup         cgroup              0     0     0     - /sys/fs/cgroup/net_cls,net_prio
cgroup         cgroup              0     0     0     - /sys/fs/cgroup/cpu,cpuacct
cgroup         cgroup              0     0     0     - /sys/fs/cgroup/rdma
cgroup         cgroup              0     0     0     - /sys/fs/cgroup/perf_event
cgroup         cgroup              0     0     0     - /sys/fs/cgroup/hugetlb
cgroup         cgroup              0     0     0     - /sys/fs/cgroup/memory
cgroup         cgroup              0     0     0     - /sys/fs/cgroup/devices
cgroup         cgroup              0     0     0     - /sys/fs/cgroup/pids
cgroup         cgroup              0     0     0     - /sys/fs/cgroup/blkio
systemd-1      -                   -     -     -     - /proc/sys/fs/binfmt_misc
debugfs        debugfs             0     0     0     - /sys/kernel/debug
hugetlbfs      hugetlbfs           0     0     0     - /dev/hugepages
mqueue         mqueue              0     0     0     - /dev/mqueue
binfmt_misc    binfmt_misc         0     0     0     - /proc/sys/fs/binfmt_misc
configfs       configfs            0     0     0     - /sys/kernel/config
fusectl        fusectl             0     0     0     - /sys/fs/fuse/connections
/dev/sda1      vfat             300M  6.6M  293M    3% /boot/efi
/dev/sda4      ext4              84G   19G   61G   24% /home
tmpfs          tmpfs            787M   36K  787M    1% /run/user/1000
gvfsd-fuse     fuse.gvfsd-fuse     0     0     0     - /run/user/1000/gvfs
/dev/sda5      ext4              84G   57M   79G    1% /media/baiyang/_dde_data

2、统计目录或文件大小

[root@localhost ~]# du [选项] [目录或文件名]
选项:
    -a    显示每个子文件的磁盘占用量。默认只统计子目录的磁盘占用量
    -h    使用习惯单位显示磁盘占用量,如KB,MB或GB等
    -s    统计总占用量,而不列出子目录和子文件的占用量

du命令和df命令的区别

df命令是从文件系统考虑的,不光要考虑文件占用的空间,还要统计被命令或程序占用的空间(最常见的就是文件已经删除,但是程序并没有释放空间)

du命令是面向文件的,只会计算文件或目录占用的空间

3、文件系统修复命令fsck

[root@localhost ~]# fsck [选项] 分区设备文件名
选项:
    -a:    不用显示用户提示,自动修复文件系统
    -y:    自动修复。和-a作用一致,不过有些文件系统只支持-y

4、显示磁盘状态命令dumpe2fs

[root@localhost ~]# dumpe2fs 分区设备文件名

9.2.2 挂载命令

挂载命令

命令名称:mount

命令位置:/bin/mount

执行权限:所有用户

命令语法:mount [-t 文件系统] 设备文件名 挂载点

范例:

mkdir /mnt/cdrom

mount -t iso9660 /dev/sr0 /mnt/cdrom/

cd /mnt/cdrom/

cd

umount /dev/sr0

1、查询与自动挂载

[root@localhost ~]# mount [-l]
#查询系统中已经挂载的设备,-l会显示卷标名称

[root@localhost ~]# mount –a
#依据配置文件/etc/fstab的内容,自动挂载
root@baiyang-PC:/# mount -l
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
udev on /dev type devtmpfs (rw,nosuid,relatime,size=3997496k,nr_inodes=999374,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=805192k,mode=755)
/dev/sda3 on / type ext4 (rw,relatime,data=ordered) [Root]
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/lib/systemd/systemd-cgroups-agent,name=systemd)
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)
efivarfs on /sys/firmware/efi/efivars type efivarfs (rw,nosuid,nodev,noexec,relatime)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)
cgroup on /sys/fs/cgroup/rdma type cgroup (rw,nosuid,nodev,noexec,relatime,rdma)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=33,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=1582)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,pagesize=2M)
mqueue on /dev/mqueue type mqueue (rw,relatime)
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,relatime)
configfs on /sys/kernel/config type configfs (rw,relatime)
fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime)
/dev/sda1 on /boot/efi type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro) [EFI]
/dev/sda4 on /home type ext4 (rw,relatime,data=ordered) [Home]
tmpfs on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,size=805188k,mode=700,uid=1000,gid=1000)
gvfsd-fuse on /run/user/1000/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,relatime,user_id=1000,group_id=1000)
/dev/sda5 on /media/baiyang/_dde_data type ext4 (rw,nosuid,nodev,relatime,data=ordered,uhelper=udisks2) [_dde_data]
tracefs on /sys/kernel/debug/tracing type tracefs (rw,relatime)

2、挂载命令格式

[root@localhost ~]# mount [-t 文件系统] [-L 卷标名]  \
                          [-o 特殊选项]   设备文件名 挂载点
选项:
    -t 文件系统:加入文件系统类型来指定挂载的类型,可以ext3、ext4、iso9660等文件系统
    -L 卷标名:挂载指定卷标的分区,而不是安装设备文件名挂载
    -o 特殊选项:可以指定挂载的额外选项
参数 说明
atime/noatime 更新访问时间/不更新访问时间。访问分区文件时,是否更新文件的访问时间,默认为更新
async/sync 异步/同步,默认为异步
auto/noauto 自动/手动,mount –a命令执行时,是否会自动安装/etc/fstab文件内容挂载,默认为自动
defaults 定义默认值,相当于rw,suid,dev,exec,auto,nouser,async这七个选项
exec/noexec 执行/不执行,设定是否允许在文件系统中执行可执行文件,默认是exec允许
remount 重新挂载已经挂载的文件系统,一般用于指定修改特殊权限
rw/ro 读写/只读,文件系统挂载时,是否具有读写权限,默认是rw
suid/nosuid 具有/不具有SUID权限,设定文件系统是否具有SUID和SGID的权限,默认是具有
user/nouser 允许/不允许普通用户挂载,设定文件系统是否允许普通用户挂载,默认是不允许,只有root可以挂载分区
usrquota 写入代表文件系统支持用户磁盘配额,默认不支持
grpquota 写入代表文件系统支持组磁盘配额,默认不支持
[root@localhost ~]# mount -o remount,noexec /home
#重新挂载/boot分区,并使用noexec权限
[root@localhost sh]# cd /home
[root@localhost boot]# vi hello.sh
[root@localhost boot]# chmod 755 hello.sh 
[root@localhost boot]# ./hello.sh
[root@localhost boot]# mount -o remount,exec /home
#记得改回来啊,要不会影响系统启动的

9.2.3 挂载光盘与U盘

1、挂载光盘

[root@localhost ~]# mkdir /mnt/cdrom/
#建立挂载点

[root@localhost ~]# mount -t iso9660 /dev/cdrom /mnt/cdrom/
#挂载光盘

[root@localhost ~]# mount /dev/sr0 /mnt/cdrom/

2、卸载命令

[root@localhost ~]# umount 设备文件名或挂载点

[root@localhost ~]# umount /mnt/cdrom

3、挂载U盘

[root@localhost ~]# fdisk –l
#查看U盘设备文件名
[root@localhost ~]# mount -t vfat /dev/sdb1 /mnt/usb/
root@baiyang-PC:/# fdisk –l
Disk /dev/sda: 223.6 GiB, 240057409536 bytes, 468862128 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 6A4822F4-8A6F-4A4F-86E7-FC1F0E8FEFC2

Device         Start       End   Sectors  Size Type
/dev/sda1       2048    616447    614400  300M EFI System
/dev/sda2     616448  23685119  23068672   11G Linux swap
/dev/sda3   23685120 112719871  89034752 42.5G Linux filesystem
/dev/sda4  112719872 290789375 178069504 84.9G Linux filesystem
/dev/sda5  290789376 468858879 178069504 84.9G Linux filesystem

注意:Linux默认是不支持NTFS文件系统的

9.2.4 支持NTFS文件系统

1、下载NTFS-3G插件

http://www.tuxera.com/community/ntfs-3g-download/

2、安装NTFS-3G

[root@localhost ~]# tar -zxvf ntfs-3g_ntfsprogs-2013.1.13.tgz
#解压
[root@localhost ~]# cd ntfs-3g_ntfsprogs-2013.1.13
#进入解压目录
[root@localhost ntfs-3g_ntfsprogs-2013.1.13]# ./configure
#编译器准备。没有指定安装目录,安装到默认位置中
[root@localhost ntfs-3g_ntfsprogs-2013.1.13]# make
#编译
[root@localhost ntfs-3g_ntfsprogs-2013.1.13]# make install
#编译安装

3、使用

[root@localhost ~]# mount -t ntfs-3g 分区设备文件名  挂载点

9.3 fdisk分区

9.3.1 fdisk命令分区过程

1、添加新硬盘

2、查看新硬盘

[root@localhost ~]# fdisk -l

3、使用fdisk命令分区

[root@localhost ~]# fdisk /dev/sdb

fdisk交互指令说明

命令 说明
a 设置可引导标记
b 编辑bsd磁盘标签
c 设置DOS操作系统兼容标记
d 删除一个分区
l 显示已知的文件系统类型。82为Linux swap分区,83为Linux分区
m 显示帮助菜单
n 新建分区
o 建立空白DOS分区表
p 显示分区列表
q 不保存退出
s 新建空白SUN磁盘标签
t 改变一个分区的系统ID
u 改变显示记录单位
v 验证分区表
w 保存退出
x 附加功能(仅专家)

4、重新读取分区表信息

[root@localhost ~]# partprobe

5、格式化分区

[root@localhost ~]# mkfs -t ext4 /dev/sdb1

6、建立挂载点并挂载

[root@localhost ~]# mkdir /disk1
[root@localhost ~]# mount /dev/sdb1 /disk1/

9.3.2 分区自动挂载与fstab文件修复

1、/etc/fstab文件

第一字段:分区设备文件名或UUID(硬盘通用唯一识别码)

第二字段:挂载点

第三字段:文件系统名称

第四字段:挂载参数

第五字段:指定分区是否被dump备份,0代表不备份,1代表每天备份,2代表不定期备份

第六字段:指定分区是否被fsck检测,0代表不检测,其他数字代表检测的优先级,那么当然1的优先级比2高

# /dev/sda3 LABEL=primary
UUID=15e568b2-224a-4ad2-808d-a84f5d8e3a48    /             ext4          rw,relatime,data=ordered    0 1

# /dev/sda4 LABEL=primary
UUID=368a4f01-ff31-4e30-b075-1ce1198023ac    /home         ext4          rw,relatime,data=ordered    0 2

# /dev/sda1 LABEL=primary
UUID=6D07-283F          /boot/efi     vfat          rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro    0 2

# /dev/sda2 LABEL=primary
UUID=f72a06ea-7356-470f-b0b2-9b79512c654c    none          swap          defaults,pri=-2    0 0

2、分区自动挂载

[root@localhost ~]# vi /etc/fstab
…省略部分输出…
/dev/sdb5               /disk5                  ext4    defaults        1 2

3、/etc/fstab文件修复

[root@localhost ~]# mount -o remount,rw /

9.4 分配swap分区

1、free命令

查看内存与swap分区使用状况

cached(缓存):是指把读取出来的数据保存在内存当中,当再次读取时,不用读取硬盘而直接从内存当中读取,加速了数据的读取过程

buffer(缓冲):是指在写入数据时,先把分散的写入操作保存到内存当中,当达到一定程度再集中写入硬盘,减少了磁盘碎片和硬盘的反复寻道,加速了数据的写入过程

[root@localhost ~]# free 
              total        used        free      shared  buff/cache   available
Mem:        8051912     5260836     1320412      308884     1470664     2181404
Swap:      11534332     3906212     7628120

2、新建swap分区

[root@localhost ~]# fdisk /dev/sdb

别忘记把分区ID改为82

3、格式化

[root@localhost ~]# mkswap /dev/sdb6

4、加入swap分区

[root@localhost ~]# swapon /dev/sdb6
#加入swap分区

[root@localhost ~]# swapoff /dev/sdb6
#取消swap分区

5、swap分区开机自动挂载

[root@localhost ~]# vi /etc/fstab
/dev/sdb6              swap                    swap    defaults        0 0






参考资料


返回