文件系统 83 linux,Linux文件系统

本文主要介绍分区基本知识, 文件系统常用命令, 如何给一块新硬盘使用fdisk进行分区, 格式化并且自动挂载, 如果将新的分区加入到swap等

一. 分区和文件系统

一块新的硬盘想要使用, 首先要对其进行分区, 然后在对各个分区进行格式化, 格式化也就是写入文件系统

1. 分区类型

一块硬盘可以划分为以下三个分区

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

扩展分区: 只能有一个, 也算作主分区的一种, 也就是说主分区加扩展分区只能有四个, 但是扩展分区划分逻辑分区后才能使用, 不能对扩展分区进行格式化

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

分区设备文件名

分区名

设备文件名

主分区1

/dev/sda1(第一块硬盘的第一个主分区)

主分区2

/dev/sda2(第一块硬盘的第二个主分区)

扩展分区

/dev/sda4(第一块硬盘扩展分区)

逻辑分区1

/dev/sda5(第一块硬盘的第一个逻辑分区, 只能从5开始)

逻辑分区2

/dev/sda6(第一块硬盘的第一个逻辑分区)

2. 文件系统

ext2: ext文件升级版本, 最大支持16TB的分区和2TB的文件

ext3: 支持分区和文件大小不变, 但是最大的区别是带日志功能

ext4: ext3升级版本, ext4在性能, 伸缩性, 和可靠性做了大量改进, 最大支持1EB分区和16TB单个文件, 无限数量子目录, 1EB=1024PB=1024*1024TB

二. 文件系统常用命令

1. df, du, fsck, dump2fs

df [选项] [挂载点]

-a: 显示所有的文件系统信息, 包括特殊文件系统, 如/proc, /sysfs

-h: 易读方式显示

-T: 显示文件系统类型

-m: 以MB显示

-k: 以kB显示(默认)

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

-a: 显示每个子文件的磁盘占用量, 默认只统计子目录的磁盘占用量

-h: 易读方式展示

-s: 统计总占用量, 而不列出子目录和子文件的占用量

[root@localhost /]# du -sh /etc

26M /etc

df和du的区别:

df命令时从文件系统考虑的, 不光要考虑文件占用的空间, 还要统计被命令或程序占用的空间(如文件被删除, 但是没有释放, 需要重启)

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

文件系统修复命令fsck

fsck [选项]分区设备文件名

-a: 不用显示用户提示

-y: 自动修复, 和-a作用一致

显示磁盘状态命令dumpe2fs

dumpe2fs 分区设备文件名

dumpe2fs /dev/sda1

[root@localhost /]# dumpe2fs /dev/sda1 | more

dumpe2fs 1.41.12 (17-May-2010)

Filesystem volume name:

Last mounted on: /boot

Filesystem UUID: 9f22d879-291d-42b6-89ab-2dda6c5a65d2

Default mount options: user_xattr acl

Filesystem state: clean

Errors behavior: Continue

Filesystem OS type: Linux

Inode count: 128016

Block count: 512000

Reserved block count: 25600

Free blocks: 462374

Free inodes: 127978

2. 挂载命令

查询挂载情况 mount [-l]

依据配置文件/etc/fstab的内容, 自动挂载 mount -a

挂载命令mount

mount [-t 文件系统][-L 卷标名][-o 特殊选项]设备文件名 挂载点

-t 文件系统: 加入文件系统类型类指定挂载的类型, 可以以ext3, ext4, iso9660, vfat等文件系统

-L 卷标名: 挂载指定卷标的分区, 而不是安装设备文件名挂载

-o 特殊选项: 可以指定挂载的额外选项 多个逗号分隔, 如: mount -o remount,noexec /home, 重新挂载/home分区, 设置/home分区的文件不可执行

-o 支持的特殊选项很多, 但只是对分区做设置

参数

说明

remount

重新挂载已经挂载的文件系统

exec/noexec

执行/不执行, 设定是否允许在文件系统中执行可执行文件, 默认exec

rw/ro

读写/制度, 挂载时, 是否具有读写权限, 默认rw

3. 挂载光盘和U盘

挂载光盘

# 创建光盘挂载点

[root@localhost /]# mkdir /media/cdrom

# 将光盘挂载在/media/cdrom挂载点, iso9660可以不填

[root@localhost /]# mount -t iso9660 /dev/sr0 /media/cdrom/

mount: block device /dev/sr0 is write-protected, mounting read-only

# 卸载光盘

[root@localhost /]# umount /media/cdrom/

挂载U盘

U盘文件格式需要是fat16或者fat32, linux默认不支持NTFS文件系统

执行fdisk -l查看

Device Boot Start End Blocks Id System

/dev/sda1 * 1 64 512000 83 Linux

Partition 1 does not end on cylinder boundary.

/dev/sda2 64 2611 20458496 8e Linux LVM

如果是虚拟机安装 需要切换到终端, 插入u盘, 虚拟机默认会识别u盘

, 如果不切到终端, 插入u盘, 就是windows系统识别

fdisk -l, 查找分区, 可以看出u盘被识别为/dev/sdb4

