磁盘和文件系统管理

          硬盘管理

硬盘分区由主分区、扩展分区和逻辑分区组成

在一块硬盘上,如果是MBR分区方式,那么它的主分区最多只能有4个,或者3个主分区和1个扩展分区;在扩展分区上我们可以创建多个逻辑分区

分区编号:主分区1-4 ,逻辑分区5+

LINUX规定:逻辑分区必须建立在扩展分区之上,而不是建立在主分区上

分区作用:

主分区:主要是用来启动操作系统的,它主要放的是操作系统的启动或引导程序,/boot分区最好放在主分区上
扩展分区不能使用的,它只是做为逻辑分区的容器存在的;我们真正存放数据的是主分区和逻辑分区,大量数据都放在逻辑分区中
如果你用的是GPT的分区方式,那么它没有限制主分区个数
注意:从MBR转到GPT分区或者说从GPT转到MBR会导致数据全部丢失

FDISK 命令

  ~]# fdisk /dev/sdb

常用命令
      n :创建分区
      d :删除分区
      t :修改分区类型
      l :查看所有分区id种类
      w :保存退出
      q :不保存退出
      p :查看分区信息

      创建一个主分区

      欢迎使用 fdisk (util-linux 2.23.2)。

      更改将停留在内存中,直到您决定将更改写入磁盘。
      使用写入命令前请三思。


      命令(输入 m 获取帮助):


      命令(输入 m 获取帮助):n 输入n创建新分区
      Partition type:
      p primary (0 primary, 0 extended, 4 free) 创建主分区
      e extended 创建扩展分区
      Select (default p): p
      分区号 (1-4,默认 1):1 选择分区号 主,扩展 1-4 逻辑5+
      起始 扇区 (2048-41943039,默认为 2048):
      将使用默认值 2048
      Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+10G 使用+*G的方法划定分区大小
      分区 1 已设置为 Linux 类型,大小设为 10 GiB


      再创建一个扩展分区


      命令(输入 m 获取帮助):n
      Partition type:
      p primary (1 primary, 0 extended, 3 free)
      e extended
      Select (default p): e
      分区号 (2-4,默认 2):
      起始 扇区 (20973568-41943039,默认为 20973568):
      将使用默认值 20973568
      Last 扇区, +扇区 or +size{K,M,G} (20973568-41943039,默认为 41943039):
      将使用默认值 41943039
      分区 2 已设置为 Extended 类型,大小设为 10 GiB

      创建逻辑分区

      命令(输入 m 获取帮助):n
      Partition type:
      p primary (1 primary, 1 extended, 2 free)
      l logical (numbered from 5)
      Select (default p): l
      添加逻辑分区 5
      起始 扇区 (20975616-41943039,默认为 20975616):
      将使用默认值 20975616
      Last 扇区, +扇区 or +size{K,M,G} (20975616-41943039,默认为 41943039):+2G
      分区 5 已设置为 Linux 类型,大小设为 2 GiB

      命令(输入 m 获取帮助):N
      Partition type:
      p primary (1 primary, 1 extended, 2 free)
      l logical (numbered from 5)
      Select (default p): L
      添加逻辑分区 6
      起始 扇区 (25171968-41943039,默认为 25171968):
      将使用默认值 25171968
      Last 扇区, +扇区 or +size{K,M,G} (25171968-41943039,默认为 41943039):+3G
      分区 6 已设置为 Linux 类型,大小设为 3 GiB

   最后查看分区情况


      命令(输入 m 获取帮助):P

      磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
      Units = 扇区 of 1 * 512 = 512 bytes
      扇区大小(逻辑/物理):512 字节 / 512 字节
      I/O 大小(最小/最佳):512 字节 / 512 字节
      磁盘标签类型:dos
      磁盘标识符:0xaeb746d7

      设备 Boot Start End Blocks Id System
      /dev/sdb1 2048 20973567 10485760 83 Linux
      /dev/sdb2 20973568 41943039 10484736 5 Extended
      /dev/sdb5 20975616 25169919 2097152 83 Linux
      /dev/sdb6 25171968 31463423 3145728 83 Linux

   最后保持退出

      命令(输入 m 获取帮助):w
      The partition table has been altered!

      Calling ioctl() to re-read partition table.
      正在同步磁盘。

注意:在已经挂载的某个磁盘上创建新分区,内核在创建完成后无法正常读取

