0%

在Linux下磁盘分区、创建文件系统、挂载

简介

学习Linux的时候,避不开的就是需要学习Linux中的分区。学习Linux的分区,有很多概念性的东西需要学习,比如分区类型啊,文件系统类型啊…等等,对于我来说,并不是很喜欢这种概念性的东西,上来一大段文字对于我一点都不友好。所以整理了一篇笔记,记录怎么对Linux中的磁盘进行分区、创建文件系统以及挂载。首先能实操使用,接着再慢慢理解其中的内容。

环境介绍

操作系统:CentOS6.6

命令介绍

分区命令

fdisk 分区

fdisk可用于查看硬盘分区情况,也可以使用fdisk进行分区。
选项:

1
2
3
4
5
-b SECTOR_SIZE:指定每个分区大小
-l:列出指定硬盘的分区情况
-s PARTITION:输出指定分区的大小,单位为块
-u:在列出硬盘分区情况的时候,使用块为单位列出分区大小而不是以柱面为单位
-v:显示版本信息

子选项:

1
2
3
4
5
6
7
8
p:print,显示已有分区
n:new,创建
d:delete,删除
w:write,写入磁盘并退出
q:quit,放弃更新并退出
m:获取帮助
l:列表所分区id
t:调整分区id

partx 识别分区

**选项:

1
2
3
4
5
-a:通知内核重新读取硬盘分区表
-d:删除分区硬盘分区表信息
-l:列出分区
--type YTPE:指定分区类型
--nr M-N:指定分区范围

创建文件系统命令

mkfs 创建文件系统

选项:

1
2
3
-t TYPE:指定穿件的文件系统类型
-v:显示版本信息
-c:创建文件系统之前,先检查分区是否存在坏块

mkswap 创建交换分区

选项:

1
2
-c:创建交换分区之前,先检查分区是否存在坏块
-f:强制执行

挂载命令

mount 挂载分区

mount [-fnrsvw] [-t vfstype] [-o options] device dir
选项:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
-t vsftype:指定要挂载的设备上的文件系统类型
-r :readonly,只读挂载
-w:read and write,读写挂载
-n:不更新/etc/fstab
-a:自动挂载所有支持自动挂载的设备(定义在了/etc/fstab文件中,且挂载选项中有“自动挂载”功能)
-L 'LABEL':以卷标指定挂载设备
-U 'UUID':以UUID指定要挂载的设备
-B,--bind:绑定目录到另一个目录上


-o options:挂载文件系统的选项
async:异步模式
sync:同步模式
atime/noatime:包含目录和文件
diratime/nodiratime:目录的访问时间戳
auto/noauto:是否支持自动挂载
exec/noexec:是否支持将文件系统上的应用程序运行为进程
dev/nodev:是否支持在此文件系统上使用设备
suid/nosuid;
remount:重新挂载
ro:只读挂载
rw:读写挂载
user/nouser:是否允许普通用户挂载此设备
acl:启用此文件系统上acl功能
defaults:rw,suid,dev,exec,auto,nouser,and async

umount 卸载分区

umount [-dflnrv] {dir|device}…
选项:

1
2
3
4
5
6
7
-a:卸除/etc/mtab中记录的所有文件系统;
-h:显示帮助;
-n:卸除时不要将信息存入/etc/mtab文件中;
-r:若无法成功卸除,则尝试以只读的方式重新挂入文件系统;
-t<文件系统类型>:仅卸除选项中所指定的文件系统;
-v:执行时显示详细的信息;
-V:显示版本信息。

swapon 启用交换分区

swapon [-f] [-p priority] [-v] specialfile…
选项:

1
2
-a :激活所有的交换分区
-p PRIORITY:指定优先级

swapoff 禁用交换分区

swapoff [-v] specialfile…
选项:

1
-a:禁用所有的交换分区

步骤介绍

