天天看點

linux磁盤管理與檔案 系統

一、作業(練習)内容:

1、複習本次課程所講的内容;

2、總結整理磁盤管理及檔案系統管理中設計的各種指令的使用,并附注一定的示例;

Linux磁盤管理

    機械式

    磁盤接口類型:

        識别硬碟裝置:/dev/sd

            标記不同的硬碟裝置:/dev/sd[a-z]

            标記同一裝置上的不同分區:/dev/sd[a-z][1-]

                1-4:主或擴充分區辨別

                5+:邏輯分區辨別

        裝置檔案:特殊檔案

            裝置号:

                major,

minor

                    major:裝置類型

                    minor: 同一類型下的不同裝置

            “塊”:block,随機裝置

            “字元”:character,線性裝置

            GPT

    分區:分隔存儲空間為多個小的空間,每個空間可獨立使用檔案系統;

fdisk工具的使用:

        最多支援在一塊硬碟上的15個分區;

        分區管理子指令:

            p:顯示

            n:建立

            d:删除

            t:修改分區ID

            l:列出所有支援ID類型

            w:儲存退出

            q:放棄修改并退出

            m:擷取幫助

        建立完成之後,檢視核心是否已經識别新的分區:

            #

cat /proc/partitions

            有三個指令可以讓核心重讀磁盤分區表:

                CentOS

5: partprobe [DEVICE]

6,7:

                    partx

                    kpartx

                partx指令:

DEVICE

-a DEVICE

-a -n M:N DEVICE

                        M

                        M:

                        :N

                kpartx指令:

-af DEVICE

檔案系統:

        VFS:Virtual File System

    絕對路徑:/

        根檔案系統:rootfs

        檔案系統挂載:

        LSB:

FHS(檔案系統層級結構标準)

    FHS:

        /boot:引導檔案存放目錄,例如kernel(vmlinuz)、bootloader(grub, grub2);

        /bin:

binary,供使用者使用的基本的指令;OS啟動即會用到程式;

        /sbin:管理類的基本指令;

        /lib:基本共享庫;核心子產品;

        /lib64:x86_64系統的共享庫;

        /etc:配置檔案目錄;

        /home/USERNAME:普通用主目錄的預設位置;

        /root:管理者的主目錄;

        /media:便攜式移動裝置;

        /mnt:臨時檔案系統挂載點;

        /opt:可選目錄,第三方應用程式的預設安裝位置;

        /dev:devices,裝置檔案

            b:block devices,random access

            c:

character deivces,linear access

        /proc:

            僞檔案系統;用于輸出核心與程序的相關資訊;

        /sys:

            僞檔案系統;

        /srv:services,系統上運作服務用到中間資料;

        /tmp:臨時檔案目錄;

        /usr:Universal Shared,

Read-only data;

            bin:保證系統提供基本功能;

            sbin

            lib

            lib64

            include:

C程式的頭檔案;header

files

            share:結構化的獨立資料

                doc,

man

            local:現在常用的第三方程式的安裝位置;

                bin

                sbin

                lib

                lib64

                etc

                share

        /var:variable data files

            cache:應用程式緩存資料

            lib:應用程式的狀态資訊資料

            local:專用于為/usr/local下的應用程式存儲可變資料;

            lock:鎖檔案

            log:日志檔案

            opt:專用于/opt

            spool:應用程式的資料池;

            run:運作中的程序的相關資料;通常用守護程序 的pid檔案;

            /selinux

Linux:ext2, ext3, ext4, reiserfs, xfs, btrfs, swap

        CD光牒:iso9660

        Windows:

fat32(vfat), ntfs

        Unix:

ffs, ufs, jfs, jfs2

        網絡檔案系統:nfs, cifs

        叢集檔案系統:ocfs2, gfs2

        分布式檔案系統:ceph,

            moosefs,

mogilefs, hdfs, gfs, glusterfs

        (1)日志型檔案系統

            非日志型檔案系統:ext2

            日志型檔案系統:ext3

        (2)

swap:交換分區

建立檔案系統:

        在分區上執行格式化(進階格式化)

            要使用某種檔案系統,滿足兩個條件:

                核心中:支援此種檔案系統

                使用者空間:有檔案系統管理工具

        建立工具:mkfs (make

filesystem)

            mkfs

-t type DEVICE

                mkfs.type

            ext系列檔案系統的專用管理工具:

                mke2fs

-t {ext2|ext3|ext4} DEVICE

                    -b

BLOCK: 1024, 2048, 4096

                    -L

'LABEL': 設定卷标

            blkid指令:

                blkid

                    LABEL,

UUID, TYPE

Linux檔案系統管理:

    mkfs,

mkfs -t type = mkfs.type

    ext:mke2fs

    建立檔案系統:

        mke2fs

[OPTION]... DEVICE

            -t

{ext2|ext3|ext4}

            -b

{1024|2048|4096}

            -L

'LABEL'

            -j:

mke2fs -t ext3

            -i

#:

            -N

            -m

#: 預留磁盤空間占據多大百分比的空間為後期管理使用;

            -O

