首頁 > 軟體

Linux查缺補漏之磁碟引數修訂

2020-06-16 18:00:17

檔案代表裝置

在Linux下面我們都知道可以用相應的檔案代表一個裝置,比如 /dev/sdb1代表sdb硬碟的第一個分隔槽,該裝置通過major和minor來標示對應代替的裝置

brw-rw—- 1 root disk 8, 0 5月 12 20:16 /dev/sda
brw-rw—- 1 root disk 8, 1 5月 12 19:48 /dev/sda1
brw-rw—- 1 root disk 8, 10 5月 12 19:48 /dev/sda10
brw-rw—- 1 root disk 8, 11 5月 12 19:48 /dev/sda11
brw-rw—- 1 root disk 8, 12 5月 12 19:48 /dev/sda12
brw-rw—- 1 root disk 8, 13 5月 12 19:48 /dev/sda13
brw-rw—- 1 root disk 8, 2 5月 12 19:48 /dev/sda2
brw-rw—- 1 root disk 8, 3 5月 12 19:48 /dev/sda3
brw-rw—- 1 root disk 8, 4 5月 12 19:48 /dev/sda4
brw-rw—- 1 root disk 8, 5 5月 12 19:48 /dev/sda5
brw-rw—- 1 root disk 8, 6 5月 12 19:48 /dev/sda6
brw-rw—- 1 root disk 8, 7 5月 12 19:48 /dev/sda7
brw-rw—- 1 root disk 8, 8 5月 12 19:48 /dev/sda8
brw-rw—- 1 root disk 8, 9 5月 12 19:48 /dev/sda9
root@qeesung-laptop:/media# ll /dev/sdb*
brw-rw—- 1 root disk 8, 16 5月 12 20:16 /dev/sdb
brw-rw—- 1 root disk 8, 17 5月 12 20:25 /dev/sdb1
brw-rw—- 1 root disk 8, 18 5月 12 20:18 /dev/sdb2

linux核心就是通過對應的major和minor來認識對應的裝置的

device namemajorminor
/dev/sdb 8 0-15
/dev/sdba 8 16-31

mknod命令
這個命令主要是用來建立一個裝置檔案的(make block or character special files)
mknod [OPTION]... NAME TYPE [MAJOR MINOR]
其中型別主要有:
- b block塊裝置
- c char字元裝置
- p pipe管道裝置
使用範例:

新建一個管道檔案

#mknod pipeFile p
#echo this is a test line >> pipeFile
#cat pipeFile

--------------------------------------------------------------------------------

新建一個塊檔案

#mknod blockFile b 8 100

--------------------------------------------------------------------------------

新建一個字元檔案

#mknod charFile c 4 100

最終會有三個檔案
brw-r–r– 1 root root 8, 100 5月 12 21:15 blockFile
crw-r–r– 1 root root 4, 100 5月 12 21:16 charFile
prw-r–r– 1 root root 0 5月 12 21:12 pipeFile|

--------------------------------------------------------------------------------

e2label命令

在linux下面,每一個分隔槽都可以指定一個對應的label用來標示這個分隔槽,這點好比windows下面的C槽D槽一樣。如果磁碟的分隔槽指定了label,那麼就會咋/media目錄下面按照label的名字掛載,如果沒有指定label,那麼將會按照分割槽的UUID在/media目錄下面掛載

在linux下面可以可以通過e2label命令該指定對應分隔槽的label是什麼,指定label有一個好處就是label不會隨著磁碟檔名的改變而改變,我們知道在linux下面磁碟的掛載順序決定了磁碟的檔名,比如你先掛載SATA磁碟1,那麼磁碟1的裝置名字就是 /dev/sda,要是你在掛在SATA磁碟2滯後再掛載磁碟1,那麼磁碟1的磁碟檔案就是/dev/sdb。。。但是就算不管磁碟檔名是怎麼變換的,對應的分隔槽label是不會改變的

使用e2label命令:

e2label /dev/sdb1 “newLabelName”

--------------------------------------------------------------------------------

tune2fs命令

tune2fs命令用途很大,下面是一些基本用法
- -l 相當於dumpe2fs -h 顯示分隔槽的superBlock內容
- -L 相當於e2label改變一個分隔槽的label
- -J將ext2檔案格式轉換為ext3帶有紀錄檔的檔案格式
具體更多用法還是man一下好了

--------------------------------------------------------------------------------

檔案系統的自動掛載

我們可以通過更改在/etc/fstab下面的資料來改變系統每次開機自動掛載的檔案系統,下面是/etc/fstab/檔案裡面的東西:

這個例子裡面的檔案系統掛在/home目錄下面,沒一行資訊標示開機自動掛載的檔案系統,每一項都以空格來區分,每一項的具體含義為:
- file system:對應的分隔槽,是UUID或者是label名字
- mount point:掛載點,一定必須是目錄,而且根目錄/一定要優先於所有檔案系統掛載
- type:檔案系統的型別
- options:檔案系統的掛載引數,有:

arg1arg2描述
user nouser 普通使用者是否可以掛載檔案系統
async sync 磁碟是否以非同步的方式讀寫
auto noauto 是否可以自動掛載,就是mount -a
rw ro 檔案系統是唯讀的還是可以讀寫的
suid nosuid 是否支援suid/sgid的檔案和目錄

- dump:標示是否對檔案系統進行dump備份:0標示不做備份,1標示每天做備份,2標示不定期的做備份
- pass:用fsck來檢測檔案系統是否有問題,0標示不檢測,1標示最先檢測(一般是根目錄),2表示需要檢測,只是在1檢測之後檢測!

現在假設我們需要對檔案系統/dev/sdb1在開機的時候自動以唯讀的方式掛載到/media/sdb1目錄下面,那麼我們就需要在/etc/fstab下面寫入;
/dev/sdb1 /media/sdb1 ext4 ro 1 2
接下來我們試一下mount -a,發現檔案系統自動以唯讀的形式掛載到了/media/sdb1目錄下面了,表明我們沒有寫錯
注意:要是你在沒有檢測自己是否新增的fstab裡面的條目書寫是否正確就匆匆的進行重新啟動,那麼就有可能開機無法成功而進入到單人模式之中,這個時候你就需要mount -n =o remount.rw /對根目錄重新掛載,然後我們再修改/etc/fstab檔案

更多詳情見請繼續閱讀下一頁的精彩內容http://www.linuxidc.com/Linux/2015-05/117639p2.htm


IT145.com E-mail:sddin#qq.com