需要重读分区表 partx 磁盘

    [root@localhost ~]# partx /dev/sdb
    NR START END SECTORS SIZE NAME UUID
    1 2048 20973567 20971520 10G
    2 20973568 41943039 20969472 10G
    5 20975616 25169919 4194304 2G
    6 25171968 31463423 6291456 3G

    [root@localhost /]# cat /proc/partitions 此文件是内核识别的分区信息
    major minor #blocks name

    8 0 20971520 sda
    8 1 1048576 sda1
    8 2 19921920 sda2
    8 16 20971520 sdb
    8 17 10485760 sdb1
    8 18 1 sdb2
    8 21 2097152 sdb5
    8 22 3145728 sdb6
    11 0 4415488 sr0
    253 0 17821696 dm-0
    253 1 2097152 dm-1

    ~]# mkfs.xfs /dev/sdb1
    ~]# mount /dev/sdb1 /tmp/1
    逻辑分区5和6同理,查看挂载信息
    ~]# mount
    ...
    /dev/sdb1 on /tmp/1 type xfs (rw,relatime,attr2,inode64,noquota)
    /dev/sdb5 on /tmp/5 type xfs (rw,relatime,attr2,inode64,noquota)
    /dev/sdb6 on /tmp/6 type xfs (rw,relatime,attr2,inode64,noquota)

    硬盘挂载后再创建一个分区


    命令(输入 m 获取帮助):n
    Partition type:
    p primary (1 primary, 1 extended, 2 free)
    l logical (numbered from 5)
    Select (default p): l
    添加逻辑分区 7
    起始 扇区 (31465472-41943039,默认为 31465472):
    将使用默认值 31465472
    Last 扇区, +扇区 or +size{K,M,G} (31465472-41943039,默认为 41943039):
    将使用默认值 41943039
    分区 7 已设置为 Linux 类型,大小设为 5 GiB

    命令(输入 m 获取帮助):
    命令(输入 m 获取帮助):
    命令(输入 m 获取帮助):
    命令(输入 m 获取帮助):p

磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xaeb746d7

设备 Boot Start End Blocks Id System
/dev/sdb1 2048 20973567 10485760 83 Linux
/dev/sdb2 20973568 41943039 10484736 5 Extended
/dev/sdb5 20975616 25169919 2097152 83 Linux
/dev/sdb6 25171968 31463423 3145728 83 Linux
/dev/sdb7 31465472 41943039 5238784 83 Linux

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.

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)
正在同步磁盘。


因为磁盘已经挂载出于安全所以内核不去同步

~]# cat /proc/partitions
major minor #blocks name

8 0 20971520 sda
8 1 1048576 sda1
8 2 19921920 sda2
8 16 20971520 sdb
8 17 10485760 sdb1
8 18 0 sdb2
8 21 2097152 sdb5
8 22 3145728 sdb6
11 0 4415488 sr0
253 0 17821696 dm-0
253 1 2097152 dm-1

 

 使用命令重读

~]# partx -a /dev/sdb
NR START END SECTORS SIZE NAME UUID
1 2048 20973567 20971520 10G
2 20973568 41943039 20969472 10G
5 20975616 25169919 4194304 2G
6 25171968 31463423 6291456 3G
7 31465472 41943039 10477568 5G


~]# partx -a /dev/sdb
partx: /dev/sdb: error adding partitions 1-2
partx: /dev/sdb: error adding partitions 5-6

~]# partx -a /dev/sdb
partx: /dev/sdb: error adding partitions 1-2
partx: /dev/sdb: error adding partitions 5-7

~]# cat /proc/partitions
major minor #blocks name

8 0 20971520 sda
8 1 1048576 sda1
8 2 19921920 sda2
8 16 20971520 sdb
8 17 10485760 sdb1
8 18 0 sdb2
8 21 2097152 sdb5
8 22 3145728 sdb6
8 23 5238784 sdb7
11 0 4415488 sr0
253 0 17821696 dm-0
253 1 2097152 dm-1

重读成功


文件系统管理

格式化
  低级格式化(分区之前进行,划分磁道)
  高级格式化(分区之后对分区进行,创建文件系统)

元数据 inode
  大小 权限 属主属组 时间戳 指向数据块

  链接文件 设备文件 不占用block只占用i节点
数据区 block
  存放数据

创建文件系统的工具 mkfs命令

~]# mkfs 有很多一样的命令后面的.xxx就是格式化后创建的文件系统
mkfs mkfs.btrfs mkfs.cramfs mkfs.ext2 mkfs.ext3 mkfs.ext4 mkfs.minix mkfs.xfs