FEATURE[,...]

                -O

^FEATURE:關閉此特性

                has_journal

    檔案系統屬性檢視及調整工具:

        e2label

            e2lable

DEVICE [LABEL]

        tune2fs

            顯示ext系列檔案系統的屬性,或調整其屬性;

            -l:顯示超級塊中的資訊;顯示整個檔案的屬性及布局等相關資訊;

'LABEL':修改卷标;

#: 調整預留給管理者的管理空間百分比;

ext2 --> ext3

            -O:檔案系統屬性的啟動或關閉

            -o:檔案系統預設挂載選項的啟用或關閉

        dumpe2fs:

            -h:僅顯示超級塊資訊;

    檔案系統檢測:

        fsck:

Filesystem check

            fsck

-t type

            fsck.type

                -a:自動修複錯誤

                -r:互動式修複錯誤

                -f:強制檢測

        e2fsck:ext系列檔案系統專用的檢測修複工具;

            -y:自動回答為“yes”

            -f:force

檔案系統的挂載和使用:

    kernel

--> rootfs(分區)

        rootfs分區:

            bin,

sbin, etc, lib, lib64, dev, tmp, proc, sys

            /sbin/init

    将額外檔案系統與根檔案系統某現存的目錄建立起關聯關系,進而使得此目錄做為其它檔案系統通路入口的行為,稱之為挂載;

    解除此關聯關系的過程:解除安裝;

    挂載點:mount point, 裝置挂載至目錄;

        注意:挂載點在挂載在之後,其内部原有的檔案會被暫時隐藏;建立使用空目錄做為挂載點;

    挂載方法:

        mount:通過讀取/etc/mtab檔案來顯示目前系統所有已經挂載的裝置;

        mount

-a:挂載/etc/fstab檔案中的所有支援自動挂載的檔案系統;

[options] [-o options] DEVICE MOUNT_POINT

            [options]:指令選項

            [-o

options]:挂載選項

            DEVICE:要挂載的裝置

                (1)裝置檔案:/dev/sda5

                (2)卷标:-L

                (3)

UUID:-U

'UUID'

                (4)僞檔案系統名稱

            MOUNT_POINT:挂載點

            常用選項:

                -t

type:檔案系統類型

                -r:以“隻讀”方式挂載此檔案系統

                -w:以“讀寫”方式挂載此檔案系統

                -n:每個檔案系統在挂載時都會自動更新/etc/mtab檔案,-n用于禁止此功能;

                    此時,如果想檢視挂載的所有檔案系統:cat

/proc/mounts

                -a:自動挂載所有支援自動挂載的裝置;

                -B:綁定目錄至另一個目錄上;

            -o挂載選項:

                async:異步模式

                sync:同步模式

                atime/noatime:是否更新通路時間戳;

                diratime/nodiratime:是否更新目錄的通路時間戳;

                auto/noauto:是否允許此裝置被自動挂載;

                exec/noexec:是否允許執行此檔案系統上應用程式;

                dev/nodev:是否支援在此裝置上使用裝置檔案;

                suid/nosuid:

                remount:重新挂載

                ro

                rw

                user/nouser:是否允許普通挂載此裝置;

                acl:是否支援此裝置上使用facl;

                defaults:rw, suid, dev, exec,

auto, nouser, and async

        umount:解除安裝指令

umount DEVICE

umount MOUNT_POINT

            檢視正在通路指定挂載點的程序:

                #

fuser -v MOUNT_POINT

            終止所有正在通路指定的挂載點的程序:

fuser -km MOUNT_POINT

    交換分區:

        free指令:

            檢視memory和swap的使用狀态

                -m:以MB為機關

                -g:以GB為機關

        mkswap:建立交換分區

            mkswap

[option] DEVICE

                -L

'LABEL' 

        swapon:啟用交換分區

            swapon

[option] [DEVICE]

                -a:激活所有交換分區

                -p

PRIORITY: 設定其優先級;

        swapoff:禁用交換分區

            swapoff

    檔案系統等空間占用資訊的檢視工個:

        df:

disk free

            -h:

human-readable

            -i:

inode數量

            -P:以Posix相容的格式輸出

        du:

disk usage

            -s:

summary

    檔案系統相關挂載配置檔案:/etc/fstab

        每行定義一個檔案系統;

        要挂載的裝置或僞檔案系統    挂載點      檔案系統類型    挂載選項    轉儲頻率    自檢次序

            要挂載的裝置:

                裝置檔案、LABEL=、UUID=、僞檔案系統名稱

            挂載選項:

                defaults

            轉儲頻率:

                0: 不轉儲

                1: 每天轉儲

                2: 每隔一天轉儲

            自檢次序:

                0:不自檢

                1:首先自檢,通常隻有/才為1

                2:

                ...

檔案系統上的連結檔案:

        硬連結:

            兩個路徑指向同一個inode

            不能對目錄進行;

            不能跨分區進行

            指向同一個inode的多個不同路徑; 建立檔案的硬連結會增加inode的引用計數;删除硬連結僅是删除其一個通路路徑,隻到最後一個路徑被删除;

        符号連結:

            連結檔案的資料指向另一個檔案路徑;

            可以對目錄進行;

            可以跨分區;

            指向的是另一個檔案路徑;而非inode;

                對檔案建立符号連結不會增加其引用計數;删除原檔案,符号連結檔案也将無法;

        ln

