Presentation is loading. Please wait.

Presentation is loading. Please wait.

作業一: 安裝Linux於btrfs上 中正大學 作業系統實驗室 指導教授:羅習五

Similar presentations


Presentation on theme: "作業一: 安裝Linux於btrfs上 中正大學 作業系統實驗室 指導教授:羅習五"— Presentation transcript:

1 作業一: 安裝Linux於btrfs上 中正大學 作業系統實驗室 指導教授:羅習五
作業一: 安裝Linux於btrfs上 中正大學 作業系統實驗室 指導教授:羅習五

2 前言: 版本:0.1 假如你想收到最新的作業系統資訊,請填寫底下表格,這份投影片每半年到一年會有一 次大更新,我會將更新資訊寄給您
台灣的資訊教育較為特別,幾乎所有資工系的學生都要「考」研究所,因此無法直接使 用國外的教材 目前網路上看到大部分的教材都是pdf形式,無法修改,授課老師無法依照學生的需求, 增減資料 我希望能用幾年的時間,完成沒有版權問題,涵蓋恐龍本基本觀念,並以Linux為基礎的 作業系統簡介投影片 作業系統非常龐大,很多地方是我沒接觸過的、沒研究過的,因此投影片當中可能會有 不少錯誤

3 前言: 這份投影片對讀者(學生)的設定如下 由於計算機結構是研究所的內容,因此相關的部分會在投影片內交代清楚 (大學部只修過計算機組織)
略懂資料結構、演算法 「真的」會寫程式 約略看懂組合語言 了解Linux system programming,例如基本的fork、pipe、signal等等 由於計算機結構是研究所的內容,因此相關的部分會在投影片內交代清楚 (大學部只修過計算機組織) 恐龍本中涵蓋,但不重要的部分我放在投影片最後面的「補充的名詞解釋」 這份投影片依然以介紹概念為主,與恐龍本不同的是以Linux為例介紹概念

4 接下來的規劃 橋接恐龍書和Linux上,讓到業界的新鮮人可以透過這份投影片 快速了解整個Linux架構
更加模組化,教師可以選擇自己喜歡的部分,組成一個章節 每個章節都提供一個夠有代表性的實作 每個章節提供一系列的課後問題 提供更進階的部分

5 作業目標及負責助教 作業目標: 負責助教: 了解Linux kernel的系統呼叫處理機制 了解x86的除錯機制
了解如何於PC上對kernel進行追蹤(trace) trace二個system call 負責助教:

6 作業一:作業概要 請安裝Linux 18.04.1 檔案系統請選用btrfs 安裝gcc-8.0、g++-8.0、make、cmake
hint:sudo apt install XXX 作業主幹 操作btrfs檔案系統

7 問題一:列出所有的btrfs的sub-volume
sudo btrfs subvolume list / [sudo] password for shiwulo: ID 257 gen 9665 top level 5 ID 258 gen 9654 top level 5

8 列出fstab $ sudo vim /etc/fstab # <file system> <mount point> <type> <options> <dump> <pass> # / was on /dev/sda1 during installation UUID=6eb65616-fe a800-f ace / btrfs 0 1 # /home was on /dev/sda1 during installation UUID=6eb65616-fe a800-f ace /home btrfs 0 2 /swapfile none swap sw 0 0

9 問題二: 請問/etc/fstab內各個欄位的意思為何?

10 撰寫一支程式不斷的印出時間 clocktime.c
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> #include <unistd.h> int timespec2str(char *buf, uint len, struct timespec *ts) {     int ret;     struct tm t;     tzset();     if (localtime_r(&(ts->tv_sec), &t) == NULL)         return 1;     ret = strftime(buf, len, "%F %T", &t);     if (ret == 0)         return 2;     len -= ret - 1;     ret = snprintf(&buf[strlen(buf)], len, ".%09ld", ts->tv_nsec);     if (ret >= len)         return 3;

11 撰寫一支程式不斷的印出時間 clocktime.c
    return 0; } int main(int argc, char **argv) {     clockid_t clk_id = CLOCK_REALTIME;     char timestr[1000];     struct timespec ts;     FILE *a, *b;     a = fopen("./a.time", "w+");     b = fopen("./b.time", "w+");     while(1) {         clock_gettime(clk_id, &ts);         timespec2str(timestr, sizeof(timestr), &ts);         fprintf(a, "time=%s\n", timestr);         fprintf(b, "time=%s\n", timestr);         sync();     }

12 編譯clocktime.c $ cd ~ $ gcc clocktime.c -o clocktime $ ./clocktime /*請在一個terminal不斷地執行./clocktime,不要停止*/

13 備份方法一 建立備份目錄方法一: 問題三: shiwulo@vm:~$ sudo mkdir /backup
sudo chmod 777 /backup sudo tar -jc -f /backup/home1.tar.bz2 /home 解開/backup/a.time及/backup/b.time(可以使用檔案管理員解開即可) 問題三: a.time和b.tme的內容一樣嗎?

14 使用snapshot,建立備份 $ sudo mkdir /snapshot $ sudo chmod 777 /snapshot $ sudo btrfs subvolume snapshot /home /snapshot/home-$(date +"%Y-%m-%d-%H:%M:%S") $ sudo tar -jc -f /backup/home2.tar.bz2 ./home \:43\:12/ /*請特別注意,你的日期時間可能跟我的不一樣*/ 問題四: 解壓縮以後a.time和b.tme的內容一樣嗎?(可以使用檔案管理員解開即可)

15 刪除snapshot image sudo btrfs subvolume delete ./home / /*注意,你的目錄名稱可能跟我不一樣*/

16 思考 如果只使用tar進行備份,除非進行offline的備份,例如:將系統停 機,對資料夾進行備份,否則檔案備份的時候會有時間差
某些檔案會有相關性,利如:資料庫的「data file」和「index file」,就有相 關性,如果不是「同時」備份,還原以後可能會產生錯誤 以oracle而言,支援online backup,即使data file和index file在不同時間點 備份,oracle也可以維持資料庫的正確性 問題五:參考上面文章,或其他網路文章,說明資料庫的online backup和 offline backup的差別 對其他資料庫而言,如:mySQL等等,並不支援online backup,因此 備份時,mySQL必須停機 問題六:如果使用Btrfs的話,可以在不停機的情況下備份mySQL嗎? 申論題,無對錯

17 Data file and index file

18 Btrfs的copy-on-write機制
在我們的檔案系統中,常常會做檔案的複製,複製以後的檔案也常 常並沒有做任何修改。 因此系統中會有些檔案的內容是一樣的,但隨著複製的次數增加, 佔據磁碟的空間也跟著增加 為了解決上述問題,btrfs引入copy-on-write機制 filesystem

19 Btrfs的copy-on-write機制
time cp --reflink=always a.time a1.time time cp a.time a1.time time ln a.time a2.time 問題七:上述三個指令的時間 vim a1.time /*任意修改a1.time*/ 問題八:a.time是否會隨之改變內容 vim a2.time /*任意修改a1.time*/ 問題九:a.time是否會隨之改變內容

20 延伸閱讀 ZFS 如果使用的作業系統是BSD、sun solaris可以使用ZFS
Btrfs的概念幾乎都是從zfs借用過來

21 作業繳交 針對「問題一」到「問題九」,簡答之 繳交pdf檔案,檔名必須是你的學號 作業請繳交到ecourse
期限: :59:59 不能遲交,遲交一律零分


Download ppt "作業一: 安裝Linux於btrfs上 中正大學 作業系統實驗室 指導教授:羅習五"

Similar presentations


Ads by Google