This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| nas_on_debian [2017/08/12 12:49] – herwarth | nas_on_debian [2017/08/15 18:08] (current) – herwarth | ||
|---|---|---|---|
| Line 105: | Line 105: | ||
| pam-auth-update | pam-auth-update | ||
| </ | </ | ||
| + | ====Systemd network-wait-online.service==== | ||
| + | Because of the LACP link the network is not available when I startup the server. It takes some time before everything is running. Samba wants to connect to LDAP and it fails when LDAP is not reachable. So this is a wait service. | ||
| + | <code - / | ||
| + | # | ||
| + | # Uses ' | ||
| + | # | ||
| + | |||
| + | [Unit] | ||
| + | Description=Wait for Network to be Online | ||
| + | Documentation=man: | ||
| + | Conflicts=shutdown.target | ||
| + | After=network.target | ||
| + | Before=network-online.target | ||
| + | |||
| + | [Service] | ||
| + | Type=oneshot | ||
| + | ExecStart=/ | ||
| + | TimeoutStartSec=1min 30s | ||
| + | |||
| + | [Install] | ||
| + | WantedBy=network-online.target | ||
| + | |||
| + | systemctl daemon-reload | ||
| + | systemctl enable network-wait-online | ||
| + | </ | ||
| + | systemctl daemon-reload | ||
| + | systemctl enable network-wait-online | ||
| + | ====Tuning==== | ||
| + | ===Swappiness=== | ||
| + | <code - / | ||
| + | vm.swappiness=1 | ||
| + | </ | ||
| + | ===SSD kernel scheduler=== | ||
| + | <code - / | ||
| + | # set deadline scheduler for non-rotating disks | ||
| + | ACTION==" | ||
| + | </ | ||
| + | ====S.M.A.R.T monitoring==== | ||
| + | apt install smartmontools | ||
| + | |||
| + | TODO: monitoring config with smartd and cron | ||
| + | ====Python and PIP==== | ||
| + | |||
| + | update-alternatives --list python | ||
| + | update-alternatives: | ||
| + | |||
| + | update-alternatives --install / | ||
| + | update-alternatives: | ||
| + | |||
| + | update-alternatives --install / | ||
| + | update-alternatives: | ||
| + | |||
| + | apt install python3-pip python-pip | ||
| + | Now we can switch using the update-alternatives --config python. Remember pip for python 3 is pip3. pip is for python 2.7 | ||
| + | |||
| + | =====Bcache===== | ||
| + | Gather which disks are HDD and which are SDD.In my case: | ||
| + | - sda: SSD (256GB) | ||
| + | - sdb: HDD (4TB) | ||
| + | - sdc: HDD (4TB) | ||
| + | - sdd: SSD (120GB root disk) | ||
| + | - sde: SSD (256GB) | ||
| + | - sdf: HDD (4TB) | ||
| + | - sdg: HDD (4TB) | ||
| + | ====Create Linux RAID==== | ||
| + | I am going to create a RAID-1 mirror MD on the SSDs so I can enable writeback caching. | ||
| + | mdadm --create /dev/md0 --assume-clean --level=1 --raid-devices=2 /dev/sda /dev/sde | ||
| + | I am going to create a RAID-10 MD on the HDDs. | ||
| + | mdadm --create /dev/md1 --level=10 --raid-devices=4 /dev/sdb /dev/sdf /dev/sdc /dev/sdg | ||
| + | When rebooting the system md0 and 1 became md126 and md127. Also after rebooting the MD devices became read-only and pending sync. To enable de devices read-write: | ||
| + | mdadm --readwrite /dev/md126 | ||
| + | mdadm --readwrite /dev/md127 | ||
| + | ====Bcache configuration==== | ||
| + | apt install bcache-tools | ||
| + | In my case after a reboot /dev/md127 was the RAID-1 SSD mirror and /dev/md126 the RAID-10 HDD. | ||
| + | make-bcache --discard --writeback -C /dev/md127 | ||
| + | make-bcache -B /dev/md126 | ||
| + | We want to use UUIDs to avoid possible strange bootup behavior. | ||
| + | bcache-super-show /dev/md127 | grep cset.uuid | ||
| + | cset.uuid f8d82c5e-a9a2-4b99-a2b0-15feab250372 | ||
| + | Attach the SSD cache to the bcache0 device | ||
| + | echo f8d82c5e-a9a2-4b99-a2b0-15feab250372 > / | ||
| + | Enable writeback cache | ||
| + | echo writeback > / | ||
| + | Show the status | ||
| + | cat / | ||
| + | cat / | ||
| + | ====Bcache helpful commands==== | ||
| + | ===Enable writeback cache=== | ||
| + | echo writeback > / | ||
| + | ===Show the status=== | ||
| + | cat / | ||
| + | cat / | ||
| + | ===Remove cache from bcache0=== | ||
| + | < | ||
| + | ls -l / | ||
| + | total 0 | ||
| + | drwxr-xr-x 7 root root 0 Aug 12 21:28 af7bbe93-7bb8-4789-b879-a033c1331223 | ||
| + | --w------- 1 root root 4096 Aug 12 21:25 register | ||
| + | --w------- 1 root root 4096 Aug 12 21:25 register_quiet | ||
| + | </ | ||
| + | echo af7bbe93-7bb8-4789-b879-a033c1331223 > / | ||
| + | Wait for the cache status to become no cache. When attached the cache is dirty | ||
| + | watch -n 10 cat / | ||
| + | ===Remove bcache0 device=== | ||
| + | echo 1 > / | ||
| + | echo 1 > / | ||
| + | echo 1 > / | ||
| + | |||
| + | =====Samba===== | ||
| + | apt install samba | ||
| + | <code - / | ||
| + | [global] | ||
| + | realm = * | ||
| + | workgroup = HELUX | ||
| + | local master = No | ||
| + | ldap admin dn = cn=manager, | ||
| + | ldap group suffix = ou=Group | ||
| + | ldap idmap suffix = ou=Idmap | ||
| + | ldap machine suffix = ou=Computer | ||
| + | ldap passwd sync = yes | ||
| + | ldap suffix = dc=helux, | ||
| + | ldap user suffix = ou=People | ||
| + | load printers = No | ||
| + | printcap name = cups | ||
| + | max xmit = 32768 | ||
| + | min receivefile size = 2048 | ||
| + | server min protocol = NT1 | ||
| + | passdb backend = ldapsam: | ||
| + | security = USER | ||
| + | server role = standalone server | ||
| + | deadtime = 15 | ||
| + | socket options = IPTOS_LOWDELAY SO_RCVBUF=131072 SO_SNDBUF=131072 TCP_NODELAY | ||
| + | winbind enum groups = Yes | ||
| + | winbind enum users = Yes | ||
| + | ldapsam: | ||
| + | ldapsam: | ||
| + | idmap config * : backend = tdb | ||
| + | admin users = root | ||
| + | create mask = 0640 | ||
| + | directory mask = 0750 | ||
| + | aio read size = 2048 | ||
| + | aio write size = 2048 | ||
| + | use sendfile = Yes | ||
| + | write cache size = 1024000 | ||
| + | |||
| + | |||
| + | [home] | ||
| + | path = /home/%U | ||
| + | read only = No | ||
| + | valid users = %U | ||
| + | |||
| + | |||
| + | [share] | ||
| + | path = / | ||
| + | force create mode = 0644 | ||
| + | force directory mode = 0755 | ||
| + | read only = No | ||
| + | valid users = %U | ||
| + | </ | ||
| + | smbpaswd -W | ||
| + | Enter the LDAP manager password | ||
| + | ===mDNS=== | ||
| + | apt install avahi-daemon avahi-utils | ||
| + | <code - / | ||
| + | <?xml version=" | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | Avahi daemon should start after samba | ||
| + | cp / | ||
| + | <code - / | ||
| + | [Unit] | ||
| + | . | ||
| + | . | ||
| + | Description=Avahi mDNS/DNS-SD Stack | ||
| + | Requires=avahi-daemon.socket | ||
| + | After=smbd.service | ||
| + | . | ||
| + | . | ||
| + | </ | ||
| + | systemctl daemon-reload | ||
| + | systemctl enable avahi-daemon | ||
| + | =====Docker===== | ||
| + | Add the Docker CE repo and install from there | ||
| + | apt install apt-transport-https ca-certificates curl gnupg2 software-properties-common | ||
| + | |||
| + | curl -fsSL https:// | ||
| + | |||
| + | add-apt-repository "deb [arch=amd64] https:// | ||
| + | |||
| + | apt install docker-ce | ||
| + | For Kolla | ||
| + | mkdir -p / | ||
| + | < | ||
| + | tee / | ||
| + | [Service] | ||
| + | MountFlags=shared | ||
| + | EOF | ||
| + | </ | ||
| + | systemctl daemon-reload | ||
| + | |||
| + | systemctl restart docker | ||
| + | |||
| + | echo configfs >/ | ||
| + | systemctl status sys-kernel-config.mount | ||
| {{tag> | {{tag> | ||