普通分区从创建以及挂载

  • 查看硬盘以及分区情况

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    [root@sg-pc /]# lsblk
    NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
    sr0 11:0 1 4.3G 0 rom
    sda 8:0 0 20G 0 disk
    ├─sda1 8:1 0 500M 0 part /boot
    └─sda2 8:2 0 19.5G 0 part
    ├─vg_sgpc-lv_root (dm-0) 253:0 0 17.6G 0 lvm /
    └─vg_sgpc-lv_swap (dm-1) 253:1 0 2G 0 lvm [SWAP]
    sdb 8:16 0 20G 0 disk
    [root@sg-pc /]# fdisk /dev/sdb

    WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
    switch off the mode (command 'c') and change display units to
    sectors (command 'u').

    Command (m for help): p

    Disk /dev/sdb: 21.5 GB, 21474836480 bytes
    255 heads, 63 sectors/track, 2610 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0x179a39d6

    Device Boot Start End Blocks Id System

    Command (m for help):
  • 使用fdisk对/dev/sdb硬盘划分分区,划分3个主分区,每个主分区5G大小,并且划分一个扩展分区,4G大小。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    [root@sg-pc /]# fdisk /dev/sdb

    WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
    switch off the mode (command 'c') and change display units to
    sectors (command 'u').

    Command (m for help): n
    Command action
    e extended
    p primary partition (1-4)
    p
    Partition number (1-4): 1
    First cylinder (1-2610, default 1):
    Using default value 1
    Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): +5G

    Command (m for help): n
    Command action
    e extended
    p primary partition (1-4)
    p
    Partition number (1-4): 2
    First cylinder (655-2610, default 655):
    Using default value 655
    Last cylinder, +cylinders or +size{K,M,G} (655-2610, default 2610): +5G

    Command (m for help): n
    Command action
    e extended
    p primary partition (1-4)
    p
    Partition number (1-4): 3
    First cylinder (1309-2610, default 1309):
    Using default value 1309
    Last cylinder, +cylinders or +size{K,M,G} (1309-2610, default 2610): +5G

    Command (m for help): n
    Command action
    e extended
    p primary partition (1-4)
    e
    Selected partition 4
    First cylinder (1963-2610, default 1963):
    Using default value 1963
    Last cylinder, +cylinders or +size{K,M,G} (1963-2610, default 2610): +2610
    Value out of range.
    Last cylinder, +cylinders or +size{K,M,G} (1963-2610, default 2610):
    Using default value 2610

    Command (m for help): p

    Disk /dev/sdb: 21.5 GB, 21474836480 bytes
    255 heads, 63 sectors/track, 2610 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0x179a39d6

    Device Boot Start End Blocks Id System
    /dev/sdb1 1 654 5253223+ 83 Linux
    /dev/sdb2 655 1308 5253255 83 Linux
    /dev/sdb3 1309 1962 5253255 83 Linux
    /dev/sdb4 1963 2610 5205060 5 Extended

    Command (m for help): n
    First cylinder (1963-2610, default 1963):
    Using default value 1963
    Last cylinder, +cylinders or +size{K,M,G} (1963-2610, default 2610): +2G

    Command (m for help): p

    Disk /dev/sdb: 21.5 GB, 21474836480 bytes
    255 heads, 63 sectors/track, 2610 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0x179a39d6

    Device Boot Start End Blocks Id System
    /dev/sdb1 1 654 5253223+ 83 Linux
    /dev/sdb2 655 1308 5253255 83 Linux
    /dev/sdb3 1309 1962 5253255 83 Linux
    /dev/sdb4 1963 2610 5205060 5 Extended
    /dev/sdb5 1963 2224 2104483+ 83 Linux

    Command (m for help): w
    The partition table has been altered!

    Calling ioctl() to re-read partition table.
    Syncing disks.
  • 将新划分的分区加载到硬盘分区表中,并查看分区状态

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    [root@sg-pc /]# partx -a /dev/sdb
    BLKPG: Device or resource busy
    error adding partition 1
    BLKPG: Device or resource busy
    error adding partition 2
    BLKPG: Device or resource busy
    error adding partition 3
    BLKPG: Device or resource busy
    error adding partition 4
    BLKPG: Device or resource busy
    error adding partition 5
    [root@sg-pc /]# cat /proc/partitions
    major minor #blocks name

    8 0 20971520 sda
    8 1 512000 sda1
    8 2 20458496 sda2
    8 16 20971520 sdb
    8 17 5253223 sdb1
    8 18 5253255 sdb2
    8 19 5253255 sdb3
    8 20 1 sdb4
    8 21 2104483 sdb5
    253 0 18391040 dm-0
    253 1 2064384 dm-1
  • 为分区创建文件系统,这边就选择/dev/sdb1分区作为示例

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    [root@sg-pc /]# mkfs -t ext4 -L 'backup' /dev/sdb1
    mke2fs 1.41.12 (17-May-2010)
    Filesystem label=backup
    OS type: Linux
    Block size=4096 (log=2)
    Fragment size=4096 (log=2)
    Stride=0 blocks, Stripe width=0 blocks
    328656 inodes, 1313305 blocks
    65665 blocks (5.00%) reserved for the super user
    First data block=0
    Maximum filesystem blocks=1346371584
    41 block groups
    32768 blocks per group, 32768 fragments per group
    8016 inodes per group
    Superblock backups stored on blocks:
    32768, 98304, 163840, 229376, 294912, 819200, 884736

    Writing inode tables: done
    Creating journal (32768 blocks): done
    Writing superblocks and filesystem accounting information: done

    This filesystem will be automatically checked every 25 mounts or
    180 days, whichever comes first. Use tune2fs -c or -i to override.
  • 通过blkid命令,可以查看硬盘设备的信息

    1
    2
    3
    4
    5
    6
    7
    [root@sg-pc /]# blkid
    /dev/sda1: UUID="5e605252-9e26-4ca0-b353-e3e6028bc6ca" TYPE="ext4"
    /dev/sda2: UUID="drR3Sx-Ht8g-nGFi-2vR3-CD3z-qSjY-PUXiye" TYPE="LVM2_member"
    /dev/mapper/vg_sgpc-lv_root: UUID="9ccc9289-ada6-48b8-82f1-42d2f7edba06" TYPE="ext4"
    /dev/mapper/vg_sgpc-lv_swap: UUID="9c4c6c97-b20d-4548-a249-8d98f6b400f1" TYPE="swap"
    /dev/sdb1: LABEL="backup" UUID="4a7b5acb-fc24-446d-b9e0-a14afbe171d9" TYPE="ext4"
    /dev/sdb2: LABEL="myswap" UUID="79f07b7d-c504-43c2-9e0f-87bee77d59b9" TYPE="swap"
  • 将创建完文件系统的分区挂载指定目录下

    1
    2
    [root@sg-pc /]# mkdir /backup
    [root@sg-pc /]# mount /dev/sdb1 /backup/
  • 检查分区挂载情况

    可以看到/dev/sdb1已经被挂载到/backup目录下了。