Device Boot Start End Blocks Id System

/dev/sdb4 * 1 1883 15120256 c W95 FAT32 (LBA)

挂载u盘

[root@localhost /]# mkdir /media/usb

# 指定挂载文件系统类型

[root@localhost /]# mount -t vfat /dev/sdb4 /media/usb

[root@localhost /]# ls /media/usb

[root@localhost /]# umount /media/usb

4. 支持NTFS文件系统

下载NTFS-3G

./configure && make && meke install

安装以后, 也是进入终端, 插入移动硬盘, 让linux识别硬盘

执行fdisk -l查看分区设备

执行 mount -t ntfs-3g 分区设备文件名 挂载点

mount -t ntfs-3g /dev/sdb1

三. fdisk分区

新插入一块硬盘, 如何给一块新的硬盘分区并且挂载呢?

在虚拟机中增加硬盘, 关机后, 在虚拟机设置中添加一块硬盘

开机后, 查看新增加的硬盘/dev/sdb, fdisk -l

Disk /dev/sdb: 10.7 GB, 10737418240 bytes

255 heads, 63 sectors/track, 1305 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

1. 使用fdisk进行分区

执行fdisk /etc/sdb , 会进入fdisk分区交互界面

Command (m for help):

fdisk交互指令说明如下:

a: 设置可引导标记

b: 编辑bsd磁盘标签

d: 删除一个分区

l: 显示一直文件系统类型, 82为Linux swap分区, 83为Linux分区

m: 显示帮助菜单

n: 新建分区(重要)

p: 显示分区列表

t: 改变一个分区的系统ID

u: 改变显示记录单位

v: 验证分区表

w: 退出保存

q: 退出不保存

新建主分区, 扩展分区, 逻辑分区

Command (m for help): n

Command action

e extended

p primary partition (1-4)

# 新建主分区

p

# 选择分区号

Partition number (1-4): 1

# 选择起始柱面

First cylinder (1-1305, default 1):

Using default value 1

#选择结束柱面

Last cylinder, +cylinders or +size{K,M,G} (1-1305, default 1305): +2G

Command (m for help): p

...

Device Boot Start End Blocks Id System

/dev/sdb1 1 262 2104483+ 83 Linux

## 新建扩展分区

Command (m for help): n

Command action

e extended

p primary partition (1-4)

e

Partition number (1-4): 4

First cylinder (263-1305, default 263):

Using default value 263

Last cylinder, +cylinders or +size{K,M,G} (263-1305, default 1305): +2G

# 可以看到主分区和扩展分区

Command (m for help): p

Device Boot Start End Blocks Id System

/dev/sdb1 1 262 2104483+ 83 Linux

/dev/sdb4 263 524 2104515 5 Extended

## 在扩展分区上新建逻辑分区, 可以看到l logical逻辑分区选项

Command (m for help): n

Command action

l logical (5 or over)

p primary partition (1-4)

l

First cylinder (263-524, default 263):

Using default value 263

Last cylinder, +cylinders or +size{K,M,G} (263-524, default 524): +2G

Command (m for help): p

#可以看到一个主分区, 一个扩展分区和一个逻辑分区

Device Boot Start End Blocks Id System

/dev/sdb1 1 262 2104483+ 83 Linux

/dev/sdb4 263 524 2104515 5 Extended

/dev/sdb5 263 524 2104483+ 83 Linux

# 保存

Command (m for help): w

The partition table has been altered!

Calling ioctl() to re-read partition table.

Syncing disks.

[root@localhost ~]# fdisk -l

Device Boot Start End Blocks Id System

/dev/sdb1 1 262 2104483+ 83 Linux

/dev/sdb4 263 524 2104515 5 Extended

/dev/sdb5 263 524 2104483+ 83 Linux

如果w保存时, 报错, 提示分区表正在使用, 可以执行partprobe重新载入分区表, 无效的话, 就需要重新启动计算机

2. 格式化分区并挂载

分区后, 需要格式化分区, 写入文件系统, 才能使用, 不写入文件系统, 无法使用

mkfs -t ext4 /dev/sdb1

# 没有格式化, 无法使用dumpe2fs查看

[root@localhost ~]# dumpe2fs /dev/sdb1

dumpe2fs 1.41.12 (17-May-2010)

dumpe2fs: Bad magic number in super-block 当尝试打开 /dev/sdb1 时

找不到有效的文件系统超级块.

[root@localhost ~]# mkdir /disk1

# 无法挂载

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

mount: you must specify the filesystem type

格式化/dev/sdb1,

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

mke2fs 1.41.12 (17-May-2010)

文件系统标签=

操作系统:Linux

块大小=4096 (log=2)

分块大小=4096 (log=2)

Stride=0 blocks, Stripe width=0 blocks

131648 inodes, 526120 blocks

26306 blocks (5.00%) reserved for the super user

第一个数据块=0

Maximum filesystem blocks=541065216

17 block groups

32768 blocks per group, 32768 fragments per group

7744 inodes per group

Superblock backups stored on blocks:

32768, 98304, 163840, 229376, 294912

正在写入inode表: 完成

Creating journal (16384 blocks): 完成

