目的:記錄不使用裙,unraid之類的nas系統(tǒng),利用debian發(fā)行版軟件包以及一些手機app結(jié)合检诗,構(gòu)建個人的NAS匈仗,當(dāng)然已有基于debian的nas系統(tǒng),openmediavault逢慌,簡稱OMV悠轩,
如果是直接使用omv(它實際上是使用了一些debian維護的軟件包的基礎(chǔ)上開發(fā),使用體驗與其他的nas系統(tǒng)差別不大 攻泼,可以把現(xiàn)有的debian系統(tǒng)添加OMV源安裝軟件后直接啟用管理面板)
unas的系統(tǒng)也是基于debian開發(fā)的火架,相對于群暉又或者unraid那種,unas忙菠、omv顯得集成度低一些距潘,像一些包管理,都是套用現(xiàn)成的軟件只搁,使用起來音比,感覺是拼湊起來的一個NAS套件,當(dāng)然自由度高一些氢惋。
一洞翩、概述
硬件組成
- 一臺debian發(fā)行版的計算機(使用
debian10
) - 至少2塊硬盤組
RAID0
,2塊同容量硬盤組RAID1
焰望,一塊硬盤冷備骚亿。 - 一臺UPS主機
- 家用千兆局域網(wǎng)(路由器x1、8口千兆交換機x1熊赖、光貓x1)来屠,萬兆直連(NAS->PC端)
NAS擁有的能力
1.網(wǎng)絡(luò)文件共享
2.通過docker擴展更多容易部署的軟件
3.下載
4.視頻,音頻等媒體服務(wù)
7.通過Linux現(xiàn)有的軟件包震鹉,可以不斷擴充nas的功能俱笛,例如qemu虛擬機等等,我根據(jù)自己需要進行擴展
需要解決的問題
1.電源穩(wěn)定性传趾。
主機24小時運行迎膜,不間斷供電,采用家用的后備式小功率UPS(需要支持USB實現(xiàn)UPS和系統(tǒng)聯(lián)動浆兰,外電網(wǎng)斷電后配置自動關(guān)機)磕仅,UPS狀態(tài)郵件通知(光貓、路由器簸呈、交換機的供電均經(jīng)過UPS)
2.文件訪問服務(wù)
包括:ftp,smb,nfs榕订,Android對smb的支持比較差,使用ftp訪問文件速度快一些(手機訪問NAS上的文件使用ES文件瀏覽器)蜕便,smb為win10提供網(wǎng)絡(luò)共享訪問劫恒,nfs為linux主機提供網(wǎng)絡(luò)共享訪問,外網(wǎng)訪問使用sftp玩裙。
3.訪問權(quán)限分配
個人nas對權(quán)限需求使用Linux上的用戶即可滿足權(quán)限分配兼贸,為家庭每個成員分配不同的賬戶,并且設(shè)置不同的訪問權(quán)限吃溅,不同的成員的文件需要文件訪問控制溶诞。
4.可靠的儲存
軟RAID采用mdadm管理,磁盤監(jiān)控使用smartmontools,定期監(jiān)控硬盤健康狀況决侈,并且通過郵件通知螺垢。
5.網(wǎng)絡(luò)拓?fù)?/strong>
家用網(wǎng)絡(luò)采用千兆網(wǎng)絡(luò),家庭成員文件備份使用現(xiàn)成的app赖歌,暫定為UFile(UFile在自動備份和后臺備份做的還是不夠好)枉圃。個人PC高速訪問使用10G光纖直連以獲得較好的訪問體驗。
6.告警提醒
通過mutt+msmtp庐冯,實現(xiàn)smtp郵件發(fā)送到QQ郵箱
及時提醒健康狀況孽亲。
硬盤儲存分配
目前擁有2塊2T酷魚,2塊4Twd的紫盤,一塊2T移動硬盤展父,一塊16G傲騰M10返劲。
2T酷魚用于組RAID1,4T監(jiān)控紫盤用于組RAID0,移動硬盤負(fù)責(zé)半年一次冷備份栖茉。
R0盤用于下載篮绿,組R0以提升讀寫速度,數(shù)據(jù)主要是媒體吕漂,對容錯要求不高亲配。
R1盤用于重要資料存儲,容量需求不大惶凝,求穩(wěn)為主吼虎。
冷備盤定期同步R1盤的內(nèi)容
二、NAS組建
nas使用mdadm
實現(xiàn)軟RAID苍鲜,對于下載鲸睛,對IO性能有需求的,可以使用bcache
讓SSD作為機械硬盤的緩寫盤坡贺,一定程度上提升寫入速度官辈。
因為16G的傲騰容量太小了,如果用于緩讀意義不大遍坟,命中率很低拳亿,但是用于緩寫可以應(yīng)付突發(fā)性的寫入,再緩緩從緩寫盤回寫到實際的RAID0陣列中去愿伴,降低它的IO壓力肺魁,像下載軟件它不一定都是順序?qū)懭耄绻螺d速度稍微快一些隔节,同一時刻都在寫入鹅经,讀取遇上了瓶頸寂呛。以內(nèi)存->SSD緩存->機械硬盤
兩級緩存盡可能地減輕爆IO的情況。
但是實際上使用時瘾晃,效果并沒有那么理想贷痪,傲騰M10(16g)的順序?qū)懭胨俣炔⒉桓撸?biāo)稱150mb/s),反而可能在順序上成為瓶頸蹦误。
1.硬件管理
mdadm
mdadm是linux軟RAID劫拢,目前使用軟件方案實現(xiàn)RAID來代替RAID卡
mdadm --create device options...
創(chuàng)建陣列
mdadm --assemble device options...
組裝一個陣列
mdadm --build device options...
創(chuàng)建或者組裝一個陣列,沒有元數(shù)據(jù)的
mdadm --manage device options...
管理一個陣列(包括添加硬盤强胰,標(biāo)記故障硬盤)
mdadm --misc options... devices
查看陣列信息
mdadm --grow options device
調(diào)整陣列的邏輯大胁詹住(邏輯大小最大不能超過物理大小)以及調(diào)整陣列的級別
mdadm --incremental device
add/remove a device to/from an array as appropriate
mdadm --monitor options...
監(jiān)聽信息
mdadm device options...
Shorthand for --manage.
RAID這里使用了RAID0和RAID1
對于一個磁盤陣列偶洋,我應(yīng)先考慮以下的問題
- 不同級別陣列的基本屬性
- 如何創(chuàng)建一個陣列
- 監(jiān)控陣列的健康狀態(tài)
- 如何給一個陣列換硬盤
- 如何調(diào)整陣列新增硬盤
- 當(dāng)陣列停止了如何重新組裝啟動
文檔中提示數(shù)據(jù)丟失更多是因為人為操作的問題熟吏,對于陣列的管理,所以我決定先仔細(xì)看陣列降級后的恢復(fù)操作玄窝。
開始創(chuàng)建
為了更容易創(chuàng)建一個陣列設(shè)備分俯,我需要閱讀以下文檔
https://raid.wiki.kernel.org/index.php/A_guide_to_mdadm#Create
文檔中提及到一些比較重要的設(shè)置
Blocks, chunks and stripes
blocks
目前大部分硬盤的物理扇區(qū)都是4K(4096個字節(jié)),而邏輯扇區(qū)是512哆料,也就是1個物理扇區(qū)的大小等于8個邏輯扇區(qū)缸剪。(因為老硬盤的扇區(qū)大小是512字節(jié),應(yīng)該為了兼容吧东亦,我猜的)
chunks
它是寫入陣列的物理設(shè)備的連續(xù)塊的數(shù)目杏节,一般情況下是4k的整數(shù)倍,RAID5要求是2的冪(2 4 8 16...)
stripes
條帶大小,條帶是吧數(shù)據(jù)分割分布到每個盤上典阵,
我先創(chuàng)建的是一個RAID0的陣列奋渔,根據(jù)文檔,RAID0后續(xù)可以整形后轉(zhuǎn)換成RAID4/5/6
我的磁盤
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb 8:16 0 3.7T 0 disk
sdc 8:32 0 232.9G 0 disk
├─sdc1 8:33 0 300M 0 part /boot/efi
├─sdc2 8:34 0 128M 0 part
├─sdc3 8:35 0 80G 0 part
└─sdc4 8:36 0 152.5G 0 part /
sdd 8:48 0 1.8T 0 disk
└─md0 9:0 0 1.8T 0 raid1 /xxxxxxx
sde 8:64 0 1.8T 0 disk
└─md0 9:0 0 1.8T 0 raid1 /xxxxxxxx
sdf 8:80 1 3.7T 0 disk
nvme0n1 259:0 0 13.4G 0 disk
└─nvme0n1p1 259:3 0 13.4G 0 part
nvme1n1 259:1 0 238.5G 0 disk
└─nvme1n1p1 259:2 0 238.5G 0 part /xxxxxxxxx
RAID1盤已經(jīng)創(chuàng)建完畢壮啊,我需要創(chuàng)建一個RAID0盤
sudo mdadm -C /dev/md1 -l raid0 -n 2 /dev/sd[bf]
查看已經(jīng)創(chuàng)建的RAID0盤
~$ sudo mdadm -D /dev/md1
/dev/md1:
Version : 1.2
Creation Time : Tue Mar 10 15:27:26 2020
Raid Level : raid0
Array Size : 7813772288 (7451.79 GiB 8001.30 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Tue Mar 10 15:27:26 2020
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Chunk Size : 512K
Consistency Policy : none
Name :XXXX1 (local to host XXXX)
UUID : 2d8362db:722fd746:98ca9334:eb8f7026
Events : 0
Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
1 8 80 1 active sync /dev/sdf
創(chuàng)建bcache緩存
bcache創(chuàng)建幫助文檔:
https://evilpiepirate.org/git/linux-bcache.git/tree/Documentation/bcache.txt
bcache設(shè)備分兩種類型(cache device和backing device)嫉鲸,cache類型設(shè)備是作為緩存的,而backing類型設(shè)備則是被緩存的歹啼。
創(chuàng)建后需要cache<->backing
端設(shè)備組合在一起才能緩存玄渗。
#不一定需要同時創(chuàng)建cache和backing,可以分開創(chuàng)建狸眼,
sudo make-bcache -C /dev/nvme0n1p1 -B /dev/md1 -w 4096 --writeback --cache_replacement_policy=lru
-C是cache設(shè)備藤树,-B是backing設(shè)備
-w是指定block size,這里指定的是4096
--writeback 是啟用回寫策略
--cache_replacement_policy=lru 使用lru算法(可選是fifo或者lru)
如果創(chuàng)建成功,使用bcache-super-show
可以查看前后端的設(shè)備
#查看cache設(shè)備
~ $ bcache-super-show /dev/nvme0n1p1
sb.magic ok
sb.first_sector 8 [match]
sb.csum 50A68D5F35040EDC [match]
sb.version 3 [cache device]
dev.label (empty)
dev.uuid 3895b9bf-4ff3-404c-bdc9-8938c5cd8194
dev.sectors_per_block 8
dev.sectors_per_bucket 1024
dev.cache.first_sector 1024
dev.cache.cache_sectors 28127232
dev.cache.total_sectors 28128256
dev.cache.ordered yes
dev.cache.discard no
dev.cache.pos 0
dev.cache.replacement 0 [lru]
cset.uuid 5ad1168d-c33f-4881-abaf-aaf9dbf3232d
#查看backing設(shè)備拓萌,這里是我的R0盤
~ #bcache-super-show /dev/md1
sb.magic ok
sb.first_sector 8 [match]
sb.csum 4B2E8615DA62EE44 [match]
sb.version 1 [backing device]
dev.label (empty)
dev.uuid 12e7dd1e-b9d8-4026-b102-dc9dc74e40b8
dev.sectors_per_block 8
dev.sectors_per_bucket 1024
dev.data.first_sector 16
dev.data.cache_mode 1 [writeback]
dev.data.cache_state 1 [clean]
cset.uuid 5ad1168d-c33f-4881-abaf-aaf9dbf3232d
如果cache backing設(shè)備已經(jīng)注冊(開機以來只需要注冊一次)岁钓,dmesg查看內(nèi)核日志,可以看到類似于一下的信息,它會提示cache或者bdev設(shè)備注冊了屡限。
...
[1377202.762288] bcache: register_cache() registered cache device nvme0n1p1
[1377342.036444] bcache: register_bdev() registered backing device md1
如果它沒有注冊品嚣,可以把塊設(shè)備的路徑回顯到/sys/fs/bcache/register
echo /dev/md1 > /sys/fs/bcache/register
echo /dev/nvme0n1p1 > /sys/fs/bcache/register
再次dmesg
查看,或者在/sys/fs/bcache/<UUID>
生成緩存集的目錄钧大,
這里的UUID對應(yīng)的是cache設(shè)備的cset.uuid
翰撑,例如我的是
/sys/fs/bcache/5ad1168d-c33f-4881-abaf-aaf9dbf3232d
注冊backing設(shè)備后,會創(chuàng)建/dev/bcacheN
這樣的塊設(shè)備拓型,
把cache設(shè)備的cset.uuid回顯到attach即可把cache關(guān)聯(lián)到bcacheN對應(yīng)的backing設(shè)備额嘿。
echo 5ad1168d-c33f-4881-abaf-aaf9dbf3232d > /sys/block/bcache0/bcache/attach
再dmesg
可以看到以下日志
[1377485.824106] bcache: bch_cached_dev_attach() Caching md1 as bcache0 on set 5ad1168d-c33f-4881-abaf-aaf9dbf3232d
說明現(xiàn)在cache<->backing
已經(jīng)正確關(guān)聯(lián)了瘸恼,緩存集生效劣挫。默認(rèn)bcache不會緩存順序?qū)懀鼤z測128個隊列东帅,如果寫入大小超過閥值的順序?qū)懭胙构蹋蜁@開緩存直接寫backing設(shè)備,這樣緩存內(nèi)并不能獲得比較好的順序?qū)懭胄阅芸勘铡P枰獏⒖嘉臋n對bcache的策略進行調(diào)整帐我,而且每次重啟后需要重新設(shè)置(或者寫個腳本讓它自己設(shè)置)
bcache消除
對于緩存盤掉盤,或者別的原因不想再使用bcache愧膀,把bcache擦除掉的操作:
- bcache的后端設(shè)備拦键,前8192字節(jié)內(nèi)容為bcache的頭信息,后端設(shè)備文件系統(tǒng)起始位置的偏移量就是8192字節(jié)檩淋,也就是16個扇區(qū)
- 如果直接格式化成gpt分區(qū)表芬为,至少從2048扇區(qū)開始的,這并不符合我們的需求蟀悦,格式化分區(qū)行不通
使用losetup映射媚朦,再確認(rèn)ext4的頭有沒有在偏移量為8192的位置,例如sdd為bcache的后端設(shè)備日戈,假設(shè)映射到/dev/loop0
sudo losetup -o 8192 -f /dev/sdd
sudo tune2fs -l /dev/loop0
如果能識別到文件系統(tǒng)询张,說明是對的,嘗試下掛載到/media/xxoo
sudo mount -t ext4 -o rw,defaults,noatime,offset=8192 /dev/sdd /media/xxoo
如果能順利掛載浙炼,正常份氧,此時我們不需要bcache的頭部了,我們要把8192字節(jié)的數(shù)據(jù)擦除
#停止bcache
sudo su
echo 1 > /sys/block/bcache0/bcache/stop
#先備份后端設(shè)備的前8192字節(jié)的數(shù)據(jù)
dd if=/dev/sdd of=./bcache.bak bs=8192 count=1 iflag=nocache
# 擦除物理盤上的數(shù)據(jù)
dd if=/dev/zero of=/dev/sdd bs=8192 count=1 oflag=sync
sync
sync
sync
文件系統(tǒng)
文件系統(tǒng)確定nas上的文件如何組織儲存弯屈,我使用linux下最常用的ext4文件系統(tǒng)作為nas的數(shù)據(jù)儲存的文件系統(tǒng)
文件系統(tǒng)的管理也包括
-
創(chuàng)建
使用mkfs.ext4
進行創(chuàng)建ext4文件系統(tǒng)半火,因為文件系統(tǒng)所屬我設(shè)置成了特定的用戶(也就是xx用戶對文件系統(tǒng)擁有較高的權(quán)限) -
檢查
如果出現(xiàn)文件系統(tǒng)損傷,需要用到fsck.ext4
進行檢查季俩。 -
調(diào)整
根據(jù)陣列容量的大小钮糖,還可以對文件系統(tǒng)的大小進行調(diào)整,使用resize2fs
ext4
#格式化ext4文件系統(tǒng)
用法:mkfs.ext4 [-c|-l 文件名] [-b 塊大小] [-C 簇大小]
[-i 每inode的字節(jié)數(shù)] [-I inode大小] [-J 日志選項]
[-G 彈性組大小] [-N inode數(shù)] [-d 根目錄]
[-m 保留塊所占百分比] [-o 創(chuàng)始系統(tǒng)名]
[-g 每組的塊數(shù)] [-L 卷標(biāo)] [-M 上一次掛載點]
[-O 特性[,...]] [-r 文件系統(tǒng)版本] [-E 擴展選項[,...]]
[-t 文件系統(tǒng)類型] [-T 用法類型] [-U UUID] [-e 錯誤行為][-z 撤銷文件]
[-jnqvDFKSV] 設(shè)備 [塊數(shù)]
#檢查文件系統(tǒng)錯誤
fsck.ext4 [-panyrcdfktvDFV] [-b 超級塊] [-B 塊大小]
[-l|-L 壞塊文件] [-C fd] [-j 外部日志]
[-E 擴展選項] [-z 撤銷文件] 設(shè)備
#調(diào)整文件系統(tǒng)大小
resize2fs [-d 調(diào)試標(biāo)志] [-f] [-F] [-M] [-P] [-p] 設(shè)備 [-b|-s|新大小] [-z 撤銷文件]
然后我要對被緩存的媒體盤進行格式化ext4分區(qū)
mkfs.ext4 -b 4096 -E stride=512k -E stripe_width=1024k /dev/bcache0
這里涉及到兩個參數(shù)
1.stride 要設(shè)置成RAID中的chunk_size
2.stripe_width設(shè)置成chunk_size * N 其中N是陣列中數(shù)據(jù)硬盤的數(shù)量(不包括校檢盤,這里我是2塊組RAID0店归,也就是2)512K * 2 =1024K
stripe相關(guān)的參數(shù)會對條帶類型的RAID讀寫性能產(chǎn)生影響阎抒,RAID0/5等,這里參考mkfs.ext4的manpage里的說明配置消痛。
文件管理
文件管理包括對已備份的文件進行且叁,查找,去重秩伞,備份等等逞带,其中涉及到以下命令
文件查找:find
文件查重:fdupes
文件備份:rsync
基于命令行圖形化的文件管理器:mc
文件服務(wù)
作為一臺nas,重點是網(wǎng)絡(luò)儲存服務(wù)纱新,應(yīng)該包含一些常規(guī)的文件共享協(xié)議展氓,例如smb
、ftp
脸爱、sftp
遇汞、以及提供一個web UI的文件分享的功能,我利用以下軟件滿足需求簿废,對應(yīng)的包名如下
# ftp: vsftp
# sftp:openssh-sftp-server
# smb: samba
# nfs:nfs-kernel-server
我們可以通過docker來快速部署一些比較有趣的服務(wù)空入,例如文件服務(wù)相關(guān)的,例如私人的網(wǎng)盤族檬,例如有道云歪赢、sftp,也可以用來部署各種奇奇怪怪的服務(wù)单料,docker的好處在于方便埋凯、干凈、快速看尼、一定程度上的隔離递鹉。
docker的安裝:中文文檔
docker存在一些比較優(yōu)秀的項目,只需要稍微配置就可以使用藏斩,非常方便躏结, 例如jellyfin,使得NAS兼職家里的媒體服務(wù)器
如果不使用鏡像加速狰域,拉起鏡像的時候回比較慢媳拴,所以安裝后需要設(shè)置下國內(nèi)的鏡像加速,修改docker鏡像加速的源兆览,文件位于/etc/docker/daemon.json
{
"registry-mirrors": ["https://registry.docker-cn.com","https://docker.mirrors.ustc.edu.cn"]
}
例如拉取filebrowser
的鏡像
sudo docker pull filebrowser/filebrowser
docker hub 上有大量的鏡像屈溉,以及可以查看容器啟動的配置說明,我們需要通過docker hub上去查詢別人打包好的鏡像的用法抬探,才能順利去啟動容器子巾。
請不要在公網(wǎng)上開放filebrowser的端口,請勿在公網(wǎng)未備案開方web服務(wù)帆赢,
被掃到可能會封寬帶
,貌似能打開網(wǎng)頁的都算线梗,近年來對于web打擊越來越嚴(yán)重椰于,避免被誤傷,公網(wǎng)訪問nas的方案可以采用sftp仪搔,需要注意的是瘾婿,公網(wǎng)上不要使用默認(rèn)的ssh或者是ftp的端口,如果密碼強度不夠烤咧,被人家經(jīng)常掃也是很困擾呢偏陪。
下載
同時作為一個nas,它也要具備下載的功能煮嫌,可以通過transmission
實現(xiàn)笛谦,但是目前大部分的資源只能通過[P]t來下載,所使用到的客戶端就包括tr(transmission)
tr
是包括2個部分的立膛,一部分是服務(wù)端揪罕,一部分是客戶端梯码,tr服務(wù)端擁有web接口宝泵,提供一個WebUI供管理。
安裝tr服務(wù)端
sudo aptitude install transmission-daemon
它其實分很多個包
transmission-daemon是服務(wù)相關(guān)的包轩娶,transmission-common包括了webUI所需要的網(wǎng)頁文件等(daemon包依賴common包儿奶,裝daemon包會安裝上common包)
TR的漢化和增強
如果只需要一個網(wǎng)頁管理頁面,就不需要額外裝別的軟件包了鳄抒,但是需要做一下webUI的漢化闯捎,以及一些功能上的增強,先放上該軟件的github地址(TWC)
https://github.com/ronggang/transmission-web-control/blob/master/README.md
可以理解為它給tr的webUI換個皮许溅,但是實際上功能還是tr本身瓤鼻,它并不是TR的 替代品,他只是TR的webUI增強以及漢化贤重。
安裝幫助:
https://github.com/ronggang/transmission-web-control/wiki/Linux-Installation-CN
更新完TWC后茬祷,需要對TR進行一些個人的配置讓TR更適合自己的使用習(xí)慣
TR的配置
默認(rèn)的TR配置目錄位于/etc/transmission-daemon/
,我并不想使用root用戶或者tr默認(rèn)的用戶啟動服務(wù)并蝗,所以在配置文件方面進行改動
1.把服務(wù)以xxx用戶啟動
2.把tr的配置目錄放在該用戶的~/.config/transmission-daemon 文件夾下
3.改動TR的日志級別為debug
debian10使用systemd作為init
程序祭犯,TR的systemd啟動配置文件位于/usr/lib/systemd/system/transmission-daemon.service
,它大概長這樣的滚停。默認(rèn)它使用debian-transmission
用戶啟動沃粗,我改成xxx
用戶,如圖键畴。而且需要針對性更改一些選項
- 1.默認(rèn)的tr配置文件只監(jiān)聽
127.0.0.1
最盅,這里通過修改settings.json
修改。 - 2.默認(rèn)是沒有用戶認(rèn)證的,我使用
-t
選項開啟用戶認(rèn)證涡贱,如下 - 3.修改了日志級別為debug
--log-debug
選項挂签,輸出的日志更詳細(xì) - 4.使用了
-g
選項指定配置文件夾為/home/xxx/.config/transmission-daemon
,
更新:不修改service文件,在
/etc/default/ transmission-daemon
下盼产,可以通過修改OPTIONS
和CONFIG_DIR
也行饵婆,效果是一樣的。但是如果需要使得特定用戶的權(quán)限啟動tr戏售,則需要設(shè)定service的User
字段
[Unit]
Description=Transmission BitTorrent Daemon
After=network.target
[Service]
#User=debian-transmission
User=xxx
Group=xxx
Type=notify
ExecStart=/usr/bin/transmission-daemon -f -t --log-debug -g /home/xxx/.config/transmission-daemon
ExecStop=/bin/kill -s STOP $MAINPID
ExecReload=/bin/kill -s HUP $MAINPID
[Install]
WantedBy=multi-user.target
注意侨核,修改完畢后,使用
sudo systemctl daemon-reload
命令重新載入服務(wù)配置灌灾。然后使用sudo systemc tl restart transmission-daemon
重啟服務(wù)后生效
TR的服務(wù)端配置文件在transmission-deamon/settings.json
搓译,我需要在/etc/transmission-daemon
下復(fù)制一份到~/.config/transmission-daemon
下進行調(diào)整修改。
#創(chuàng)建新的tr配置文件目錄
mkdir ~/.config/transmission-daemon
#復(fù)制原來的配置文件到新的配置目錄
cp /etc/transmission-daemon.json ~/.config/transmission-daemon
關(guān)于settings.json
锋喜,我需要一份較為詳細(xì)的幫助手冊些己,我在TR的項目中找到設(shè)置幫助文檔
settings.json
它大概長醬紫的,下面小節(jié)根據(jù)文檔的分類做一些配置上的解釋嘿般,但是請注意段标,settings.json所有的條目,都在同一級!!!
{
"alt-speed-down": 300000,
"alt-speed-enabled": false,
......(中間省略很多)
"blocklist-enabled": false,
"blocklist-url": "http://www.example.com/blocklist",
"cache-size-mb": 512,
"dht-enabled": true
}
配置文件大體分成以下幾個部分炉奴,不是所有東西都需要通過改動配置文件來設(shè)置逼庞,大部分其實默認(rèn)就可以了,通過查閱手冊再根據(jù)其他情況去調(diào)優(yōu)瞻赶。
1.Bandwidth(帶寬設(shè)置)
這部分包括tr的限速設(shè)置(上行赛糟,下行限速),例如speed-limit-up-enabled
是使用上傳限速砸逊,同時它對應(yīng)有個speed-limit-up
璧南,關(guān)于網(wǎng)速限制的,先不用管师逸,后期可以在webUI的設(shè)置里直接設(shè)置司倚。
2.blocklist(黑名單)
這部分的也可以不用管,畢竟沒用上禁止別人連自己的
3.Files and Locations(文件和路徑)
這部分是個配置的重點字旭,他是針對下載存放的目錄進行設(shè)置对湃,TR允許你臨時下載目錄和下載完成后的存放目錄分開放,TR也可以監(jiān)視特定的目錄中是否有.torrent文件遗淳,自動添加任務(wù)(醬紫你只要把種子下到這目錄它就自己開始下載了)拍柒,大概有以下選項
重要的三個目錄
download-dir
: 下載的默認(rèn)目錄
incomplete-dir
: 臨時下載的目錄(啟用后,未完成下載的任務(wù)在此文件夾屈暗,下載完畢后移動到dowload-dir設(shè)定的文件夾
)(需要啟用incomplete-dir-enabled
)
watch-dir
: 監(jiān)視種子的目錄(如果把.torrent文件扔到這個目錄拆讯,它會自動監(jiān)視新文件脂男,并且把該種子添加下載,需要啟用watch-dir-enabled
)
rename-partial-files
: 讓還沒下載完整的文件添加.part后綴(這個我一般都啟用了种呐,方便看到底哪些是還沒下完的)
start-added-torrents
: 添加種子后自動開始任務(wù)宰翅,這個默認(rèn)就是開啟的
trash-original-torrent-files
: 這個選項是針對watch配置的,如果啟用的話爽室,添加到watch文件夾的種子會被自動刪除汁讼,我一般是啟用的。
這類選項主要針對是否自動添加種子以及下載的默認(rèn)目錄的相關(guān)配置
#json配置事例阔墩,啟用臨時下載目錄嘿架,讓TR監(jiān)控種子
#tr下載完成后存放的目錄~/download/complete
#tr未下載完成的存放目錄~/download/incomplete
#tr監(jiān)視種子的目錄~/download/watch
{
....
"download-dir": "~/download/complete"
"incomplete-dir":"~/download/incomplete"
"incomplete-dir-enabled":true,
"watch-dir":"~/download/watch",
"watch-dir-enabled":true,
"rename-partial-files":true,
"trash-original-torrent-files":true,
.....
}
4.Misc(這個能算其他設(shè)置么?2333)
5.Peers 和 Peer Port
這個小節(jié)的內(nèi)容也可以在webUI里再設(shè)置,啟動前可以保持默認(rèn)
tr有2
個重要的端口啸箫,一個是webUI(以及rpc)共用的9091
端口耸彪,主要用于對tr的管理
還有一個端口用于p2p用戶之間連接的peer端口,默認(rèn)是51413
忘苛,主要用于上傳
數(shù)據(jù)蝉娜,這個端口是需要被外部主機訪問到的(公網(wǎng)或者是大內(nèi)網(wǎng),公網(wǎng)共容易被訪問到)扎唾,設(shè)置該端口后召川,要在路由器上設(shè)置端口映射(或者路由器上開啟uPnP服務(wù)進行動態(tài)映射),把該端口暴露出去
{
"peer-port":51413, //peer連接的端口
"port-forwarding-enabled":true, //如果路由器開啟了uPnP服務(wù)稽屏,則設(shè)置為true扮宠,如果直接設(shè)置靜態(tài)的端口映射西乖,則設(shè)置為false
}
tr除了使用靜態(tài)的peer端口狐榔,也可以讓peer端口在某個端口范圍內(nèi)隨機選擇一個(應(yīng)該是防止部分yunyingshang封殺P2p),有三個相關(guān)設(shè)置選項
{
peer-port-random-high: 65535, //隨機端口最高只能是65535
peer-port-random-low: 1024, //隨機端口最低從1024開始
peer-port-random-on-start: true //啟用隨機端口
}
如果啟用了隨機端口获雕,應(yīng)該把這些范圍的端口映射出去薄腻,或者是路由開啟uPnP服務(wù)。
{
"bind-address-ipv4":"0.0.0.0", //peers監(jiān)聽的ip届案,也就是別人可以從哪個網(wǎng)卡連接叫你庵楷,默認(rèn)是全部,這個是針對ipv4的設(shè)置楣颠,以下是ipv6尽纽,都可以保持默認(rèn)
"bind-address-ipv6":"::",
}
6.Queuing(下載隊列相關(guān)設(shè)置)
這個小節(jié)也可以在webUI里再設(shè)置,主要是針對下載上傳隊列大小的設(shè)置童漩,這個小節(jié)的設(shè)置會影響下載上傳的連接性弄贿,建議在webUI里設(shè)置
7.RPC(遠(yuǎn)程調(diào)用,提供個web接口矫膨,這個很重要)
{
"rpc-authentication-required":true, //用戶認(rèn)證差凹,這個需要開啟期奔,對應(yīng)的rpc-username和rpc-password是用戶名和密碼
"rpc-username":"xxoo", //用戶名xxoo
"rpc-password":"xxooxxoo", //需要修改新密碼的時候,直接填入密碼危尿,例如xxooxxoo呐萌,重新啟動服務(wù)后,密碼會被加密
"rpc-bind-address":"0.0.0.0", //監(jiān)聽的地址谊娇,0.0.0.0代表監(jiān)聽所有所有網(wǎng)卡
"rpc-port":9091, //rpc監(jiān)聽的端口肺孤,也是我們webUI訪問的端口
"rpc-url":" /transmission/", //rpc請求的網(wǎng)址路由,保留默認(rèn)就行了
"rpc-enabled":true, //啟用rpc济欢,這個是需要開啟的
"rpc-host-whitelist":"localhost", //rpc主機地址的白名單渠旁,我們需要把對應(yīng)的rpc-host-whitelist-enabled關(guān)了,不啟用白名單
"rpc-host-whitelist-enabled":false, //關(guān)閉rpc主機白名單
"rpc-whitelist":"127.0.0.*,192.168.1.* " //rpc的IP地址白名單船逮,指定那些主機或者網(wǎng)段的人才能訪問tr,如果不需要指定顾腊,請把rpc-whitelist-enabled設(shè)置為false,多個主機或者網(wǎng)段設(shè)置用,隔開
"rpc-whitelist-enabled":true //默認(rèn)是啟用IP地址白名單的,如果不是在rpc-whitelist內(nèi)的ip或者網(wǎng)段訪問tr是被攔截的
}
8.Scheduling(分享相關(guān)配置挖胃,例如達(dá)到多少分享率就停止分享)
這個小節(jié)的內(nèi)容可以保持默認(rèn)杂靶,在管理界面的設(shè)置里設(shè)置更加容易。
未完成...··