~]# mkfs.ext4 /dev/sdb5
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签= (文件系统卷标)
OS type: Linux (操作系统类型)
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
131072 inodes, 524288 blocks (此分区一共多少inode和blocks)
26214 blocks (5.00%) reserved for the super user (预留给管理员的空间)
第一个数据块=0 (第一个数据块的编号)
Maximum filesystem blocks=536870912 (最大文件系统块编号)
16 block groups (一共多少块组)
32768 blocks per group, 32768 fragments per group (每个组有多少blocks)
8192 inodes per group (每个block有多少inode)
Superblock backups stored on blocks: (超级快的编号)
32768, 98304, 163840, 229376, 294912

Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (16384 blocks): 完成
Writing superblocks and filesystem accounting information: 完成

常用选项

-f 强制格式化 (如果磁盘是extx 无法直接格式化 需要强制格式化创建)

 

~]# mkfs.xfs /dev/sdb5
mkfs.xfs: /dev/sdb5 appears to contain an existing filesystem (ext4).
mkfs.xfs: Use the -f option to force overwrite.

~]# mkfs.xfs -f /dev/sdb5
meta-data=/dev/sdb5 isize=512 agcount=4, agsize=131072 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=524288, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# blkid /dev/sdb5
/dev/sdb5: UUID="52a76dc7-8fd9-410b-818a-ac2ca03dbfec" TYPE="xfs"


查看对应的文件系统属性 blkid 分区

~]# blkid /dev/sdb5

常用选项
-L 指明卷标 查找此卷标的文件系统
-U 根据UUID 定位文件系统

/dev/sdb5: UUID="e7416257-5c2c-4405-95d2-909a7feac074" TYPE="ext4"
分区名 - UUID - 文件系统类型


ext系列卷标的查看与设置
    查看 e2label 分区
    设定 e2label 分区 卷标

~]# e2label /dev/sdb5

~]# e2label /dev/sdb5 yang
~]# e2label /dev/sdb5
yang


fsck 用于检测文件系统
当磁盘意外中止或崩溃 可能造成文件损坏,此时应该修复文件系统 建议离线进行(umount)


常用选项
-a 无需交互自动修复所有错误
-f 交互式修复

swap文件系统
linux上交换分区必须要使用独立的文件系统
且文件系统的system id 必须为 82

mkswap [选项] 磁盘
-L 指明卷标
-f 强制

挂载 mount

挂载点用作与作为另一个文件系统的访问入口
1.事先存在的目录
2.应该使用未被使用或不会被其他进程使用的目录
3.挂载点下的原文件会被隐藏


mount [-nrw] [-t vfstype] [-o options] device dir

[-nrw]

-r : 只读挂载
-w : 读写挂载
-n : 默认情况下挂载或卸载会同步跟新到/etc/mtab/下 -n禁止

[-t vfstype]

-t :指明要挂载设备上的文件系统(多数可省略)
-U : 指明磁盘的UUID挂载

[-o options]

sync / async 同步 / 异步
atime / noatime 文件或目录在访问是是否跟新访问时间戳
diratime / nodiratime 目录在访问是是否跟新访问时间戳
remount 重新挂载

查看挂载信息
~]# mount
~]# cat /etc/mtab
~]# cat /proc/mounts

~]# mount 他会输出以下信息
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
devtmpfs on /dev type devtmpfs (rw,nosuid,size=486032k,nr_inodes=121508,mode=755)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
文件系统 on 挂载点 type 类型 权限

权限的种类

ro 只读
rw 读写
dev / nodev 此设备上是否允许创建设备文件
exec / noexec 是否允许运行此设备上的程序文件
auto / noauto 是否决定自动挂载
user / nouser 是否允许普通用户挂载此文件系统
suid / nosuid 是否使suid生效

defaults Use default options: rw, suid, dev, exec, auto, nouser, and async.


一个使用技巧:


可以将一个目录绑定至另一个目录,作为其临时访问入口  mount --bind
~]# ls /mnt/
hgfs

~]# mount --bind /etc/ /mnt/

~]# ls /mnt/fstab
/mnt/fstab

~]# umount /mnt/
~]# ls /mnt/
hgfs


挂载光盘:
mount -r cdrom dir

光盘设备文件: 有时候是/dev/cdrom或者/dev/dvd 其实他们都是链接文件都指向sr0
sr0 是一个sata接口的光驱设备,真正的设备其实是这个


umount 磁盘 | 目录


注意:正在被访问和进程使用的挂载点无法被卸载;

 

可以使用命令确定是谁在使用挂载点
  lsof 挂载点

  fuser -v 挂载点

当你有权限时你可以使用
  fuser -km 挂载点 (把在使用的用户踢出去。。。)

注意踢出去后那个用户的远程终端也会挂掉(一般别使用)