交换分区的创建与挂载

交换分区的创建与挂载步骤与普通分区一致,也是先划分分区,然后在分区上创建文件系统,接着是激活交换分区。因为交换分区与普通分区有一点不同,需要先调整分区的分区ID。

  • 将/dev/sdb2分区作为交换分区,首先需要修改/dev/sdb2分区的分区ID

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    [root@sg-pc /]# fdisk /dev/sdb

    WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
    switch off the mode (command 'c') and change display units to
    sectors (command 'u').

    Command (m for help): p

    Disk /dev/sdb: 21.5 GB, 21474836480 bytes
    255 heads, 63 sectors/track, 2610 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0x179a39d6

    Device Boot Start End Blocks Id System
    /dev/sdb1 1 654 5253223+ 83 Linux
    /dev/sdb2 655 1308 5253255 83 Linux
    /dev/sdb3 1309 1962 5253255 83 Linux
    /dev/sdb4 1963 2610 5205060 5 Extended
    /dev/sdb5 1963 2224 2104483+ 83 Linux

    Command (m for help): l

    0 Empty 24 NEC DOS 81 Minix / old Lin bf Solaris
    1 FAT12 39 Plan 9 82 Linux swap / So c1 DRDOS/sec (FAT-
    2 XENIX root 3c PartitionMagic 83 Linux c4 DRDOS/sec (FAT-
    3 XENIX usr 40 Venix 80286 84 OS/2 hidden C: c6 DRDOS/sec (FAT-
    4 FAT16 <32M 41 PPC PReP Boot 85 Linux extended c7 Syrinx
    5 Extended 42 SFS 86 NTFS volume set da Non-FS data
    6 FAT16 4d QNX4.x 87 NTFS volume set db CP/M / CTOS / .
    7 HPFS/NTFS 4e QNX4.x 2nd part 88 Linux plaintext de Dell Utility
    8 AIX 4f QNX4.x 3rd part 8e Linux LVM df BootIt
    9 AIX bootable 50 OnTrack DM 93 Amoeba e1 DOS access
    a OS/2 Boot Manag 51 OnTrack DM6 Aux 94 Amoeba BBT e3 DOS R/O
    b W95 FAT32 52 CP/M 9f BSD/OS e4 SpeedStor
    c W95 FAT32 (LBA) 53 OnTrack DM6 Aux a0 IBM Thinkpad hi eb BeOS fs
    e W95 FAT16 (LBA) 54 OnTrackDM6 a5 FreeBSD ee GPT
    f W95 Ext'd (LBA) 55 EZ-Drive a6 OpenBSD ef EFI (FAT-12/16/
    10 OPUS 56 Golden Bow a7 NeXTSTEP f0 Linux/PA-RISC b
    11 Hidden FAT12 5c Priam Edisk a8 Darwin UFS f1 SpeedStor
    12 Compaq diagnost 61 SpeedStor a9 NetBSD f4 SpeedStor
    14 Hidden FAT16 <3 63 GNU HURD or Sys ab Darwin boot f2 DOS secondary
    16 Hidden FAT16 64 Novell Netware af HFS / HFS+ fb VMware VMFS
    17 Hidden HPFS/NTF 65 Novell Netware b7 BSDI fs fc VMware VMKCORE
    18 AST SmartSleep 70 DiskSecure Mult b8 BSDI swap fd Linux raid auto
    1b Hidden W95 FAT3 75 PC/IX bb Boot Wizard hid fe LANstep
    1c Hidden W95 FAT3 80 Old Minix be Solaris boot ff BBT
    1e Hidden W95 FAT1

    Command (m for help): t
    Partition number (1-5): 2
    Hex code (type L to list codes): 82
    Changed system type of partition 2 to 82 (Linux swap / Solaris)

    Command (m for help): w
    The partition table has been altered!

    Calling ioctl() to re-read partition table.

    WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
    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)
    Syncing disks.
  • 创建交换分区的文件系统

    1
    2
    3
    [root@sg-pc /]# mkswap -L 'myswap' /dev/sdb2
    Setting up swapspace version 1, size = 5253248 KiB
    LABEL=myswap, UUID=fee42b41-d38f-498e-a27f-70a962734a26
  • 激活交换分区

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    [root@sg-pc /]# free -m
    total used free shared buffers cached
    Mem: 996 642 354 1 112 304
    -/+ buffers/cache: 224 771
    Swap: 2015 0 2015
    [root@sg-pc /]# swapon -a /dev/sdb2
    [root@sg-pc /]# free -m
    total used free shared buffers cached
    Mem: 996 645 350 1 112 304
    -/+ buffers/cache: 228 767
    Swap: 7146 0 7146

分区开机自动挂载

上述的硬盘的分区都是在系统中临时挂载使用的,当系统重启的话,目前我们挂载的分区并不会自动挂载上去,又需要我们执行挂载的步骤,这样很不方便。如果我们需要硬盘分区在系统重启的时候也能自动挂载,我们需要将分区的配置写到/etc/fstab这个文件中。

/etc/fstab文件中每一行代表一个启动的时候需要自动挂载的硬盘分区。
每一行记录友6个字段组成,按照顺序分别为:

  • 要挂载的设备
  • 挂载点
  • 文件系统类型
  • 挂载选项
    一般为defaults
  • 转储频率
    指的是备份频率,0表示不做备份,1表示每天做备份,2表示隔天做备份
  • 自检次序
    0表示不自检
    1表示首先自检,数值越大自检次序越靠后。

示例

我们以上面划分的./dev/sdb1分区为例,将其设置为每次机器重启的时候都会将/dev/sdb1分区挂载到相应的挂载点。

在/etc/fstab文件中添加如图所示的一行,表示每次机器重启的时候,都会将/dev/sdb1分区挂载到/backup挂载点上,并且该分区的文件系统类型为ext4类型,挂载选项是defautls,不备份,不自检。

总结

总的来说,Linux下的硬盘分区以及挂载主要是三个步骤:

  1. 划分分区
  2. 创建文件系统
  3. 挂载分区

    博客地址:https://win-man.github.io/
    公众号:欢迎关注