鸟哥的Linux私房菜读书笔记--磁盘的分区、挂载、格式化与检验

1、观察磁盘分区状态

命令 :  $  lsblk     ##列出系统上的所有磁盘列表
lsblk 可以看成『 list block device 』的缩写,就是列出所有储存装置的意思!这个工具软件真的很好
用喔!来瞧一瞧!
命令 :  $   lsblk [-dfimpt] [device]
选项与参数:
      -d :仅列出磁盘本身,并不会列出该磁盘的分区数据
      -f :同时列出该磁盘内的文件系统名称
      -i :使用 ASCII 的线段输出,不要使用复杂的编码 (再某些环境下很有用)
      -m :同时输出该装置在 /dev 底下的权限数据 (rwx 的数据)
      -p :列出该装置的完整文件名!而不是仅列出最后的名字而已。
      -t :列出该磁盘装置的详细数据,包括磁盘队列机制、预读写的数据量大小等

    · NAME:就是装置的文件名啰!会省略 /dev 等前导目录!
    · MAJ:MIN:其实核心认识的装置都是透过这两个代码来熟悉的!分别是主要:次要装置代码!
    · RM:是否为可卸除装置 (removable device),如光盘、USB 磁盘等等
    · SIZE:当然就是容量啰!
    · RO:是否为只读装置的意思
    · TYPE:是磁盘 (disk)、分区槽 (partition) 还是只读存储器 (rom) 等输出
    · MOUTPOINT:就是前一章谈到的挂载点!

命令 : $   blkid                        ##列出装置的 UUID 等参数
虽然 lsblk 已经可以使用 -f 来列出文件系统与装置的 UUID 数据,UUID 是全局单一标识符 (universally unique identifier),Linux 会将系统内所有的装置都给予一个独一无二的标识符, 这个标识符就可以拿来作为挂载或者是使用这个装置/文件系统之用了。
命令 : $  blkid
/dev/vda2: UUID="94ac5f77-cb8a-495e-a65b-2ef7442b837c" TYPE="xfs"
/dev/vda3: UUID="WStYq1-P93d-oShM-JNe3-KeDl-bBf6-RSmfae" TYPE="LVM2_member"

命令:$ parted  磁盘位置  print    ##列出磁盘的分区表类型与分区信息

2、磁盘分区

注意:MBR分区表使用fdisk分区,GPT分区表情使用gdisk分区

命令:$  gdisk 装置名称
范例:由前一小节的 lsblk 输出,我们知道系统有个 /dev/vda,请观察该磁盘的分区与相关数据
命令:$  gdisk /dev/vda <==仔细看,不要加上数字喔!
GPT fdisk (gdisk) version 0.8.6
Partition table scan:
 MBR: protective
 BSD: not present
 APM: not present
 GPT: present
Found valid GPT with protective MBR; using GPT. <==找到了 GPT 的分区表!
Command (? for help): <==这里可以让你输入指令动作,可以按问号 (?) 来查看可用指令
Command (? for help): ?
     
        你应该要透过 lsblk 或 blkid 先找到磁盘,再用 parted /dev/xxx print 来找出内部的分区表类型,之后才用 gdisk 或 fdisk 来操作系统。 上表中可以发现 gdisk 会扫描 MBR 与 GPT 分区表。 不管你进行了什么动作,只要离开 gdisk 时按下『q』,那么所有的动作『都不会生效!』相反的, 按下『w』就是动作生效的意思。所以,你可以随便玩 gdisk ,只要离开时按下的是『q』即可。

** 用 gdisk 新增分区槽
命令 :$  gdisk /dev/vda
Command (? for help): p
Number   Start (sector)   End (sector)   Size             Code     Name
 1                  2048                6143         2.0 MiB        EF02
 2                  6144              2103295    1024.0 MiB    0700
 3                  2103296        65026047   30.0 GiB       8E00