挂载本地的回环设备
  mount -o loop 回环设备文件 挂载点


    交换分区的启用和禁用
    swapon swap分区 开启swap
    -a 启用所有在/etc/fstab文件中swap设备

    swapoff swap分区 禁用swap

    记得用free -m 查看一下


    除了/文件系统外 其他文件系统能够开机自动挂载必须在/etc/fstab/中指明


    ~]# cat /etc/fstab

    /dev/mapper/centos-root / xfs defaults 0 0

    这个文件下每行定义一个要挂载的文件系统及属性

6个字段
1. 要挂载的设备
设备文件名
LABEL
UUID
伪文件系统

2,挂载点
swap的挂载点为swap

    3,文件系统类型

    4,挂载选项
    defaults 默认使用的挂载选项
    如果使用多个挂载选项用,分开

    5,转储频率

    0 从不备份
    1 每天备份1次
    2 每隔一天备份

    6,自检次序
    0 不自检
    1 首先自检,通常是能是跟文件系统可用1
    2 次级
    ....

两个命令

df 查看挂载后各磁盘分区的使用状态

   常用选项
    -l 只显示本地文件系统
    -h 人性化显示
    -i 显示inode


du 查看目录或文件的大小

    常用选项
      -s 显示目录下所有文件大小之和
      -h 人性化显示

lvm命令

首先磁盘的分区需要时linux lvm 符号为8e 才可以创建为 pv
创建PV的命令时

[root@xuexi ~]# pvcreate /dev/sdb{1,2,3,4}
WARNING: xfs signature detected on /dev/sdb1 at offset 0. Wipe it? [y/n]: y
Wiping xfs signature on /dev/sdb1.
Physical volume "/dev/sdb1" successfully created.
Physical volume "/dev/sdb2" successfully created.
Physical volume "/dev/sdb3" successfully created.
Physical volume "/dev/sdb4" successfully created.


pv查看物理卷信息

[root@xuexi ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb1 lvm2 --- 2.00g 2.00g
/dev/sdb2 lvm2 --- 2.00g 2.00g
/dev/sdb3 lvm2 --- 2.00g 2.00g
/dev/sdb4 lvm2 --- 2.00g 2.00g


pv详细信息
[root@xuexi ~]# pvdisplay /dev/sdb1
"/dev/sdb1" is a new physical volume of "2.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb1
VG Name
PV Size 2.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0  //PE使用情况
PV UUID BKr1CG-91rH-0Dsq-vGol-UTO6-xP83-hV7FTZ


创建vg卷组
[root@xuexi ~]# vgcreate vg1 /dev/sdb1
Volume group "vg1" successfully created
[root@xuexi ~]# vgcreate -s 16M vg2 /dev/sdb2
Volume group "vg2" successfully created


查看vg卷组
[root@xuexi ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg1 1 0 0 wz--n- <2.00g <2.00g
vg2 1 0 0 wz--n- 1.98g 1.98g

vg详细信息
[root@xuexi ~]# vgdisplay vg1
--- Volume group ---
VG Name vg1
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size <2.00 GiB
PE Size 4.00 MiB  //可以看到vg1的PE大小为4M
Total PE 511
Alloc PE / Size 0 / 0
Free PE / Size 511 / <2.00 GiB
VG UUID N0HBAX-50lM-3tJ3-xIho-pLrx-7hAh-1T1T0g

lv创建

[root@xuexi ~]# lvcreate -n lv1 -L 64M vg1
Logical volume "lv1" created.
[root@xuexi ~]# lvcreate -n lv2 -l 16 vg1
Logical volume "lv2" created.


查看lv信息

[root@xuexi ~]# lvs  //因为vg1的PE大小是4M所以lv1与lv2的大小相等
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv1 vg1 -wi-a----- 64.00m
lv2 vg1 -wi-a----- 64.00m


vg动态扩容

[root@xuexi ~]# vgextend vg1 /dev/sdb3
Volume group "vg1" successfully extended


lv动态扩容
[root@xuexi ~]# lvextend -L +100M /dev/vg1/lv1  // +100M是增加100M
Size of logical volume vg1/lv1 changed from 64.00 MiB (16 extents) to 164.00 MiB (41 extents).
Logical volume vg1/lv1 successfully resized.
[root@xuexi ~]# lvextend -L 100M /dev/vg1/lv2  //直接使用100M是增加到100M
Size of logical volume vg1/lv2 changed from 64.00 MiB (16 extents) to 100.00 MiB (25 extents).
Logical volume vg1/lv2 successfully resized.
[root@xuexi ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv1 vg1 -wi-ao---- 164.00m
lv2 vg1 -wi-a----- 100.00m

文件系统也需要扩容。

ext4文件系统扩容使用 "resize2fs [逻辑卷名称]"

xfs文件系统扩容使用 "xfs_growfs [逻辑卷名称]"

原文地址:https://www.cnblogs.com/linuxys/p/13089073.html