命令 : $ 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 ##列出磁盘的分区表类型与分区信息
注意: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 装置名 ##删除分区槽
格式化==建置文件系统
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] 就很清楚了!
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
注意 · 单一文件系统不应该被重复挂载在不同的挂载点(目录)中;
· 单一目录不应该重复挂载多个文件系统;
· 要作为挂载点的目录,理论上应该都是空目录才是。如果你要用来挂载的目录里面并不是空的,那么挂载了文件系统 之后,原目录下的东西就会暂时的消失。
命令: $ 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: 重新挂载,这在系统出错,或重新更新参数时,很有用!