Writing superblocks and filesystem accounting information: 完成

This filesystem will be automatically checked every 29 mounts or

180 days, whichever comes first. Use tune2fs -c or -i to override.

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

将设备文件名/dev/sdb1挂载到/disk1下

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

查看设备挂载情况(df -h 或者 mount)

[root@localhost /]# df -h

Filesystem Size Used Avail Use% Mounted on

/dev/mapper/VolGroup-lv_root 18G 9.4G 7.2G 57% /

tmpfs 491M 0 491M 0% /dev/shm

/dev/sda1 485M 33M 427M 8% /boot

/dev/sdb1 2.0G 68M 1.9G 4% /disk1

/dev/sdb5 2.0G 68M 1.9G 4% /disk5

手动挂载每次开机都会丢失, 如何自动挂载呢?

3. 自动挂载

自动挂载依赖于/etc/fstab配置文件, 查看该文件

/dev/mapper/VolGroup-lv_root / ext4 defaults 1 1

UUID=9f22d879-291d-42b6-89ab-2dda6c5a65d2 /boot ext4 defaults 1 2

/dev/mapper/VolGroup-lv_swap swap swap defaults 0 0

tmpfs /dev/shm tmpfs defaults 0 0

devpts /dev/pts devpts gid=5,mode=620 0 0

sysfs /sys sysfs defaults 0 0

proc /proc proc defaults 0 0

各字段含义

第一字段: 分区设备文件名或UUID(硬盘通用唯一识别码, 可以通过dumpe2fs命令查看)

第二字段: 挂载点

第三字段: 文件系统名称

第四字段: 挂载参数

第五字段: 指定分区是否被dump备份, 0: 不备份, 1: 每天 2: 不定期, 备份数据保存目录在各自分区挂载点的 lost+found目录

第六字段: 指定分区是否被fsck检测, 0不检测, 数据越小, 优先级越高, 系统在启动时, 会根据该字段确定扫描优先级, 根分区优先级应该是最高, 先扫描根分区, 再扫描boot分区, 自己加入的分区, 优先级也不应该高于根分区1

想要自动挂载, 需要修改该文件, 加入如下内容, 将sdb1和sdb5自动挂载

/dev/sdb1 /disk1 ext4 defaults 1 2

/dev/sdb5 /disk5 ext4 defaults 1 2

4. 文件修复

修改该文件一定要小心, 如果写错, 系统开机时可能会直接崩溃,

修改完, 应该先执行mount -a, 依据配置文件/etc/fstab的内容, 自动挂载,

可以在不重启的情况下, 检测fstab文件是否正确**

如果系统出错, 没有启动, 输入root用户名, 进入系统后, 需要执行

mount -o remount,rw /重新挂载根分区, 并将分区设置为读写, 就可以修改/etc/fstab

四. 分配swap分区

首先参照分区方法, 将sdb硬盘再增加一个分区,

fdisk /dev/sdb

Device Boot Start End Blocks Id System

/dev/sdb1 1 262 2104483+ 83 Linux

/dev/sdb2 525 656 1060290 83 Linux

/dev/sdb4 263 524 2104515 5 Extended

/dev/sdb5 263 524 2104483+ 83 Linux

进入fdisk交互界面, 更改/dev/sdb2分区的ID号, 改为swap 82

# 更改id

Command (m for help): t

# 更改sdb2, 输入2

Partition number (1-5): 2

# 更改为82

Hex code (type L to list codes): 82

Changed system type of partition 2 to 82 (Linux swap / Solaris)

#查看, 已经设置为Linux swap

Command (m for help): p

Device Boot Start End Blocks Id System

/dev/sdb1 1 262 2104483+ 83 Linux

/dev/sdb2 525 656 1060290 82 Linux swap / Solaris

w保存退出时, 会出现

WARNING: Re-reading the partition table failed with error 16: 设备或资源忙.

The kernel still uses the old table. The new table will be used at

the next reboot or after you run partprobe(8) or kpartx(8)

格式化分区为swap格式

mkswap /dev/sdb2

[root@localhost /]# mkswap /dev/sdb2

/dev/sdb2: 没有那个文件或目录

# 没有生效, 只能重启计算机

# 重启后

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

Setting up swapspace version 1, size = 1060284 KiB

no label, UUID=e8a404e3-3389-471a-95ef-0ee343a2b2cb

加入swap分区 swapon /dev/sdb2

# swap 为2G

[root@localhost ~]# free -m | grep Swap

Swap: 1983 0 1983

# 将/dev/sdb2加入到swap分区

[root@localhost ~]# swapo

swapoff swapon

[root@localhost ~]# swapon /dev/sdb2

# 增加了一个G

[root@localhost ~]# free -m | grep Swap

Swap: 3019 0 3019

从swap中取消 swapoff /dev/sdb2

[root@localhost ~]# swapoff /dev/sdb2

[root@localhost ~]# free -m | grep Swap

Swap: 1983 0 1983

swap分区开机自动挂载

修改`/etc/fstab, 加入如下内容, reboot重启计算机

/dev/sdb2 swap swap defaults 0 0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值