# 找出最后一个 sector 的号码是很重要的!
Command (? for help): ?      # 查一下增加分区的指令为何
Command (? for help): n      # 就是这个!所以开始新增的行为!
Partition number (4-128, default 4): 4      # 预设就是 4 号,所以也能 enter 即可!
First sector (34-83886046, default = 65026048) or {+-}size{KMGTP}: 65026048           # 也能 enter
Last sector (65026048-83886046, default = 83886046) or {+-}size{KMGTP}: +1G        # 决不要 enter,绝对不要使用默认值!                                                                                                                                          因为默认值会将所有的容量用光!因此
                                                                                                                                      它默认选择最大的扇区号码! 因为我们                                                                                                                                       仅要 1GB 而已,所以你得要加上 +1G                                                                                                                                           这样即可!
# 这个地方可有趣了!我们不需要自己去计算扇区号码,透过 +容量 的这个方式,
# 就可以让 gdisk 主动去帮你算出最接近你需要的容量的扇区号码喔!
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300):       # 使用默认值即可~直接 enter 下去!
# 这里在让你选择未来这个分区槽预计使用的文件系统!预设都是 Linux 文件系统的 8300 啰!
命令: $  partprobe -s   ##更新Linux核心的分区表信息

命令:$  gdisk  装置名   ##删除分区槽

3、磁盘格式化

格式化==建置文件系统

XFS文件系统格式化

命令:$  mkfs.xfs [-b bsize] [-d parms] [-i parms] [-l parms] [-L label] [-f] \  [-r parms] 装置名称
选项与参数:
关于单位:底下只要谈到『数值』时,没有加单位则为 bytes 值,可以用 k,m,g,t,p (小写)等来解释比较特殊的是 s 这个单位,它指的是 sector 的『个数』
      -b :后面接的是 block 容量,可由 512 到 64k,不过最大容量限制为 Linux 的 4k 喔!
      -d :后面接的是重要的 data section 的相关参数值,主要的值有:
 agcount=数值 :设定需要几个储存群组的意思(AG),通常与 CPU 有关
 agsize=数值 :每个 AG 设定为多少容量的意思,通常 agcount/agsize 只选一个设定即可
 file :指的是『格式化的装置是个文件而不是个装置』的意思!(例如虚拟磁盘)
 size=数值 :data section 的容量,亦即你可以不将全部的装置容量用完的意思
 su=数值 :当有 RAID 时,那个 stripe 数值的意思,与底下的 sw 搭配使用
 sw=数值 :当有 RAID 时,用于储存数据的磁盘数量(须扣除备份碟与备用碟)
 sunit=数值 :与 su 相当,不过单位使用的是『几个 sector(512bytes 大小)』的意思
 swidth=数值 :就是 su*sw 的数值,但是以『几个 sector(512bytes 大小)』来设定
      -f :如果装置内已经有文件系统,则需要使用这个 -f 来强制格式化才行!
      -i :与 inode 有较相关的设定,主要的设定值有:
 size=数值 :最小是 256bytes 最大是 2k,一般保留 256 就足够使用了!
 internal=[0|1]:log 装置是否为内建?预设为 1 内建,如果要用外部装置,使用底下设定
 logdev=device :log 装置为后面接的那个装置上头的意思,需设定 internal=0 才可!
 size=数值 :指定这块登录区的容量,通常最小得要有 512 个 block,大约 2M 以上才行!
     -L :后面接这个文件系统的标头名称 Label name 的意思!
     -r :指定 realtime section 的相关设定值,常见的有:
 extsize=数值 :就是那个重要的 extent 数值,一般不须设定,但有 RAID 时,
 最好设定与 swidth 的数值相同较佳!最小为 4K 最大为 1G 。

EXT4文件系统格式化

命令:$  mkfs.ext4 [-b size] [-L label] 装置名称
选项与参数:
     -b :设定 block 的大小,有 1K, 2K, 4K 的容量,
     -L :后面接这个装置的标头名称。

其他文件系统格式化

mkfs是个综合指令,当我们使用 mkfs -t xfs 时,它就会跑去找 mkfs.xfs 相关的参数给我们使用! 如果想要知道系统还支持哪种文件系统的格式化功能,直接按 [tabl] 就很清楚了!

4、文件系统检验