[-s] SRC DEST

            -s:symbolic link

            -v:verbose

3、建立一個10G的檔案系統,類型為ext4,要求開機可自動挂載至/mydata目錄

[root@localhost ~]# fdisk -l
Disk /dev/sda: 128.8 GB, 128849018880
bytes
255 heads, 63 sectors/track, 15665
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: 0x0005f700 
Device Boot      Start         End      Blocks  
Id  System
/dev/sda1   *          
1          26      204800  
83  Linux
Partition 1 does not end on cylinder
boundary.
/dev/sda2              26        7675   
61440000   83  Linux
/dev/sda3            7675        7936    
2097152   82  Linux swap / Solaris
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: 0x00000000      

這裡發現有一個硬碟

[root@localhost ~]# fdisk /dev/sdb
Device contains neither a valid DOS
partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk
identifier 0x88371439.
Changes will remain in memory only,
until you decide to write them.
After that, of course, the previous
content won't be recoverable.
Warning: invalid flag 0x0000 of
partition table 4 will be corrected by w(rite)
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): m
Command action 
a   toggle a bootable flag 
b   edit bsd disklabel 
c   toggle the dos compatibility
flag 
d   delete a partition  
l   list known partition types  
m   print this menu  
n   add a new partition  
o   create a new empty DOS
partition table  
p   print the partition table 
q   quit without saving changes  
s   create a new empty Sun
disklabel 
t   change a partition's system id 
u   change display/entry units 
v   verify the partition table 
w   write table to disk and exit  
x   extra functionality (experts
only)
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): +10G
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition
table.
Syncing disks.
[root@localhost ~]# cat /proc/partitions
major minor  #blocks 
name 
8        0  125829120 sda  
8        1     204800 sda1  
8        2   61440000 sda2  
8        3    2097152 sda3
8       16   20971520 sdb  
8       17   10490413 sdb1
[root@localhost ~]#      

接下來格式化,并且指定類型為ext4

[root@localhost ~]# mkfs -t ext4
/dev/sdb1
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
655776 inodes, 2622603 blocks
131130 blocks (5.00%) reserved for the
super user
First data block=0
Maximum filesystem blocks=2688548864
81 block groups
32768 blocks per group, 32768 fragments
per group
8096 inodes per group
Superblock backups stored on blocks:
    32768,
98304, 163840, 229376, 294912, 819200, 884736, 1605632
Writing inode tables: done                           
Creating journal (32768 blocks): done
Writing superblocks and filesystem
accounting information: done
This filesystem will be automatically
checked every 35 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.      

然後在根目錄下建立mydata目錄,并使用mount指令挂載分區

[root@localhost ~]# mkdir /mydata    -----建立目錄
[root@localhost ~]#
[root@localhost ~]# mount -o auto /dev/sdb1
/mydata  -o auto表示此分區允許自動挂載
[root@localhost ~]# df -Th
Filesystem     Type  
Size  Used Avail Use% Mounted on
/dev/sda2      ext4   
58G  3.4G   52G  
7% /
tmpfs          tmpfs 
491M     0  491M  
0% /dev/shm
/dev/sda1      ext4  
190M   36M  145M 
20% /boot
/dev/sdb1      ext4  
9.8G   23M  9.3G  
1% /mydata
[root@localhost ~]#      
[root@localhost ~]# blkid /dev/sdb1   ---使用blkid指令檢視該分去的UUD,并把該值複制下來
/dev/sdb1: UUID="c48ea605-b1d7-4585-aeb8-e6918ea4e77a" TYPE="ext4"
[root@localhost ~]#
[root@localhost ~]# vi /etc/fstab      
# /etc/fstab
# Created by anaconda on Wed Aug 19
18:07:26 2015
#
# Accessible filesystems, by reference,
are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8),
mount(8) and/or blkid(8) for more info
#
UUID=628caa97-3e69-481c-95ed-13acc4721bec
/                       ext4    defaults        1 1
UUID=f7eb501a-f2d6-4b95-bf68-b4a616f3d992
/boot                   ext4    defaults        1 2
UUID=511653fb-e927-4f78-bac9-c2d349484467
swap                    swap    defaults        0 0
UUID="c48ea605-b1d7-4585-aeb8-e6918ea4e77a"
/mydata               ext4    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      
[root@localhost ~]# mount -a
[root@localhost ~]#
[root@localhost ~]# df -Th
Filesystem     Type  
Size  Used Avail Use% Mounted on
/dev/sda2      ext4   
58G  3.4G   52G  
7% /
tmpfs          tmpfs 
491M     0  491M  
0% /dev/shm
/dev/sda1      ext4  
190M   36M  145M 
20% /boot
/dev/sdb1      ext4  
9.8G   23M  9.3G  
1% /mydata
[root@localhost ~]#      

繼續閱讀