xfs_repair 处理 XFS 文件系统
当有 xfs 文件系统错乱才需要使用这个指令!所以,这个指令最好是不要用到啦!但有问题发生时,
这个指令却又很重要...
命令:$  xfs_repair [-fnd] 装置名称
选项与参数:
    -f :后面的装置其实是个文件而不是实体装置
    -n :单纯检查并不修改文件系统的任何数据 (检查而已)
    -d :通常用在单人维护模式底下,针对根目录 (/) 进行检查与修复的动作!很危险!不要随便使用

fsck.ext4 处理 EXT4 文件系统
fsck 是个综合指令,如果是针对 ext4 的话,建议直接使用 fsck.ext4 来检测比较妥当!那 fsck.ext4 的选项有底下几个常见的项目:
命令:$   fsck.ext4 [-pf] [-b superblock] 装置名称
选项与参数:
    -p :当文件系统在修复时,若有需要回复 y 的动作时,自动回复 y 来继续进行修复动作。
    -f :强制检查!一般来说,如果 fsck 没有发现任何 unclean 的旗标,不会主动进入 细部检查的,如果您想要强制 fsck 进               入细部检查,就得加上 -f 旗标啰!
   -D :针对文件系统下的目录进行优化配置。
   -b :后面接 superblock 的位置!一般来说这个选项用不到。但是如果你的 superblock 因故损毁时,透过这个参数即可利               用文件系统内备份的 superblock 来尝试救援。一般来说,superblock 备份在:1K block 放在 8193, 2K block 放                       在 16384, 4K block 放在 32768

5、文件系统的挂载与卸除

注意   · 单一文件系统不应该被重复挂载在不同的挂载点(目录)中;
          · 单一目录不应该重复挂载多个文件系统;
          · 要作为挂载点的目录,理论上应该都是空目录才是。如果你要用来挂载的目录里面并不是空的,那么挂载了文件系统              之后,原目录下的东西就会暂时的消失。
命令: $  mount -a
命令: $  mount [-l]
命令: $  mount [-t 文件系统] LABEL='' 挂载点
命令: $  mount [-t 文件系统] UUID='' 挂载点 # 鸟哥近期建议用这种方式喔!
命令: $  mount [-t 文件系统] 装置文件名 挂载点
选项与参数:
      -a :依照配置文件 /etc/fstab 的数据将所有未挂载的磁盘都挂载上来
      -l :单纯的输入 mount 会显示目前挂载的信息。加上 -l 可增列 Label 名称!
      -t :可以加上文件系统种类来指定欲挂载的类型。常见的 Linux 支持类型有:xfs, ext3, ext4,  reiserfs, vfat, iso9660(光盘               格式), nfs, cifs, smbfs (后三种为网络文件系统类型)
      -n :在默认的情况下,系统会将实际挂载的情况实时写入 /etc/mtab 中,以利其他程序的运作。  但在某些情况下(例如单                 人维护模式)为了避免问题会刻意不写入。此时就得要使用 -n 选项。
      -o :后面可以接一些挂载时额外加上的参数!比方说账号、密码、读写权限等:async, sync: 此文件系统是否使用同步写               入 (sync) 或异步 (async) 的 内存机制,请参考文件系统运作方式。预设为 async。
              atime,noatime: 是否修订文件的读取时间(atime)。为了效能,某些时刻可使用 noatime
              ro, rw: 挂载文件系统成为只读(ro) 或可擦写(rw)
              auto, noauto: 允许此 filesystem 被以 mount -a 自动挂载(auto)
              dev, nodev: 是否允许此 filesystem 上,可建立装置文件? dev 为可允许
              suid, nosuid: 是否允许此 filesystem 含有 suid/sgid 的文件格式?
              exec, noexec: 是否允许此 filesystem 上拥有可执行 binary 文件?
              user, nouser: 是否允许此 filesystem 让任何使用者执行 mount ?一般来说,mount 仅有 root 可以进行,但下                                                 达 user 参数,则可让 一般 user 也能够对此 partition 进行 mount 。
              defaults: 默认值为:rw, suid, dev, exec, auto, nouser, and a

              remount: 重新挂载,这在系统出错,或重新更新参数时,很有用!

猜你喜欢

转载自blog.csdn.net/qq_41825534/article/details/82804258